diff --git a/actions/bind b/actions/bind index 7f0977f50..b1a4703b9 100755 --- a/actions/bind +++ b/actions/bind @@ -39,14 +39,14 @@ def subcommand_setup(arguments): Path(ZONES_DIR).mkdir(exist_ok=True, parents=True) - action_utils.service_restart('bind9') + action_utils.service_restart('named') def subcommand_configure(arguments): """Configure BIND.""" set_forwarders(arguments.forwarders) set_dnssec(arguments.dnssec) - action_utils.service_restart('bind9') + action_utils.service_restart('named') def main(): diff --git a/actions/letsencrypt b/actions/letsencrypt index 6edf4d4f4..9dec15b97 100755 --- a/actions/letsencrypt +++ b/actions/letsencrypt @@ -8,6 +8,7 @@ import argparse import filecmp import glob import importlib +import inspect import json import os import pathlib @@ -18,8 +19,11 @@ import sys import configobj -from plinth import action_utils, cfg +from plinth import action_utils +from plinth import app as app_module +from plinth import cfg from plinth.modules import letsencrypt as le +from plinth.modules.letsencrypt.components import LetsEncrypt TEST_MODE = False LE_DIRECTORY = '/etc/letsencrypt/' @@ -372,6 +376,14 @@ def _assert_source_directory(path): or str(path).startswith(ETC_SSL_DIRECTORY)) +def _get_managed_path(path): + """Return the managed path given a certificate path.""" + if '{domain}' in path: + return pathlib.Path(path.partition('{domain}')[0]) + + return pathlib.Path(path).parent + + def _assert_managed_path(module, path): """Check that path is in fact managed by module.""" cfg.read() @@ -379,7 +391,24 @@ def _assert_managed_path(module, path): module_path = module_file.read_text().strip() module = importlib.import_module(module_path) - assert set(path.parents).intersection(set(module.managed_paths)) + module_classes = inspect.getmembers(module, inspect.isclass) + app_classes = [ + cls[1] for cls in module_classes if issubclass(cls[1], app_module.App) + ] + + managed_paths = [] + for cls in app_classes: + app = cls() + components = app.get_components_of_type(LetsEncrypt) + for component in components: + if component.private_key_path: + managed_paths.append( + _get_managed_path(component.private_key_path)) + if component.certificate_path: + managed_paths.append( + _get_managed_path(component.certificate_path)) + + assert set(path.parents).intersection(set(managed_paths)) def subcommand_run_pre_hooks(_): diff --git a/actions/packages b/actions/packages index 24517a3cd..996450141 100755 --- a/actions/packages +++ b/actions/packages @@ -5,6 +5,7 @@ Wrapper to handle package installation with apt-get. """ import argparse +import inspect import json import logging import os @@ -17,9 +18,11 @@ import apt.cache import apt_inst import apt_pkg +from plinth import app as app_module from plinth import cfg from plinth.action_utils import (apt_hold_freedombox, is_package_manager_busy, run_apt_command) +from plinth.package import Packages logger = logging.getLogger(__name__) @@ -119,8 +122,19 @@ def _assert_managed_packages(module, packages): module_path = file_handle.read().strip() module = import_module(module_path) + module_classes = inspect.getmembers(module, inspect.isclass) + app_classes = [ + cls[1] for cls in module_classes if issubclass(cls[1], app_module.App) + ] + managed_packages = [] + for cls in app_classes: + app = cls() + components = app.get_components_of_type(Packages) + for component in components: + managed_packages += component.packages + for package in packages: - assert package in module.managed_packages + assert package in managed_packages def subcommand_is_package_manager_busy(_): diff --git a/actions/service b/actions/service index a9ea57ac9..2da7c4d3b 100755 --- a/actions/service +++ b/actions/service @@ -5,12 +5,12 @@ Wrapper to list and handle system services """ import argparse -import json import os -import subprocess -from importlib import import_module -from plinth import action_utils, cfg +from plinth import action_utils +from plinth import app as app_module +from plinth import cfg, module_loader +from plinth.daemon import Daemon, RelatedDaemon cfg.read() module_config_path = os.path.join(cfg.config_dir, 'modules-enabled') @@ -39,8 +39,6 @@ def parse_arguments(): add_service_action(subparsers, 'mask', 'unmask a service') add_service_action(subparsers, 'unmask', 'unmask a service') - subparsers.add_parser('list', help='List of running system services') - subparsers.required = True return parser.parse_args() @@ -89,64 +87,21 @@ def subcommand_is_running(arguments): print(action_utils.service_is_running(arguments.service)) -def subcommand_list(_): - """Get list of plinth-managed services with their status. - - Status may be either running or not. - - """ - managed_services = _get_managed_services() - services = dict.fromkeys(managed_services, {'running': False}) - - output = subprocess.check_output(['systemctl', 'list-units']) - for line in output.decode().strip().split('\n'): - if line.startswith('UNIT'): - continue - # Stop parsing on empty line after the service list - if not len(line): - break - - try: - unit, load, active, sub = line.split()[:4] - except ValueError: - continue - suffix = '.service' - if unit.endswith(suffix): - name = unit[:-len(suffix)] - if name in services: - services[name] = {'running': (sub == 'running')} - - print(json.dumps(services)) - - -def _get_managed_services_of_module(modulepath): - """Import a module and return content of its 'managed_services' variable""" - try: - module = import_module(modulepath) - except ImportError: - return [] - else: - return getattr(module, 'managed_services', []) - - def _get_managed_services(): - """ - Get a set of all services managed by FreedomBox. - - This collects all service-names inside the 'managed_services' variable of - modules inside 'module_config_path' - """ + """Get a set of all services managed by FreedomBox.""" services = set() - for filename in os.listdir(module_config_path): - # Omit hidden files - if filename.startswith('.'): - continue + module_loader.load_modules() + app_module.apps_init() + for app in app_module.App.list(): + components = app.get_components_of_type(Daemon) + for component in components: + services.add(component.unit) + if component.alias: + services.add(component.alias) - filepath = os.path.join(module_config_path, filename) - if os.path.isfile(filepath): - with open(filepath, 'r') as f: - modulepath = f.read().strip() - services.update(_get_managed_services_of_module(modulepath)) + components = app.get_components_of_type(RelatedDaemon) + for component in components: + services.add(component.unit) return services diff --git a/actions/shadowsocks b/actions/shadowsocks index 61a98bfd5..d5bd93bfe 100755 --- a/actions/shadowsocks +++ b/actions/shadowsocks @@ -14,7 +14,7 @@ import sys from shutil import move from plinth import action_utils -from plinth.modules import shadowsocks +from plinth.modules.shadowsocks import ShadowsocksApp SHADOWSOCKS_CONFIG_SYMLINK = '/etc/shadowsocks-libev/freedombox.json' SHADOWSOCKS_CONFIG_ACTUAL = \ @@ -76,8 +76,8 @@ def subcommand_setup(_): if not wrong_state_dir.is_symlink() and wrong_state_dir.is_dir(): wrong_state_dir.rmdir() - if action_utils.service_is_enabled(shadowsocks.managed_services[0]): - action_utils.service_restart(shadowsocks.managed_services[0]) + if action_utils.service_is_enabled(ShadowsocksApp.DAEMON): + action_utils.service_restart(ShadowsocksApp.DAEMON) def subcommand_get_config(_): @@ -110,8 +110,8 @@ def subcommand_merge_config(_): # Don't try_restart because initial configuration may not be valid so # shadowsocks will not be running even when enabled. - if action_utils.service_is_enabled(shadowsocks.managed_services[0]): - action_utils.service_restart(shadowsocks.managed_services[0]) + if action_utils.service_is_enabled(ShadowsocksApp.DAEMON): + action_utils.service_restart(ShadowsocksApp.DAEMON) def main(): diff --git a/debian/changelog b/debian/changelog index 15d1dcc23..2825e11a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,69 @@ +freedombox (21.15) unstable; urgency=medium + + [ trendspotter ] + * Translated using Weblate (Czech) + + [ James Valleroy ] + * shaarli: Enable app + * tests: Add 'domain' mark for apps that add/remove domains + * locale: Update translation strings + * doc: Fetch latest manual + + [ Petter Reinholdtsen ] + * Translated using Weblate (Norwegian Bokmål) + + [ Sunil Mohan Adapa ] + * dynamicdns: Update URLs to the new dynamic DNS server + * firewall: Allow configuration upgrade to version 1.0.x + * *: Drop unused manual_page at module level + * app: Introduce API to setup an app + * package: Add parameter to specify skipping package recommendations + * package: Implement installing packages in the component + * actions: Get list of packages from Packages components + * security: Get the list of packages from Packages component + * *: Drop use of managed_packages and rely on Packages component + * doc/dev: Update documentation to not refer to managed_packages + * actions/service: Drop unused list action + * bind: Drop alias handling unnecessary in >= Bullseye + * security: Drop use of managed_services in security report + * daemon: Add new component to hold information about related daemons + * actions/service: Drop use of managed_services for Daemon component + * *: Drop use of managed_services, rely on Daemon component + * doc/dev: Remove mention of managed_services + * actions/letsencrypt: Drop use of managed_paths and use LE component + * *: Drop use of unnecessary managed_paths + * doc/dev: Drop discussion on managed_paths + * package: Introduce component API for package conflicts + * *: Drop module level package_conflicts and use component API + * packages: Move checking for unavailable packages to component + * app: Introduce API for managing setup state of the app + * doc/dev: Remove outdated reference to init() at module level + * *: Use the App's state management API + * setup: Drop unused API for app's state management + * *: Drop use of module level is_essential flag + * *: Drop use of module level version + * middleware, views: Reduce use of setup_helper + * web_server: Drop use of loaded_modules and use App.list + * first_boot: Drop use of loaded_modules and use App.list + * security: Drop use of loaded_modules and use App.list + * main: List apps instead of modules + * setup: Run setup on apps instead of modules + * setup: List dependencies for apps instead of modules + * setup: Use apps instead of modules to determine running first setup + * setup: Work on apps instead of modules for force upgrade + * module_loader, app: Move app init to app module + * *: Drop module level depends declaration + * doc/dev: Drop reference to module level depends declaration + * forms: Fix regression with TLS domain form in quassel and tt-rss + * email_server: Simplify domain configuration form + * email_server: Merge domain configuration with app view + * letsencrypt: On domain removal, don't revoke certificate, keep it + + [ Johannes Keyser ] + * Translated using Weblate (German) + + -- James Valleroy Mon, 06 Dec 2021 18:51:28 -0500 + freedombox (21.14.1~bpo11+1) bullseye-backports; urgency=medium * Rebuild for bullseye-backports. diff --git a/debian/tests/control b/debian/tests/control index 0b696e5b1..7af979174 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -7,7 +7,7 @@ # - Ability to create and initialize database # - Module inititailzation for essential modules # -Test-Command: plinth --list-modules 2> /dev/null +Test-Command: plinth --list-apps 2> /dev/null Restrictions: needs-root # diff --git a/doc/dev/reference/app_module.rst b/doc/dev/reference/app_module.rst deleted file mode 100644 index 001567aaf..000000000 --- a/doc/dev/reference/app_module.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. SPDX-License-Identifier: CC-BY-SA-4.0 - -App Module ----------- - -These methods are optionally provided by the module in which an app is -implemented and FreedomBox calls/uses them if they are present. - -.depends -^^^^^^^^^^^^^^^^^^^^ - -Optional. This module property must contain a list of all apps that this -application depends on. The application is specified as string which is the -final part of the full module load path. For example, ``names``. Dependencies -are part of the :class:`~plinth.app.Info` component. Need for this attribute at -the module level will be removed in the future. - - -.is_essential -^^^^^^^^^^^^^^^^^^^^^^^^^ - -Optional. If an app must be installed and configured by FreedomBox without user -intervention, this attribute must be set to True. This attribute is part of the -:class:`~plinth.app.Info` component. Need for this attribute at the module level -will be removed in the future. - -.version -^^^^^^^^^^^^^^^^^^^^ - -Required. Version number of an app. Increasing the version number of an app -triggers the setup() logic allowing the app to run upgrade scripts. This -attribute is part of the :class:`~plinth.app.Info` component. Need for this -attribute at the module level will be removed in the future. - -.managed_packages -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Optional. This must contain the list of all packages that this app deals with. -This is mostly needed to enforce better security. This information may be moved -to a separate component in the future. - -.managed_services -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Optional. This must contain the list of all services that this app deals with. -This is mostly needed to enforce better security. This information is part of -the :class:`~plinth.daemon.Daemon` component. Need for this attribute at the -module level will be removed in the future. - -.managed_paths -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Optional. This must contain the list of all file system paths that this app -deals with. This is mostly used by the -:class:`~plinth.modules.letsencrypt.components.LetsEncrypt` component to enforce -better security. This requirement may be removed in the future. diff --git a/doc/dev/reference/index.rst b/doc/dev/reference/index.rst index bf40769aa..b96ab585a 100644 --- a/doc/dev/reference/index.rst +++ b/doc/dev/reference/index.rst @@ -14,7 +14,6 @@ and are updated when the API is updated. app components/index - app_module actions action_utils views diff --git a/doc/dev/tutorial/components.rst b/doc/dev/tutorial/components.rst index 9b2d801a1..9ba1b25a9 100644 --- a/doc/dev/tutorial/components.rst +++ b/doc/dev/tutorial/components.rst @@ -92,15 +92,13 @@ our app's class. from plinth.daemon import Daemon - managed_services = ['transmission-daemon'] - class TransmissionApp(app_module.App): ... def __init__(self): ... - daemon = Daemon('daemon-transmission', managed_services[0], + daemon = Daemon('daemon-transmission', 'transmission-daemon', listen_ports=[(9091, 'tcp4')]) self.add(daemon) @@ -126,7 +124,6 @@ Debian packages to be installed. from plinth.package import Packages - managed_packages = ['transmission-daemon'] class TransmissionApp(app_module.App): ... @@ -134,7 +131,7 @@ Debian packages to be installed. def __init__(self): ... - packages = Packages('packages-transmission', managed_packages) + packages = Packages('packages-transmission', ['transmission-daemon']) self.add(packages) The first argument uniquely identifies this instance of the `Packages` diff --git a/doc/dev/tutorial/setup.rst b/doc/dev/tutorial/setup.rst index a7fddc0ac..63b82c9ca 100644 --- a/doc/dev/tutorial/setup.rst +++ b/doc/dev/tutorial/setup.rst @@ -16,11 +16,9 @@ installation: .. code-block:: python3 :caption: ``__init__.py`` - managed_packages = ['transmission-daemon'] - def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) new_configuration = { 'rpc-whitelist-enabled': False, diff --git a/doc/dev/tutorial/skeleton.rst b/doc/dev/tutorial/skeleton.rst index 5669df0d8..156d68dcd 100644 --- a/doc/dev/tutorial/skeleton.rst +++ b/doc/dev/tutorial/skeleton.rst @@ -88,20 +88,4 @@ class later. super().__init__() As soon as FreedomBox Service (Plinth) starts, it will load all the enabled -modules. After this, it gives a chance to each of the modules to initialize -itself by calling the ``init()`` method if there is such a method available as -``.init()``. The app class must be instantiated here. - -.. code-block:: python3 - :caption: ``__init__.py`` - - app = None - - def init(): - """Initialize the Transmission module.""" - global app - app = TransmissionApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) +modules and create app instances for App classes in the module. diff --git a/doc/manual/en/DynamicDNS.raw.wiki b/doc/manual/en/DynamicDNS.raw.wiki index f476c0909..496c694c9 100644 --- a/doc/manual/en/DynamicDNS.raw.wiki +++ b/doc/manual/en/DynamicDNS.raw.wiki @@ -26,11 +26,11 @@ On the other hand, the GnuDIP protocol will only transport a salted MD5 value of === Using the GnuDIP protocol === - 1. Register an account with any Dynamic DNS service provider. A free service provided by the !FreedomBox community is available at https://gnudip.datasystems24.net . + 1. Register an account with any Dynamic DNS service provider. A free service provided by the !FreedomBox community is available at https://ddns.freedombox.org . 1. In !FreedomBox UI, enable the Dynamic DNS Service. - 1. Select ''GnuDIP'' as ''Service type'', enter your Dynamic DNS service provider address (for example, gnudip.datasystems24.net) into ''GnuDIP Server Address'' field. + 1. Select ''GnuDIP'' as ''Service type'', enter your Dynamic DNS service provider address (for example, ddns.freedombox.org) into ''GnuDIP Server Address'' field. {{attachment:DynamicDNS-Settings.png|Dynamic DNS Settings|width=800}} @@ -62,7 +62,7 @@ This feature is implemented because the most popular Dynamic DNS providers are u === Recap: How to create a DNS name with GnuDIP === /* to delete or to replace the old text */ - 1. Access to [[https://gnudip.datasystems24.net|GnuIP login page]] (answer Yes to all pop ups) + 1. Access to [[https://ddns.freedombox.org|GnuIP login page]] (answer Yes to all pop ups) 1. Click on "Self Register" 1. Fill the registration form (Username and domain will form the public IP address [username.domain]) 1. Take note of the username/hostname and password that will be used on the !FreedomBox app. @@ -72,11 +72,11 @@ This feature is implemented because the most popular Dynamic DNS providers are u 1. Click on "Set Up" in the top menu. 1. Activate Dynamic DNS 1. Choose GnuDIP service. - 1. Add server address (gnudip.datasystems24.net) + 1. Add server address (ddns.freedombox.org) 1. Add your fresh domain name (username.domain, ie [username].freedombox.rocks) 1. Add your fresh username (the one used in your new IP address) and password 1. Add your GnuDIP password - 1. Fill the option with http://myip.datasystems24.de (try this url in your browser, you will figure out immediately) + 1. Fill the option with https://ddns.freedombox.org/ip/ (try this url in your browser, you will figure out immediately) ## END_INCLUDE diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki index 3b70912da..b8256d6c1 100644 --- a/doc/manual/en/ReleaseNotes.raw.wiki +++ b/doc/manual/en/ReleaseNotes.raw.wiki @@ -10,6 +10,66 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 21.15 (2021-12-06) == + +=== Highlights === + + * dynamicdns: Update URLs to the new dynamic DNS server + * firewall: Allow configuration upgrade to version 1.0.x + * shaarli: Enable app (only available in testing and unstable) + +=== Other Changes === + + * *: Drop module level depends declaration + * *: Drop module level package_conflicts and use component API + * *: Drop unused manual_page at module level + * *: Drop use of managed_packages and rely on Packages component + * *: Drop use of managed_services, rely on Daemon component + * *: Drop use of module level is_essential flag + * *: Drop use of module level version + * *: Drop use of unnecessary managed_paths + * *: Use the App's state management API + * actions/letsencrypt: Drop use of managed_paths and use LE component + * actions/service: Drop unused list action + * actions/service: Drop use of managed_services for Daemon component + * actions: Get list of packages from Packages components + * app: Introduce API for managing setup state of the app + * app: Introduce API to setup an app + * bind: Drop alias handling unnecessary in >= Bullseye + * daemon: Add new component to hold information about related daemons + * doc/dev: Drop discussion on managed_paths + * doc/dev: Drop reference to module level depends declaration + * doc/dev: Remove mention of managed_services + * doc/dev: Remove outdated reference to init() at module level + * doc/dev: Update documentation to not refer to managed_packages + * email_server: Merge domain configuration with app view + * email_server: Simplify domain configuration form + * first_boot: Drop use of loaded_modules and use App.list + * forms: Fix regression with TLS domain form in quassel and tt-rss + * letsencrypt: On domain removal, don't revoke certificate, keep it + * locale: Update translations for Czech, German, Norwegian Bokmål + * main: List apps instead of modules + * middleware, views: Reduce use of setup_helper + * module_loader, app: Move app init to app module + * package: Add parameter to specify skipping package recommendations + * package: Implement installing packages in the component + * package: Introduce component API for package conflicts + * packages: Move checking for unavailable packages to component + * security: Drop use of loaded_modules and use App.list + * security: Drop use of managed_services in security report + * security: Get the list of packages from Packages component + * setup: Drop unused API for app's state management + * setup: List dependencies for apps instead of modules + * setup: Run setup on apps instead of modules + * setup: Use apps instead of modules to determine running first setup + * setup: Work on apps instead of modules for force upgrade + * tests: Add 'domain' mark for apps that add/remove domains + * web_server: Drop use of loaded_modules and use App.list + +== FreedomBox 21.14.1 (2021-11-24) == + + * config: Add packages component to a re-add zram-tools dependency + == FreedomBox 21.14 (2021-11-22) == === Highlights === diff --git a/doc/manual/en/images/DynamicDNS-Settings.png b/doc/manual/en/images/DynamicDNS-Settings.png index 5083ae1c1..68f2b34bb 100644 Binary files a/doc/manual/en/images/DynamicDNS-Settings.png and b/doc/manual/en/images/DynamicDNS-Settings.png differ diff --git a/doc/manual/es/DynamicDNS.raw.wiki b/doc/manual/es/DynamicDNS.raw.wiki index 8359b65b8..72a762f50 100644 --- a/doc/manual/es/DynamicDNS.raw.wiki +++ b/doc/manual/es/DynamicDNS.raw.wiki @@ -26,11 +26,11 @@ Por otra parte el protocolo GnuDIP solo transportará un valor MD5 salpimentado === Emplear el protocolo GnuDIP === - 1. Registra una cuenta en cualquier proveedor de servicio de DNS Dinamico. Hay un servicio gratuito provisto por la comunidad !FreedomBox disponible en https://gnudip.datasystems24.net . + 1. Registra una cuenta en cualquier proveedor de servicio de DNS Dinamico. Hay un servicio gratuito provisto por la comunidad !FreedomBox disponible en https://ddns.freedombox.org . 1. Habilita el Servicio de DNS Dinamico en el interfaz de usuario de !FreedomBox. - 1. Selecciona ''GnuDIP'' como ''tipo de servicio'', introduce la dirección de tu proveedor de servicio de DNS Dinamico (por ejemplo, gnudip.datasystems24.net) en el campo ''Dirección del servidor GnuDIP''. + 1. Selecciona ''GnuDIP'' como ''tipo de servicio'', introduce la dirección de tu proveedor de servicio de DNS Dinamico (por ejemplo, ddns.freedombox.org) en el campo ''Dirección del servidor GnuDIP''. {{attachment:DynamicDNS-Settings.png|Dynamic DNS Settings|width=800}} @@ -62,7 +62,7 @@ Se implementa esta funcionalidad porque los proveedores de servicio de DNS Dinam === Recap: How to create a DNS name with GnuDIP === /* to delete or to replace the old text */ - 1. Access to [[https://gnudip.datasystems24.net|GnuIP login page]] (answer Yes to all pop ups) + 1. Access to [[https://ddns.freedombox.org|GnuIP login page]] (answer Yes to all pop ups) 1. Click on "Self Register" 1. Fill the registration form (Username and domain will form the public IP address [username.domain]) 1. Take note of the username/hostname and password that will be used on the !FreedomBox app. @@ -72,11 +72,11 @@ Se implementa esta funcionalidad porque los proveedores de servicio de DNS Dinam 1. Click on "Set Up" in the top menu. 1. Activate Dynamic DNS 1. Choose GnuDIP service. - 1. Add server address (gnudip.datasystems24.net) + 1. Add server address (ddns.freedombox.org) 1. Add your fresh domain name (username.domain, ie [username].freedombox.rocks) 1. Add your fresh username (the one used in your new IP address) and password 1. Add your GnuDIP password - 1. Fill the option with http://myip.datasystems24.de (try this url in your browser, you will figure out immediately) + 1. Fill the option with https://ddns.freedombox.org/ip/ (try this url in your browser, you will figure out immediately) ## END_INCLUDE diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki index 3b70912da..b8256d6c1 100644 --- a/doc/manual/es/ReleaseNotes.raw.wiki +++ b/doc/manual/es/ReleaseNotes.raw.wiki @@ -10,6 +10,66 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 21.15 (2021-12-06) == + +=== Highlights === + + * dynamicdns: Update URLs to the new dynamic DNS server + * firewall: Allow configuration upgrade to version 1.0.x + * shaarli: Enable app (only available in testing and unstable) + +=== Other Changes === + + * *: Drop module level depends declaration + * *: Drop module level package_conflicts and use component API + * *: Drop unused manual_page at module level + * *: Drop use of managed_packages and rely on Packages component + * *: Drop use of managed_services, rely on Daemon component + * *: Drop use of module level is_essential flag + * *: Drop use of module level version + * *: Drop use of unnecessary managed_paths + * *: Use the App's state management API + * actions/letsencrypt: Drop use of managed_paths and use LE component + * actions/service: Drop unused list action + * actions/service: Drop use of managed_services for Daemon component + * actions: Get list of packages from Packages components + * app: Introduce API for managing setup state of the app + * app: Introduce API to setup an app + * bind: Drop alias handling unnecessary in >= Bullseye + * daemon: Add new component to hold information about related daemons + * doc/dev: Drop discussion on managed_paths + * doc/dev: Drop reference to module level depends declaration + * doc/dev: Remove mention of managed_services + * doc/dev: Remove outdated reference to init() at module level + * doc/dev: Update documentation to not refer to managed_packages + * email_server: Merge domain configuration with app view + * email_server: Simplify domain configuration form + * first_boot: Drop use of loaded_modules and use App.list + * forms: Fix regression with TLS domain form in quassel and tt-rss + * letsencrypt: On domain removal, don't revoke certificate, keep it + * locale: Update translations for Czech, German, Norwegian Bokmål + * main: List apps instead of modules + * middleware, views: Reduce use of setup_helper + * module_loader, app: Move app init to app module + * package: Add parameter to specify skipping package recommendations + * package: Implement installing packages in the component + * package: Introduce component API for package conflicts + * packages: Move checking for unavailable packages to component + * security: Drop use of loaded_modules and use App.list + * security: Drop use of managed_services in security report + * security: Get the list of packages from Packages component + * setup: Drop unused API for app's state management + * setup: List dependencies for apps instead of modules + * setup: Run setup on apps instead of modules + * setup: Use apps instead of modules to determine running first setup + * setup: Work on apps instead of modules for force upgrade + * tests: Add 'domain' mark for apps that add/remove domains + * web_server: Drop use of loaded_modules and use App.list + +== FreedomBox 21.14.1 (2021-11-24) == + + * config: Add packages component to a re-add zram-tools dependency + == FreedomBox 21.14 (2021-11-22) == === Highlights === diff --git a/doc/manual/es/images/DynamicDNS-Settings.png b/doc/manual/es/images/DynamicDNS-Settings.png index 5083ae1c1..bbf0cb2df 100644 Binary files a/doc/manual/es/images/DynamicDNS-Settings.png and b/doc/manual/es/images/DynamicDNS-Settings.png differ diff --git a/plinth/__init__.py b/plinth/__init__.py index 433d08a00..fa4556f3d 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -3,4 +3,4 @@ Package init file. """ -__version__ = '21.14.1' +__version__ = '21.15' diff --git a/plinth/__main__.py b/plinth/__main__.py index 500250a59..12f898879 100644 --- a/plinth/__main__.py +++ b/plinth/__main__.py @@ -5,8 +5,10 @@ import argparse import logging import sys -from . import (__version__, cfg, frontpage, glib, log, menu, module_loader, - setup, utils, web_framework, web_server) +from . import __version__ +from . import app as app_module +from . import (cfg, frontpage, glib, log, menu, module_loader, setup, utils, + web_framework, web_server) if utils.is_axes_old(): import axes @@ -29,37 +31,36 @@ def parse_arguments(): '--develop', action='store_true', default=None, help=('run Plinth *insecurely* from current folder; ' 'enable auto-reloading and debugging options')) - parser.add_argument( - '--setup', default=False, nargs='*', - help='run setup tasks on all essential modules and exit') + parser.add_argument('--setup', default=False, nargs='*', + help='run setup tasks on all essential apps and exit') parser.add_argument( '--setup-no-install', default=False, nargs='*', help='run setup tasks without installing packages and exit') parser.add_argument('--list-dependencies', default=False, nargs='*', help='list package dependencies for essential modules') - parser.add_argument('--list-modules', default=False, nargs='*', - help='list modules') + parser.add_argument('--list-apps', default=False, nargs='*', + help='list apps') return parser.parse_args() -def run_setup_and_exit(module_list, allow_install=True): - """Run setup on all essential modules and exit.""" +def run_setup_and_exit(app_ids, allow_install=True): + """Run setup on all essential apps and exit.""" error_code = 0 try: - setup.run_setup_on_modules(module_list, allow_install) + setup.run_setup_on_apps(app_ids, allow_install) except Exception: error_code = 1 sys.exit(error_code) -def list_dependencies(module_list): - """List dependencies for all essential modules and exit.""" +def list_dependencies(app_ids): + """List dependencies for all essential apps and exit.""" error_code = 0 try: - if module_list: - setup.list_dependencies(module_list=module_list) + if app_ids: + setup.list_dependencies(app_ids=app_ids) else: setup.list_dependencies(essential=True) except Exception as exception: @@ -69,15 +70,18 @@ def list_dependencies(module_list): sys.exit(error_code) -def list_modules(modules_type): - """List all/essential/optional modules and exit.""" - for module_name, module in module_loader.loaded_modules.items(): - module_is_essential = getattr(module, 'is_essential', False) - if 'essential' in modules_type and not module_is_essential: +def list_apps(apps_type): + """List all/essential/optional apps and exit.""" + for app in app_module.App.list(): + is_essential = app.info.is_essential + if 'essential' in apps_type and not is_essential: continue - elif 'optional' in modules_type and module_is_essential: + + if 'optional' in apps_type and is_essential: continue - print('{module_name}'.format(module_name=module_name)) + + print(f'{app.app_id}') + sys.exit() @@ -109,9 +113,15 @@ def main(): if arguments.list_dependencies is not False: log.default_level = 'ERROR' module_loader.load_modules() - module_loader.apps_init() + app_module.apps_init() list_dependencies(arguments.list_dependencies) + if arguments.list_apps is not False: + log.default_level = 'ERROR' + module_loader.load_modules() + app_module.apps_init() + list_apps(arguments.list_apps) + log.init() web_framework.init() @@ -127,8 +137,8 @@ def main(): menu.init() module_loader.load_modules() - module_loader.apps_init() - module_loader.apps_post_init() + app_module.apps_init() + app_module.apps_post_init() frontpage.add_custom_shortcuts() if arguments.setup is not False: @@ -137,9 +147,6 @@ def main(): if arguments.setup_no_install is not False: run_setup_and_exit(arguments.setup_no_install, allow_install=False) - if arguments.list_modules is not False: - list_modules(arguments.list_modules) - setup.run_setup_in_background() glib.run() diff --git a/plinth/app.py b/plinth/app.py index b93853b1e..a1c8e4247 100644 --- a/plinth/app.py +++ b/plinth/app.py @@ -4,9 +4,18 @@ Base class for all Freedombox applications. """ import collections +import enum +import inspect +import logging +import sys + +from plinth import cfg +from plinth.signals import post_app_loading from . import clients as clients_module +logger = logging.getLogger(__name__) + class App: """Implement common functionality for an app. @@ -40,6 +49,12 @@ class App: _all_apps = collections.OrderedDict() + class SetupState(enum.Enum): + """Various states of app being setup.""" + NEEDS_SETUP = 'needs-setup' + NEEDS_UPDATE = 'needs-update' + UP_TO_DATE = 'up-to-date' + def __init__(self): """Build the app by adding components. @@ -113,6 +128,56 @@ class App: """ return self.get_component(self.app_id + '-info') + def setup(self, old_version): + """Install and configure the app and its components.""" + for component in self.components.values(): + component.setup(old_version=old_version) + + def get_setup_state(self) -> SetupState: + """Return whether the app is not setup or needs upgrade.""" + current_version = self.get_setup_version() + if current_version and self.info.version <= current_version: + return self.SetupState.UP_TO_DATE + + # If an app needs installing/updating but no setup method is available, + # then automatically set version. + # + # Minor violation of 'get' only discipline for convenience. + module = sys.modules[self.__module__] + if not hasattr(module, 'setup'): + self.set_setup_version(self.info.version) + return self.SetupState.UP_TO_DATE + + if not current_version: + return self.SetupState.NEEDS_SETUP + + return self.SetupState.NEEDS_UPDATE + + def get_setup_version(self) -> int: + """Return the setup version of the app.""" + # XXX: Optimize version gets + from . import models + + try: + app_entry = models.Module.objects.get(pk=self.app_id) + return app_entry.setup_version + except models.Module.DoesNotExist: + return 0 + + def needs_setup(self) -> bool: + """Return whether the app needs to be setup. + + A simple shortcut for get_setup_state() == NEEDS_SETUP + """ + return self.get_setup_state() == self.SetupState.NEEDS_SETUP + + def set_setup_version(self, version: int) -> None: + """Set the app's setup version.""" + from . import models + + models.Module.objects.update_or_create( + pk=self.app_id, defaults={'setup_version': version}) + def enable(self): """Enable all the components of the app.""" for component in self.components.values(): @@ -221,6 +286,9 @@ class Component: """ return App.get(self.app_id) + def setup(self, old_version): + """Run operations to install and configure the component.""" + def enable(self): """Run operations to enable the component.""" @@ -393,3 +461,98 @@ class Info(FollowerComponent): self.donation_url = donation_url if clients: clients_module.validate(clients) + + +def apps_init(): + """Create apps by constructing them with components.""" + from . import module_loader # noqa # Avoid circular import + for module_name, module in module_loader.loaded_modules.items(): + _initialize_module(module_name, module) + + _sort_apps() + + logger.info('Initialized apps - %s', ', '.join( + (app.app_id for app in App.list()))) + + +def _sort_apps(): + """Sort apps list according to their essential/dependency order.""" + apps = App._all_apps + ordered_modules = [] + remaining_apps = dict(apps) # Make a copy + # Place all essential modules ahead of others in module load order + sorted_apps = sorted( + apps, key=lambda app_id: not App.get(app_id).info.is_essential) + for app_id in sorted_apps: + if app_id not in remaining_apps: + continue + + app = remaining_apps.pop(app_id) + try: + _insert_apps(app_id, app, remaining_apps, ordered_modules) + except KeyError: + logger.error('Unsatified dependency for app - %s', app_id) + + new_all_apps = collections.OrderedDict() + for app_id in ordered_modules: + new_all_apps[app_id] = apps[app_id] + + App._all_apps = new_all_apps + + +def _insert_apps(app_id, app, remaining_apps, ordered_apps): + """Insert apps into a list based on dependency order.""" + if app_id in ordered_apps: + return + + for dependency in app.info.depends: + if dependency in ordered_apps: + continue + + try: + app = remaining_apps.pop(dependency) + except KeyError: + logger.error('Not found or circular dependency - %s, %s', app_id, + dependency) + raise + + _insert_apps(dependency, app, remaining_apps, ordered_apps) + + ordered_apps.append(app_id) + + +def _initialize_module(module_name, module): + """Perform initialization on all apps in a module.""" + # Perform setup related initialization on the module + from . import setup # noqa # Avoid circular import + setup.init(module_name, module) + + try: + module_classes = inspect.getmembers(module, inspect.isclass) + app_classes = [ + cls for _, cls in module_classes if issubclass(cls, App) + ] + for app_class in app_classes: + module.app = app_class() + except Exception as exception: + logger.exception('Exception while running init for %s: %s', module, + exception) + if cfg.develop: + raise + + +def apps_post_init(): + """Run post initialization on each app.""" + for app in App.list(): + try: + app.post_init() + if not app.needs_setup() and app.is_enabled(): + app.set_enabled(True) + except Exception as exception: + logger.exception('Exception while running post init for %s: %s', + app.app_id, exception) + if cfg.develop: + raise + + logger.debug('App initialization completed.') + post_app_loading.send_robust(sender="app") diff --git a/plinth/daemon.py b/plinth/daemon.py index 08a03ca9a..5d1935e83 100644 --- a/plinth/daemon.py +++ b/plinth/daemon.py @@ -107,6 +107,33 @@ class Daemon(app.LeaderComponent): return [testname, result] +class RelatedDaemon(app.FollowerComponent): + """Component to hold information about additional systemd units handled. + + Unlike a daemon described by the Daemon component which is enabled/disabled + when the app is enabled/disabled, the daemon described by this component is + unaffected by the app's enabled/disabled status. The app only has an + indirect interest in this daemon. + + This component primarily holds information about such daemon and does + nothing else. This information is used to check if the app is allowed to + perform operations on the daemon. + """ + + def __init__(self, component_id, unit): + """Initialize a new related daemon component. + + 'component_id' must be a unique string across all apps and components + of a app. Conventionally starts with 'related-daemon-'. + + 'unit' must the name of systemd unit. + + """ + super().__init__(component_id) + + self.unit = unit + + def app_is_running(app_): """Return whether all the daemons in the app are running.""" for component in app_.components.values(): diff --git a/plinth/forms.py b/plinth/forms.py index c783b99b7..b2f207847 100644 --- a/plinth/forms.py +++ b/plinth/forms.py @@ -39,16 +39,16 @@ class DomainSelectionForm(forms.Form): 'changed later.'), choices=[]) +def _get_domain_choices(): + """Double domain entries for inclusion in the choice field.""" + from plinth.modules.names import get_available_tls_domains + return ((domain, domain) for domain in get_available_tls_domains()) + + class TLSDomainForm(forms.Form): """Form to select a TLS domain for an app.""" - - def get_domain_choices(): - """Double domain entries for inclusion in the choice field.""" - from plinth.modules.names import get_available_tls_domains - return ((domain, domain) for domain in get_available_tls_domains()) - domain = forms.ChoiceField( - choices=get_domain_choices(), + choices=_get_domain_choices, label=_('TLS domain'), help_text=_( 'Select a domain to use TLS with. If the list is empty, please ' diff --git a/plinth/locale/ar_SA/LC_MESSAGES/django.po b/plinth/locale/ar_SA/LC_MESSAGES/django.po index 8218f0855..228bf7610 100644 --- a/plinth/locale/ar_SA/LC_MESSAGES/django.po +++ b/plinth/locale/ar_SA/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2020-06-10 15:41+0000\n" "Last-Translator: aiman an \n" "Language-Team: Arabic (Saudi Arabia) calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1049,7 +1050,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1058,7 +1059,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1066,25 +1067,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1096,17 +1097,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1115,7 +1116,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1229,7 +1230,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1237,7 +1238,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1704,7 +1704,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1731,13 +1731,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1849,32 +1849,28 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Email Server" msgstr "خادم ويب" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1907,46 +1903,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1955,7 +1961,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1973,7 +1979,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -1998,43 +2004,28 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2042,7 +2033,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2149,7 +2140,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2160,21 +2151,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2286,31 +2277,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2535,7 +2526,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2543,31 +2534,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2604,14 +2595,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2620,15 +2611,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2705,11 +2696,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2717,11 +2708,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2740,17 +2731,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2759,7 +2750,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2769,7 +2760,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2777,15 +2768,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2886,7 +2877,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2896,14 +2887,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -2974,7 +2965,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2982,7 +2973,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2991,18 +2982,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3086,7 +3077,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3095,11 +3086,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3165,7 +3156,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3176,15 +3167,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3224,36 +3215,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3265,7 +3256,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3277,7 +3268,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3288,7 +3279,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3307,6 +3298,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3410,24 +3405,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3453,7 +3448,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3462,7 +3457,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3478,23 +3473,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3962,7 +3957,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -3975,7 +3970,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4416,7 +4411,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4505,7 +4500,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4516,20 +4511,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4593,7 +4588,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4602,33 +4597,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4637,15 +4632,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4779,33 +4774,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4858,14 +4853,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4875,20 +4870,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4899,7 +4894,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4919,7 +4914,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4929,19 +4924,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5008,7 +5003,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5016,7 +5011,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5025,7 +5020,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5035,17 +5030,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5054,31 +5049,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5156,11 +5151,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5186,27 +5181,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5361,32 +5356,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5395,17 +5390,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5434,7 +5429,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5534,14 +5529,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5549,14 +5544,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5746,7 +5741,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5754,7 +5749,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5795,7 +5790,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5803,7 +5798,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5811,143 +5806,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6022,7 +6017,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6030,7 +6025,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6042,20 +6037,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6063,7 +6058,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6071,11 +6066,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6110,7 +6105,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6119,40 +6114,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6278,54 +6273,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6333,12 +6332,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6346,7 +6345,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6542,14 +6541,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6557,15 +6556,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6791,18 +6790,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7096,7 +7095,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7105,7 +7104,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7114,26 +7113,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7147,7 +7146,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7160,7 +7159,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7168,11 +7167,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7206,23 +7205,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index 82ea56714..582e7e357 100644 --- a/plinth/locale/bg/LC_MESSAGES/django.po +++ b/plinth/locale/bg/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-10-19 15:13+0000\n" "Last-Translator: 109247019824 \n" "Language-Team: Bulgarian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1083,7 +1084,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1092,7 +1093,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1100,25 +1101,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1130,17 +1131,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1149,7 +1150,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1263,7 +1264,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1271,7 +1272,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1738,7 +1738,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1765,13 +1765,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1883,30 +1883,26 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "Пощенски сървър" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1939,46 +1935,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1987,7 +1993,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2005,7 +2011,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -2030,43 +2036,28 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2074,7 +2065,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2181,7 +2172,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2192,21 +2183,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2318,31 +2309,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Подаване на обратна връзка" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2569,7 +2560,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2577,31 +2568,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2638,14 +2629,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2654,15 +2645,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2739,11 +2730,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2751,11 +2742,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2774,17 +2765,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2793,7 +2784,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2803,7 +2794,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2811,15 +2802,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2920,7 +2911,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2930,14 +2921,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3008,7 +2999,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3016,7 +3007,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3025,18 +3016,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3118,7 +3109,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3127,11 +3118,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3197,7 +3188,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3208,15 +3199,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3256,36 +3247,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3297,7 +3288,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3309,7 +3300,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3320,7 +3311,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3339,6 +3330,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3442,24 +3437,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3485,7 +3480,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3494,7 +3489,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3510,23 +3505,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3994,7 +3989,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4007,7 +4002,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Сигурност" @@ -4448,7 +4443,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4537,7 +4532,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4548,20 +4543,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4625,7 +4620,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4634,33 +4629,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4669,15 +4664,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4811,33 +4806,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4890,14 +4885,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4907,20 +4902,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4931,7 +4926,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4951,7 +4946,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4961,19 +4956,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5040,7 +5035,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5048,7 +5043,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5057,7 +5052,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5067,17 +5062,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5086,31 +5081,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5188,11 +5183,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "Диск с OS на FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5218,27 +5213,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "Грешка при забраняване на споделянето: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5393,32 +5388,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5427,17 +5422,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5466,7 +5461,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5566,14 +5561,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5581,14 +5576,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5778,7 +5773,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5786,7 +5781,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5827,7 +5822,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5835,7 +5830,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5843,143 +5838,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6054,7 +6049,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6062,7 +6057,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6074,20 +6069,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6095,7 +6090,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6103,11 +6098,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6142,7 +6137,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6151,40 +6146,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6310,54 +6305,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Четец на абонаменти за новини" @@ -6365,14 +6364,14 @@ msgstr "Четец на абонаменти за новини" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Проверява и прилага последните издания на софтуера и обновявания на " "сигурността." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6380,7 +6379,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6576,14 +6575,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6591,15 +6590,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6825,18 +6824,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7130,7 +7129,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7139,7 +7138,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7148,26 +7147,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7181,7 +7180,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7194,7 +7193,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7202,11 +7201,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7240,23 +7239,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index feed4f1e1..94085ade9 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-06-16 07:33+0000\n" "Last-Translator: Oymate \n" "Language-Team: Bengali calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1048,7 +1049,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1057,7 +1058,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1065,25 +1066,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1095,17 +1096,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1114,7 +1115,7 @@ msgstr "" msgid "Configure" msgstr "কনফিগার" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1228,7 +1229,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1236,7 +1237,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1704,7 +1704,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "সম্পর্কে" @@ -1731,13 +1731,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ইজ্যাবার্ড" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1849,30 +1849,26 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1907,50 +1903,62 @@ msgstr "" msgid "Has a TLS certificate" msgstr "অনুমতিপত্র" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "ডোমেন" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Domain" +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Enabled" msgid "Aliases" msgstr "সক্রিয়" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "সক্রিয়" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1959,7 +1967,7 @@ msgid "Disabled" msgstr "নিষ্ক্রিয়" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1977,7 +1985,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Enabled" msgid "Manage Aliases" @@ -2008,47 +2016,32 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "ডোমেন" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Enabled" msgid "Manage Spam" msgstr "সক্রিয়" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service/Port" msgid "Service Alert" msgstr "সেবা/পোর্ট" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2056,7 +2049,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "ফায়ারওয়্যাল" @@ -2163,7 +2156,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2174,21 +2167,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2300,31 +2293,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "নির্দেশিকা" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2549,7 +2542,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2557,31 +2550,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2618,14 +2611,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2634,15 +2627,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ইকিউইকি" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2719,11 +2712,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2731,11 +2724,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "ইফিনোটেড" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2754,17 +2747,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2773,7 +2766,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2783,7 +2776,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2791,15 +2784,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "অনুমতিপত্র" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2900,7 +2893,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2910,14 +2903,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -2988,7 +2981,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2996,7 +2989,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3005,18 +2998,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3098,7 +3091,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3107,11 +3100,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "মাইনটেস্ট" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3177,7 +3170,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3188,15 +3181,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3236,36 +3229,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3277,7 +3270,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3289,7 +3282,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3300,7 +3293,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "মাঙ্কিস্ফিয়ার" @@ -3319,6 +3312,10 @@ msgstr "বাতিল" msgid "Service" msgstr "সেবা" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "ডোমেন" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3422,24 +3419,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3465,7 +3462,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3474,7 +3471,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3490,23 +3487,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3974,7 +3971,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -3987,7 +3984,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4428,7 +4425,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4517,7 +4514,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4528,20 +4525,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4605,7 +4602,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4614,33 +4611,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4649,15 +4646,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4791,33 +4788,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4870,14 +4867,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4887,20 +4884,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4911,7 +4908,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4931,7 +4928,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4941,19 +4938,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5020,7 +5017,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5028,7 +5025,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5037,7 +5034,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5047,17 +5044,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5066,31 +5063,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5170,11 +5167,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "ফ্রিডমবক্স" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5200,27 +5197,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5375,32 +5372,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5409,17 +5406,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5448,7 +5445,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5548,14 +5545,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5563,14 +5560,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5760,7 +5757,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5768,7 +5765,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5809,7 +5806,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5817,7 +5814,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5825,143 +5822,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6036,7 +6033,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6044,7 +6041,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6056,20 +6053,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6077,7 +6074,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6085,11 +6082,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6124,7 +6121,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6133,40 +6130,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6292,54 +6289,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6347,12 +6348,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6360,7 +6361,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6556,14 +6557,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6571,15 +6572,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6805,18 +6806,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7110,7 +7111,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7119,7 +7120,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7128,26 +7129,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7161,7 +7162,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7174,7 +7175,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7182,11 +7183,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7220,23 +7221,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index d97f20aa0..b363a77e7 100644 --- a/plinth/locale/cs/LC_MESSAGES/django.po +++ b/plinth/locale/cs/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" -"PO-Revision-Date: 2021-10-25 22:49+0000\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" +"PO-Revision-Date: 2021-11-27 22:05+0000\n" "Last-Translator: trendspotter \n" "Language-Team: Czech \n" @@ -17,13 +17,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.9-dev\n" +"X-Generator: Weblate 4.10-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "Zdrojový kód stránky" -#: plinth/context_processors.py:23 plinth/views.py:81 +#: plinth/context_processors.py:23 plinth/views.py:84 msgid "FreedomBox" msgstr "FreedomBox" @@ -32,22 +32,22 @@ msgstr "FreedomBox" msgid "Service {service_name} is running" msgstr "Služba {service_name} je spuštěná" -#: plinth/daemon.py:131 +#: plinth/daemon.py:158 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Spojení očekáváno na {kind} portu {listen_address}:{port}" -#: plinth/daemon.py:135 +#: plinth/daemon.py:162 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Spojení očekáváno na {kind} portu {port}" -#: plinth/daemon.py:203 +#: plinth/daemon.py:230 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Připojit k {host}:{port}" -#: plinth/daemon.py:205 +#: plinth/daemon.py:232 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Nedaří se připojit k {host}:{port}" @@ -75,6 +75,8 @@ msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." msgstr "" +"Vyberte doménu, se kterou chcete používat TLS. Pokud je seznam prázdný, " +"nakonfigurujte alespoň jednu doménu s certifikáty." #: plinth/forms.py:64 msgid "Language" @@ -88,31 +90,31 @@ msgstr "Jazyk pro toto webové rozhraní" msgid "Use the language preference set in the browser" msgstr "Použít upřednostňovaný jazyk nastavený ve webovém prohlížeči" -#: plinth/middleware.py:36 plinth/templates/setup.html:18 +#: plinth/middleware.py:38 plinth/templates/setup.html:18 msgid "Application installed." msgstr "Aplikace nainstalována." -#: plinth/middleware.py:41 +#: plinth/middleware.py:43 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "Chyba při instalaci aplikace: {string} {details}" -#: plinth/middleware.py:45 +#: plinth/middleware.py:47 #, python-brace-format msgid "Error installing application: {error}" msgstr "Chyba při instalaci aplikace: {error}" -#: plinth/modules/apache/__init__.py:42 +#: plinth/modules/apache/__init__.py:33 msgid "Apache HTTP Server" msgstr "Apache HTTP Server" -#: plinth/modules/apache/__init__.py:48 +#: plinth/modules/apache/__init__.py:41 #: plinth/modules/monkeysphere/templates/monkeysphere.html:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:46 msgid "Web Server" msgstr "Webový server" -#: plinth/modules/apache/__init__.py:54 +#: plinth/modules/apache/__init__.py:47 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "Webové rozhraní {box_name} (Plinth)" @@ -127,7 +129,7 @@ msgstr "Přístup na URL adrese {url} na tcp{kind}" msgid "Access URL {url}" msgstr "Přístup na URL adrese {url}" -#: plinth/modules/avahi/__init__.py:36 +#: plinth/modules/avahi/__init__.py:26 #, python-brace-format msgid "" "Service discovery allows other devices on the network to discover your " @@ -143,24 +145,24 @@ msgstr "" "nutné a funguje pouze na vnitřních sítích. Je možné ho vypnout a posílit tak " "zabezpečení, hlavně v případě připojení na hostilní místní síť." -#: plinth/modules/avahi/__init__.py:60 +#: plinth/modules/avahi/__init__.py:51 msgid "Service Discovery" msgstr "Zjišťování služby" -#: plinth/modules/avahi/__init__.py:73 +#: plinth/modules/avahi/__init__.py:64 msgid "Local Network Domain" msgstr "Doména místní sítě" -#: plinth/modules/backups/__init__.py:35 +#: plinth/modules/backups/__init__.py:27 msgid "Backups allows creating and managing backup archives." msgstr "Zálohy umožňují vytváření a správu zálohových archivů." -#: plinth/modules/backups/__init__.py:56 plinth/modules/backups/__init__.py:208 -#: plinth/modules/backups/__init__.py:253 +#: plinth/modules/backups/__init__.py:50 plinth/modules/backups/__init__.py:202 +#: plinth/modules/backups/__init__.py:247 msgid "Backups" msgstr "Zálohy" -#: plinth/modules/backups/__init__.py:205 +#: plinth/modules/backups/__init__.py:199 msgid "" "Enable an automatic backup schedule for data safety. Prefer an encrypted " "remote backup location or an extra attached disk." @@ -168,25 +170,27 @@ msgstr "" "Povolit automatický plán zálohování pro bezpečnost dat. Upřednostněte " "šifrované vzdálené umístění zálohování nebo další připojený disk." -#: plinth/modules/backups/__init__.py:211 +#: plinth/modules/backups/__init__.py:205 msgid "Enable a Backup Schedule" msgstr "Povolení plánu zálohování" -#: plinth/modules/backups/__init__.py:215 -#: plinth/modules/backups/__init__.py:262 -#: plinth/modules/storage/__init__.py:331 +#: plinth/modules/backups/__init__.py:209 +#: plinth/modules/backups/__init__.py:256 +#: plinth/modules/storage/__init__.py:329 #, python-brace-format msgid "Go to {app_name}" msgstr "Jít na {app_name}" -#: plinth/modules/backups/__init__.py:250 +#: plinth/modules/backups/__init__.py:244 #, python-brace-format msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " "succeed. The latest error is: {error_message}" msgstr "" +"Naplánované zálohování se nezdařilo. Minulé pokusy o zálohování s počtem " +"chyb {error_count} nebyly úspěšné. Poslední chyba je: {error_message}" -#: plinth/modules/backups/__init__.py:258 +#: plinth/modules/backups/__init__.py:252 msgid "Error During Backup" msgstr "Chyba při zálohování" @@ -748,7 +752,7 @@ msgstr "Odpojení se nezdařilo!" msgid "Mounting failed" msgstr "Připojení (mount) se nezdařilo" -#: plinth/modules/bepasty/__init__.py:25 +#: plinth/modules/bepasty/__init__.py:21 msgid "" "bepasty is a web application that allows large files to be uploaded and " "shared. Text and code snippets can also be pasted and shared. Text, image, " @@ -756,7 +760,7 @@ msgid "" "can be set to expire after a time period." msgstr "" -#: plinth/modules/bepasty/__init__.py:29 +#: plinth/modules/bepasty/__init__.py:25 msgid "" "bepasty does not use usernames for login. It only uses passwords. For each " "password, a set of permissions can be selected. Once you have created a " @@ -764,7 +768,7 @@ msgid "" "permissions." msgstr "" -#: plinth/modules/bepasty/__init__.py:33 +#: plinth/modules/bepasty/__init__.py:29 msgid "" "You can also create multiple passwords with the same set of privileges, and " "distribute them to different people or groups. This will allow you to later " @@ -772,43 +776,43 @@ msgid "" "the list." msgstr "" -#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +#: plinth/modules/bepasty/__init__.py:38 plinth/modules/bepasty/__init__.py:47 msgid "Read a file, if a web link to the file is available" msgstr "" -#: plinth/modules/bepasty/__init__.py:43 +#: plinth/modules/bepasty/__init__.py:39 #, fuzzy #| msgid "Restore from uploaded file" msgid "Create or upload files" msgstr "Obnovit z nahraného souboru" -#: plinth/modules/bepasty/__init__.py:44 +#: plinth/modules/bepasty/__init__.py:40 msgid "List all files and their web links" msgstr "" -#: plinth/modules/bepasty/__init__.py:45 +#: plinth/modules/bepasty/__init__.py:41 #, fuzzy #| msgid "Delete User" msgid "Delete files" msgstr "Smazat uživatele" -#: plinth/modules/bepasty/__init__.py:46 +#: plinth/modules/bepasty/__init__.py:42 msgid "Administer files: lock/unlock files" msgstr "" -#: plinth/modules/bepasty/__init__.py:50 +#: plinth/modules/bepasty/__init__.py:46 msgid "None, password is always required" msgstr "" -#: plinth/modules/bepasty/__init__.py:52 +#: plinth/modules/bepasty/__init__.py:48 msgid "List and read all files" msgstr "" -#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:6 +#: plinth/modules/bepasty/__init__.py:63 plinth/modules/bepasty/manifest.py:6 msgid "bepasty" msgstr "" -#: plinth/modules/bepasty/__init__.py:67 +#: plinth/modules/bepasty/__init__.py:65 #, fuzzy #| msgid "File Sharing" msgid "File & Snippet Sharing" @@ -919,9 +923,10 @@ msgstr "správce" msgid "Configuration updated." msgstr "Nastavení aktualizována." -#: plinth/modules/bepasty/views.py:93 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 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: 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 msgid "An error occurred during configuration." msgstr "Při nastavování se vyskytla chyba." @@ -943,7 +948,7 @@ msgstr "Heslo" msgid "Password deleted." msgstr "Heslo aktualizováno" -#: plinth/modules/bind/__init__.py:31 +#: plinth/modules/bind/__init__.py:25 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." @@ -951,7 +956,7 @@ msgstr "" "BIND umožňuje zveřejňovat vaše informace systému doménových názvů (DNS) na " "Internet a překládat DNS dotazy pro uživatelská zařízení na vaší síti." -#: plinth/modules/bind/__init__.py:35 +#: plinth/modules/bind/__init__.py:29 #, python-brace-format msgid "" "Currently, on {box_name}, BIND is only used to resolve DNS queries for other " @@ -962,11 +967,11 @@ msgstr "" "ostatních strojů na místní síti. Není také slučitelný se sdílením připojení " "k Internetu přes {box_name}." -#: plinth/modules/bind/__init__.py:80 +#: plinth/modules/bind/__init__.py:76 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:81 +#: plinth/modules/bind/__init__.py:77 msgid "Domain Name Server" msgstr "Doménový jmenný server" @@ -1028,7 +1033,7 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:214 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 #: 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 @@ -1037,7 +1042,7 @@ msgstr "" msgid "Configuration updated" msgstr "Nastavení aktualizováno" -#: plinth/modules/calibre/__init__.py:32 +#: plinth/modules/calibre/__init__.py:26 #, python-brace-format msgid "" "calibre server provides online access to your e-book collection. You can " @@ -1045,7 +1050,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/calibre/__init__.py:35 +#: plinth/modules/calibre/__init__.py:29 msgid "" "You can organize your e-books, extract and edit their metadata, and perform " "advanced search. calibre can import, export, or convert across a wide range " @@ -1054,21 +1059,21 @@ msgid "" "highlighted text. Content distribution using OPDS is currently not supported." msgstr "" -#: plinth/modules/calibre/__init__.py:41 +#: plinth/modules/calibre/__init__.py:35 msgid "" "Only users belonging to calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1156,7 +1161,7 @@ msgstr "{name} smazáno." msgid "Could not delete {name}: {error}" msgstr "{name} se nepodařilo smazat: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1169,7 +1174,7 @@ msgstr "" "pokročilých funkcí, které obvykle nejsou potřeba. Je také k dispozici webový " "terminál pro operace na příkazovém řádku." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1177,7 +1182,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -1192,18 +1197,18 @@ msgstr "" "\"{users_url}\">uživatele s účtem na {box_name}, náležejícím do skupiny " "admin." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Správa serveru" @@ -1217,17 +1222,17 @@ msgstr "Přístupový bod" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Obecná nastavení" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1236,7 +1241,7 @@ msgstr "Obecná nastavení" msgid "Configure" msgstr "Nastavit" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1366,7 +1371,7 @@ msgstr "Jsou zobrazovány pokročilé aplikace a funkce" msgid "Hiding advanced apps and features" msgstr "Jsou skryté pokročilé aplikace a funkce" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1374,7 +1379,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as /deluge umístění na webovém serveru. Výchozí heslo je „deluge“, ale " "hned po zapnutí této služby se okamžitě přihlaste a změňte ho." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Stahovat soubory pomocí BitTorrent aplikací" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "Webový klient sítě BitTorrent" @@ -1487,7 +1492,7 @@ msgstr "Složka pro stahování" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorent klient napsaný v Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1495,65 +1500,65 @@ msgstr "" "Diagnostický test systému spustí několik kontrol pro potvrzení, že aplikace " "a služby fungují tak, jak mají." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Diagnostika" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 #, fuzzy #| msgid "Quassel" msgid "passed" msgstr "Quassel" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 #, fuzzy #| msgid "Setup failed." msgid "failed" msgstr "Nastavování se nezdařilo." -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 #, fuzzy #| msgid "Git" msgid "GiB" msgstr "Git" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "" -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " "{memory_available_unit} free. {advice_message}" msgstr "" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "" @@ -1605,7 +1610,7 @@ msgstr "Výsledek" msgid "Diagnostic Test" msgstr "Diagnostické testy" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1613,12 +1618,12 @@ msgstr "" "diaspora* je decentralizovaná společenská síť na které svá vlastní data " "uchováváte a ovládáte vy." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Decentralizovaná společenská síť" @@ -1679,7 +1684,7 @@ msgstr "Registrace uživatelů zapnuta" msgid "User registrations disabled" msgstr "Registrace uživatelů vypnuta" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1690,7 +1695,7 @@ msgstr "" "(např. každých 24h), může pro ostatní být být těžké najít vás na Internetu. " "Toto ostatním zabrání nalézt služby, které jsou poskytovány tímto {box_name}." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1708,11 +1713,11 @@ msgstr "" "někdo z Internetu zeptá na váš DNS název, dostane odpověď s vaší současnou " "IP adresou." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Klient dynamické DNS" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Název dynamické domény" @@ -1771,12 +1776,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Pokud chcete zachovat stávající heslo, tuto kolonku nevyplňujte." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Nemusí být zadáno. Pokud váš {box_name} není k Internetu připojen napřímo " "(tj. je připojený za NAT směrovačem) tato URL adresa slouží ke zjištění " @@ -1859,12 +1869,18 @@ msgid "Please provide a password" msgstr "Zadejte heslo" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Pokud hledáte bezplatný účet dynamického DNS, můžete použít bezplatnou " "GnuDIP službu web clientXMPP klienta. Když je zapnutý, ejabberd je přístupný " "libovolnému uživateli s účtem na {box_name}." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Chat server" @@ -2094,34 +2110,28 @@ msgstr "" "%(domainname)s. Doménu je možné nastavit na stránce nastavení systému." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Chat server" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Chyba při nastavování doménového názvu: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2158,54 +2168,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Žádný certifikát" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "Neplatný název serveru" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "Neplatný název serveru" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Doména" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Hlavní připojení" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Repositories" msgid "Aliases" msgstr "Spravovat repozitáře" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Zapnuto" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2214,7 +2236,7 @@ msgid "Disabled" msgstr "Vypnuto" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2234,7 +2256,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Repositories" msgid "Manage Aliases" @@ -2267,49 +2289,32 @@ msgstr "Vytvořit novou zálohu" msgid "Add" msgstr "Přidat" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domény" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "Spravovat zachycené stavy" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Typ služby" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Při nastavování se vyskytla chyba." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Nastavení se nezměnila" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2320,7 +2325,7 @@ msgstr "" "provoz na vašem {box_name}. Zapnutá a správně nastavená brána firewall " "snižuje riziko bezpečnostních hrozeb z Internetu." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Brána firewall" @@ -2446,7 +2451,7 @@ msgstr "Spustit nastavení" msgid "Setup Complete" msgstr "Nastavení dokončeno" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2464,7 +2469,7 @@ msgstr "" "grafických klientů. A svoje zdrojové kódy můžete sdílet s lidmi z celého " "světa." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2472,15 +2477,15 @@ msgstr "" "Více o Git se dozvíte navštívením výuky Gitu." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Přístup do Git repozitářů pro čtení a zápis" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Jednoduché hostování Git" @@ -2603,11 +2608,11 @@ msgstr "Repozitář upraven." msgid "Edit repository" msgstr "Upravit repozitář" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Dokumentace" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2615,21 +2620,21 @@ msgctxt "User guide" msgid "Manual" msgstr "Příručka" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Získejte podporu" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Odeslat zpětnou vazbu" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2921,7 +2926,7 @@ msgstr "O {box_name}" msgid "{box_name} Manual" msgstr "Příručka k {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2933,7 +2938,7 @@ msgstr "" "anonymitu posíláním provozu zašifrovaně, skrze dobrovolníky provozovanou síť " "rozprostřenou po celém světě." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2941,26 +2946,26 @@ msgstr "" "Více informací I2P naleznete na domovské stránce projektu." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" "První navštívení poskytovaného webového rozhraní spustí proces nastavení." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Spravovat aplikaci I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Anonymní síť" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P proxy" @@ -3005,7 +3010,7 @@ msgstr "" "Soubory stahujete přidáním torrentů nebo vytvořením nového torrentu a " "sdílením souboru skrze něj." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -3023,7 +3028,7 @@ msgstr "" "komentáře a RSS kanály. Když je zapnuté, blogy a wiki budou dostupné na /ikiwiki (po vytvoření)." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3036,15 +3041,15 @@ msgstr "" "může upravovat ty stávající. V Nastavení " "uživatele můžete tato oprávnění změnit nebo přidat nové uživatele." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "wiki a blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Zobrazit a upravit wiki aplikace" @@ -3123,12 +3128,12 @@ msgstr "{title} dsmazáno." msgid "Could not delete {title}: {error}" msgstr "{title} se nepodařilo smazat: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted je server pro Gobby – textový editor pro spolupráci ve skupině." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3139,11 +3144,11 @@ msgstr "" "desktopového klienta a nainstalujte ho. Poté spusťte Gobby a zvolte " "„Připojit k serveru“ a zadejte doménový název svého {box_name}." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Gobby server" @@ -3164,7 +3169,7 @@ msgstr "" "Spusťte Goggy a zvolte „Připojit k serveru“ a zadejte doménový název svého " "{box_name}." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3172,11 +3177,11 @@ msgstr "" "JSXC je webový klient pro XMPP. Typicky je používaný s lokálně provozovaným " "XMPP serverem." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Chatovací klient" @@ -3185,7 +3190,7 @@ msgstr "Chatovací klient" msgid "JavaScript license information" msgstr "Licenční informace o JavaScriptu" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3200,7 +3205,7 @@ msgstr "" "dokázáním, že je vlastníkem domény vůči Let's Encrypt, certifikační autoritě " "(CA)." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3212,15 +3217,15 @@ msgstr "" "(ISRG). Před použitím služby si přečtěte Podmínky používání Let's Encrypt." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Certifikáty" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3325,7 +3330,7 @@ msgstr "Certifikát pro doménu {domain} úspěšně smazán" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Nepodařilo se smazat certifikát pro doménu {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3342,14 +3347,14 @@ msgstr "" "čísla. Díky federování mohou uživatelé na daném Matrix serveru komunikovat " "s uživateli všech ostatních Matrix serverů." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3444,7 +3449,7 @@ msgstr "" "certifikát. Jděte na Let's Encrypt a " "získejte takový." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3456,7 +3461,7 @@ msgstr "" "skupině. Mediawiki je možné použít pro hostování wiki webových stránek, " "poznámek nebo pro spolupráci s přáteli na projektech." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3470,7 +3475,7 @@ msgstr "" "stránce Special:" "CreateAccount." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3478,12 +3483,12 @@ msgstr "" "Kdokoli kdo má odkaz na tuto wiki ji může číst. Měnit obsah mohou pouze " "uživatelé, kteří jsou přihlášení." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3579,7 +3584,7 @@ msgstr "Nastavení se nezměnila" msgid "Server URL updated" msgstr "Sdílení smazáno." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3592,11 +3597,11 @@ msgstr "" "serveru je třeba Minetest " "klient." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Pískoviště s kostkami" @@ -3666,7 +3671,7 @@ msgstr "Nastavení PVP aktualizováno" msgid "Damage configuration updated" msgstr "Nastavení poškozování aktualizováno" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3677,15 +3682,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3725,7 +3730,7 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3735,7 +3740,7 @@ msgstr "" "velkých souborů. Může se účastnit vícero peer-to-peer sítí, včetně eDonkey, " "Kademlia, Overnet, BitTorrent a DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3746,23 +3751,23 @@ msgstr "" "ovládat prostřednictvím libovolné mobilní či desktopové nadstavby nebo přes " "rozhraní telnet. Viz příručka." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" "Na {box_name}, stažené soubory se nacházejí ve složce /var/lib/mldonkey/ ." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Stahovat soubory pomocí eDonkey aplikací" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Pee-to-peer sdílení souborů" @@ -3774,7 +3779,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3794,7 +3799,7 @@ msgstr "" "naleznete v SSH dokumentaci k Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3812,7 +3817,7 @@ msgstr "" "nainstalovat nějaký software, který je k dispozici na webové stránce Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3831,6 +3836,10 @@ msgstr "Storno" msgid "Service" msgstr "Služba" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domény" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3937,7 +3946,7 @@ msgstr "Klíč zveřejněn na server s klíči." msgid "Error occurred while publishing key." msgstr "Při zveřejňování klíče došlo k chybě." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3945,7 +3954,7 @@ msgstr "" "Mumble je open source software pro šifrovanou, vysoce kvalitní hlasovou " "komunikaci s nízkou prodlevou." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3955,11 +3964,11 @@ msgstr "" "dispozici jsou klienti pro připojení z " "desktopu a Android zařízení." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Hlasový chat" @@ -3989,7 +3998,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "Heslo úspěšně změněno." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, fuzzy, python-brace-format #| msgid "" #| "Name Services provides an overview of the ways {box_name} can be reached " @@ -4008,7 +4017,7 @@ msgstr "" "typ názvu je zobrazeno, zda je pro příchozí spojení prostřednictvím daného " "názvu zapnutá či vypnutá služba HTTP, HTTPS a SSH." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Jmenné služby" @@ -4026,7 +4035,7 @@ msgstr "Všechny webové aplikace" msgid "Services" msgstr "Služba" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4034,17 +4043,17 @@ msgstr "" "Nastavit síťová zařízení. Připojit k Internetu přes ethernet, WiFi nebo " "PPPoE. Sdílet toto připojení s ostatními zařízeními na síti." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Sítě" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "S použitím DNSSEC na IPv{kind}" @@ -4536,7 +4545,7 @@ msgstr "DNS server" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Výchozí" @@ -4549,7 +4558,7 @@ msgid "This connection is not active." msgstr "Toto připojení není aktivní." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Zabezpečení" @@ -5050,7 +5059,7 @@ msgstr "Obecné" msgid "TUN or TAP interface" msgstr "Rozhraní" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5149,7 +5158,7 @@ msgstr "Připojení {name} smazáno." msgid "Failed to delete connection: Connection not found." msgstr "Smazání připojení se nezdařilo: Připojení nenalezeno." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5166,22 +5175,22 @@ msgstr "" "zvýšení zabezpečení a anonymity je také možné přistupovat k ostatku " "Internetu prostřednictvím {box_name}." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "Typ připojení" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuální soukromá síť" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5261,7 +5270,7 @@ msgstr "" msgid "Download my profile" msgstr "Stáhnout si svůj profil" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5273,19 +5282,19 @@ msgstr "" "němu nejste připojení napřímo. Potřebujete ho pouze když jsou služby služby " "vašeho {box_name} nedostupné z Internetu. To zahrnuje následující situace:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} se nachází za omezující bránou firewall." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} je připojený k (bezdrátovému) směrovači, který není ve vaší " "správě." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5293,7 +5302,7 @@ msgstr "" "Váš poskytovatel připojení vám neposkytuje vnější (veřejnou) IP adresu a " "namísto toho poskytuje připojení prostřednictvím NAT překladu." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5301,11 +5310,11 @@ msgstr "" "Váš poskytovatel připojení vám neposkytuje pevnou IP adresu a ta se proto " "mění pokaždé, když se připojíte k Internetu." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Váš poskytovatel připojení k Internetu omezuje příchozí spojení." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5325,15 +5334,15 @@ msgstr "" "\">pagekite.net. V budoucnu si pro toto může být možné s kamarádem " "smluvit využití jeho {box_name}." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Viditelnost na veřejnosti" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "PageKite doména" @@ -5486,35 +5495,35 @@ msgstr "" "Viz instrukce pro nastavení SSH klienta" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" msgstr "Nastavení systému" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Restartovat nebo vypnout systém." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Napájení" @@ -5578,7 +5587,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Vypnout nyní" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5588,7 +5597,7 @@ msgstr "" "zlepšujícími soukromí, upravující data webových stánek a HTTP hlaviček, " "řídící přístup a odebírající reklamy a ostatní otravné Internetové smetí. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5603,20 +5612,20 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ nebo http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Webová proxy" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Přistupte {url} s proxy {proxy} na tcp{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5633,7 +5642,7 @@ msgstr "" "více Quassel klientů z desktopu nebo mobilu může být použito pro připojení " "nebo odpojení od něj." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktopu a mobilních zařízení." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "IRC klient" @@ -5657,7 +5666,7 @@ msgstr "IRC klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5677,7 +5686,7 @@ msgstr "" "a>. K Radicale je možné přistupovat pomocí libovolného uživatelského účtu na " "{box_name}." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5687,12 +5696,12 @@ msgstr "" "nových kalendářů a adresářů kontaktů. Nepodporuje přidávání událostí či " "kontaktů, to je třeba dělat v tomu určeném klientovi." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Kalendář a adresář kontaktů" @@ -5776,7 +5785,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Nastavení přístupových práv aktualizováno" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5789,7 +5798,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:29 +#: plinth/modules/roundcube/__init__.py:25 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -5810,7 +5819,7 @@ msgstr "" "mailu, jako imap.example.com. Pro IMAP přes SSL (doporučeno), " "vyplňte kolonku server jakoimaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5826,17 +5835,17 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "E-mailový klient" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5845,31 +5854,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Distributed File Storage" msgid "Network File Storage" @@ -5963,13 +5972,13 @@ msgstr "Akce" msgid "FreedomBox OS disk" msgstr "FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "Přidat sdílení" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -6005,7 +6014,7 @@ msgstr "Sdílení upraveno." msgid "Error disabling share: {error_message}" msgstr "Chyba při vysouvání zařízení: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6013,7 +6022,7 @@ msgstr "" "Searx je soukromí respektující metavyhledavač na Internetu. Slučuje a " "zobrazuje výsledky z vícero vyhledávačů." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6021,15 +6030,15 @@ msgstr "" "Použitím Searx je možné se vyhnout sledování a profilování vyhledávači. Ve " "výchozím stavu neukládá žádné cookie." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Hledat na webu" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Vyhledávání na webu" @@ -6202,11 +6211,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:21 +#: plinth/modules/shaarli/__init__.py:17 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:22 +#: plinth/modules/shaarli/__init__.py:18 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6220,15 +6229,15 @@ msgstr "" "shaarli na webovém serveru. Poznamenejme, že Shaarli podporuje pouze " "jeden uživatelský účet, který bude třeba nastavit při první návštěvě." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Záložky" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6238,7 +6247,7 @@ msgstr "" "vašeho Internetového provozu. Je možné ji použít pro obejití filtrování " "Internetu a cenzury." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6251,7 +6260,7 @@ msgstr "" "připojit k této proxy a jejich data budou šifrována a posílána " "prostřednictvím Shadowsocks serveru." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6259,11 +6268,11 @@ msgstr "" "Pro použití Shadowsocks po nastavení, nastavte SOCKS5 proxy URL adresu ve " "svém zařízení, prohlížeči nebo aplikaci na http://adresa_freedombox:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Socks5 proxy" @@ -6295,7 +6304,7 @@ msgid "Encryption method. Must match setting on server." msgstr "" "Metoda šifrování. Je třeba, aby byla stejná, jaká je nastavená na serveru." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6409,7 +6418,7 @@ msgstr "Upravit sdílení" msgid "Share deleted." msgstr "Sdílení smazáno." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6419,7 +6428,7 @@ msgstr "" "souborového systému btrfs. Ty je možné použít pro vrácení systému do " "dřívějšího funkčního stavu v případě nechtěných změn." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6430,7 +6439,7 @@ msgstr "" "osy) a také před a po instalaci software. Nejstarší zachycené stavy budou " "automaticky mazány podle níže uvedených nastavení." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups, protože mohou být ukládány pouze na stejném oddílu, " "jako živá data. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Zachycené stavy datového úložiště" @@ -6655,7 +6664,7 @@ msgstr "Pro dokončení obnovy ze zálohy je třeba systém restartovat." msgid "Rollback to Snapshot" msgstr "Vrátit do podoby zachyceného stavu" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6667,7 +6676,7 @@ msgstr "" "spojení provádět úkoly správy, kopírovat soubory nebo spouštět ostatní " "služby." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Server zabezpečeného shellu (SSH)" @@ -6712,7 +6721,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "Ověření vůči vzdálenému serveru se nezdařilo." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Sdružené přihlášení (SSO)" @@ -6720,7 +6729,7 @@ msgstr "Sdružené přihlášení (SSO)" msgid "Login" msgstr "Přihlášení" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6731,91 +6740,91 @@ msgstr "" "{box_name}. Lze zobrazit úložná zařízení, která jsou využívána, připojovat a " "odpojovat ta vyjímatelná." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Úložiště" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bajtů" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Operace se nezdařila." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Operace byla zrušena." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Toto zařízení už je odpojováno (umount)." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "Operace není podporována z důvodu chybějící podpory ovladače/nástroje." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "Časový limit aplikace překročen." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Operace by probudila disk který je v režimu hlubokého spánku." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Pokus o odpojení zařízení které je zaneprázdněno." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "Operace už byla zrušena." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "Chybí oprávnění pro provedení požadované operace." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Toto zařízení je už připojeno (mount)." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Zařízení není připojeno." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "Není umožněno použít požadovanou volbu." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Zařízení je připojeno jiným uživatelem." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -6825,64 +6834,64 @@ msgstr "" "Varování: Dochází volné místo na systémovém oddílu ({percent_used}% využito, " "{free_space} volné)." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid repository name." msgid "Invalid directory name." msgstr "Neplatný název repozitáře." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "Složka pro stahování" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 #, fuzzy #| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." msgstr "Zařízení je připojeno jiným uživatelem." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "Složka pro stahování" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "Sdílené" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6962,7 +6971,7 @@ msgstr "Zařízení je možné bezpečně odebrat." msgid "Error ejecting device: {error_message}" msgstr "Chyba při vysouvání zařízení: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6974,7 +6983,7 @@ msgstr "" "smazání souborů na jednom zařízení bude automaticky replikováno na veškerá " "zařízení, na kterých také provozujete Syncthing." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, fuzzy, python-brace-format #| msgid "" #| "Running Syncthing on {box_name} provides an extra synchronization point " @@ -6999,20 +7008,20 @@ msgstr "" "být synchronizována do odlišné sady složek. Webové rozhraní {box_name} je k " "dispozici pouze pro uživatele náležející do skupiny „admin“." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Spravovat aplikaci Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Synchronizace souborů" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7024,7 +7033,7 @@ msgstr "" "poskytovateli nezávislé zabezpečení. I když některé z uzlů přestanou " "fungovat, své soubory můžete získat ze zbývajících uzlů." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7034,11 +7043,11 @@ msgstr "" "Tento {box_name} nese ve výchozím stavu úložný uzel a uvaděč. Je možné " "přidat další uvaděče, které představí tento uzel ostatním úložným uzlům." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Distribuované souborové úložiště" @@ -7077,7 +7086,7 @@ msgstr "Připojené uvaděče" msgid "Remove" msgstr "Odebrat" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7091,42 +7100,42 @@ msgstr "" "prohlížeč Tor Browser." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor skrytá služba" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Předávájící Tor most" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Port Tor předávání k dispozici" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 transport zaregistrován" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 transport zaregistrován" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Přistoupit k URL adrese {url} na tcp{kind} prostřednictvím Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Potvrdit použití Tor na {url} na tcp{kind}" @@ -7282,13 +7291,17 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Tor SOCKS port je k dispozici na vašem %(box_name)s na TCP portu 9050." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Nastavení se nezměnila" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission je BitTorrent klient který poskytuje webové uživatelské " "rozhraní." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7301,16 +7314,16 @@ msgstr "" "Transmision obsluhuje sdílení souborů Bitorrent. Poznamenejme, že BitTorrent " "není anonymní." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7319,7 +7332,7 @@ msgstr "" "Tiny Tiny RSS je čtečka a slučovač novinek (RSS/Atom), navržená pro čtení " "odkudkoli, ale s pohodlím podobným desktopové aplikaci." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -7333,7 +7346,7 @@ msgstr "" "\">/tt-rss umístění na webovém serveru. Je přístupné pro libovolného uživatele s účtem na {box_name}." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -7345,15 +7358,15 @@ msgstr "" "Při používání mobilní nebo desktopové aplikace pro Tiny Tiny RSS použijte " "pro připojování URL adresu /tt-rss-app." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Číst a přihlásit se k odběru novinek" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Čtečka novinek" @@ -7361,13 +7374,13 @@ msgstr "Čtečka novinek" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Zjistit dostupnost a uplatnit nejnovější aktualizace a opravy zabezpečení." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7375,7 +7388,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7611,14 +7624,14 @@ msgstr "Spouštění přechodu na novější verzi se nezdařilo." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7626,15 +7639,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Uživatelé a skupiny" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Přístup ke všem službám a nastavení systému" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zkontrolujte LDAP položku „{search_item}“" @@ -7898,18 +7911,18 @@ msgstr "Změnit heslo" msgid "Password changed successfully." msgstr "Heslo úspěšně změněno." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8271,7 +8284,7 @@ msgstr "Smazat připojení" msgid "Server deleted." msgstr "Sdílení smazáno." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8280,7 +8293,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8289,28 +8302,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Adresa" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8328,7 +8341,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8341,7 +8354,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8349,11 +8362,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -8389,23 +8402,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Obecné" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Chyba při instalaci" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "Instalace" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "stahování" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "změna média" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "soubor s nastaveními: {file}" @@ -8796,6 +8809,16 @@ msgstr "%(percentage)s%% dokončeno" msgid "Gujarati" msgstr "gudžarátština" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Chyba při nastavování doménového názvu: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Při nastavování se vyskytla chyba." + #, fuzzy #~| msgid "Disabled" #~ msgid "Disable selected" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index fad49995e..3e7d1c988 100644 --- a/plinth/locale/da/LC_MESSAGES/django.po +++ b/plinth/locale/da/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Danish calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1053,15 +1054,15 @@ msgstr "" "Kun brugere der tilhører calibre-gruppen har adgang til appen. Alle " "brugere med adgang kan benytte alle samlingerne." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Brug calibre e-bogssamlinger" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "E-bogssamling" @@ -1135,7 +1136,7 @@ msgstr "{name} slettet." msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1148,7 +1149,7 @@ msgstr "" "for mange avancerede funktioner som typisk ikke påkræves. En web-baseret " "terminal til kørsel af konsolkommandoer er ligeledes tilgængelig." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1160,7 +1161,7 @@ msgstr "" "brugerdefinerede porte i systemets firewall, samt avanceret " "netværkshåndtering såsom bonding, bridging og håndtering af VLAN." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1169,7 +1170,7 @@ msgstr "" "Det kan tilgås af enhver bruger på {box_name} " "som tilhører administratorgruppen." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1177,12 +1178,12 @@ msgstr "" "Cockpit skal tilgås via et domænenavn. Det fungerer ikke hvis det tilgås med " "en IP-adresse som en del af webadressen." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Serveradministration" @@ -1194,7 +1195,7 @@ msgstr "Adgang" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit vil kun fungere når det tilgås gennem de følgende webadresser." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1202,11 +1203,11 @@ msgstr "" "Her kan du konfigurere nogle generelle indstillinger såsom værtsnavn, " "domænenavn, webserverens hjemmeside osv." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Generel Konfiguration" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1215,7 +1216,7 @@ msgstr "Generel Konfiguration" msgid "Configure" msgstr "Konfigurer" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1344,7 +1345,7 @@ msgstr "Viser avancerede applikationer og funktionalitet" msgid "Hiding advanced apps and features" msgstr "Skjuler avancerede applikationer og funktionalitet" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1356,7 +1357,7 @@ msgstr "" "WebRTC, SIP og andre kommunikationsservere kan bruge dette til at oprette et " "opkald mellem parter der ellers ikke kan oprette forbindelse til hinanden." -#: plinth/modules/coturn/__init__.py:42 +#: 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-" @@ -1369,11 +1370,11 @@ msgstr "" "Den er ikke beregnet til at blive anvendt direkte af brugerne. Servere såsom " "matrix-synapse skal konfigureres med detaljerne som er angivet her." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "VoIP-hjælper" @@ -1390,7 +1391,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Brug den følgende delte autentifikationshemmelighed:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1398,11 +1399,11 @@ msgstr "" "Netværkstidsserver er et program der holder systemets tid synkroniseret med " "servere på internettet." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Dato & Tid" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Tid synkroniseret med NTP-server" @@ -1431,11 +1432,11 @@ msgstr "Kunne ikke sætte tidszone: {exception}" msgid "Time zone set" msgstr "Tidszone gemt" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge er en BitTorrent-klient som har et webbaseret brugerinterface." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1443,17 +1444,17 @@ msgstr "" "Standardkodeordet er 'deluge', men du bør logge ind og ændre det så snart du " "har aktiveret denne tjeneste." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Download filer ved hjælp af BitTorrent-applikationer" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "BitTorrent Webklient" @@ -1465,7 +1466,7 @@ msgstr "Download-mappe" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent-klient skrevet i Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1473,52 +1474,52 @@ msgstr "" "Systemets diagnostiske test vil udføre en række tjek af dit system for at " "afgøre om applikationer og tjenester virker som forventet." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Diagnosticering" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "lykkedes" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "mislykkedes" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "fejl" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GiB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "Du bør deaktivere nogle applikationer for at frigøre hukommelse." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Du bør ikke installere flere applikationer på dette system." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1528,7 +1529,7 @@ msgstr "" "{memory_available} {memory_available_unit} fri{percent_used}{percent_used}. " "{advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Lav hukommelse" @@ -1581,7 +1582,7 @@ msgstr "Resultat" msgid "Diagnostic Test" msgstr "Diagnostisk Test" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1589,12 +1590,12 @@ msgstr "" "diaspora* er et decentraliseret socialt netværk hvor du selv kan lagre og " "kontrollere dine egne data." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Føderativt socialt netværk" @@ -1655,7 +1656,7 @@ msgstr "Indregistrering af brugere aktiveret" msgid "User registrations disabled" msgstr "Indregistrering af brugere deaktiveret" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1666,7 +1667,7 @@ msgstr "" "døgnet), kan det være svært for andre at finde dig på internettet. Dette vil " "forhindre andre i at finde de tjenester denne {box_name} udbyder." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1683,11 +1684,11 @@ msgstr "" "opdatere dit DNS-navn med den nye IP-adresse, således at hvis nogen på " "internettet spørger til adressen vil de få din aktuelle IP-adresse." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Dynamisk DNS Klient" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Dynamisk domænenavn" @@ -1741,12 +1742,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Lad dette felt stå tomt hvis du vil beholde dit nuværende kodeord." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Ikke obligatorisk. Hvis din {box_name} ikke er tilsluttet direkte til " "internettet (hvis den f.eks.er bag en NAT-router) bruges denne URL til at " @@ -1828,12 +1834,18 @@ msgid "Please provide a password" msgstr "Angiv venligst et kodeord" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Leder du efter en gratis dynamisk DNS-konto kan du få en gratis GnuDIP-" "tjeneste på gnudip." @@ -1893,7 +1905,7 @@ msgstr "" msgid "Last update" msgstr "Seneste opdatering" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Om" @@ -1920,7 +1932,7 @@ msgstr "Konfigurer Dynamisk DNS" msgid "Dynamic DNS Status" msgstr "Dynamisk DNS Status" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1928,7 +1940,7 @@ msgstr "" "XMPP er en åben og standardiseret kommunikationsprotokol. Her kan du " "aktivere og konfigurere din XMPP-server, kaldet ejabberd." -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client bruger med adgang til {box_name}." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Chatserver" @@ -2061,34 +2073,28 @@ msgstr "" "vil se ud som brugernavn@%(domainname)s. Du kan konfigurere systemets " "domæne på Konfigurer siden." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Chatserver" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Kunne ikke sætte domænenavn: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2125,54 +2131,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Intet certifikat" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "Ugyldigt servernavn" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "Ugyldigt servernavn" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domæne" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Primær forbindelse" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "Håndter samlinger" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktiveret" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2181,7 +2199,7 @@ msgid "Disabled" msgstr "Deaktiveret" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 #, fuzzy #| msgid "Enable Roundcube" @@ -2201,7 +2219,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2236,49 +2254,32 @@ msgstr "Opret en ny sikkerhedskopi" msgid "Add" msgstr "Adresse" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domæner" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Create User" msgid "Manage Spam" msgstr "Opret Bruger" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Servicetype" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Der opstod en fejl under konfigurationen." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Indstilling uændret" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2289,7 +2290,7 @@ msgstr "" "på din{box_name}. At holde en firewall aktiveret og velkonfigureret " "reducerer risikoen for sikkerhedstrusler fra internettet." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Firewall" @@ -2410,7 +2411,7 @@ msgstr "Start Konfiguration" msgid "Setup Complete" msgstr "Konfiguration Færdig" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2428,7 +2429,7 @@ msgstr "" "klient til kommandolinjen eller med flere tilgængelige grafiske klienter. Og " "så kan du dele din kode med mennesker over hele kloden." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2436,15 +2437,15 @@ msgstr "" "For at lære med om hvordan du bruger Git kan du besøge Git-vejledningen." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Læse- og skriveadgang til Git-repositorier" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Simpel Git-hosting" @@ -2587,11 +2588,11 @@ msgstr "pakker ikke fundet" msgid "Edit repository" msgstr "Opret Bruger" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2599,21 +2600,21 @@ msgctxt "User guide" msgid "Manual" msgstr "Brugermanual" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2884,7 +2885,7 @@ msgstr "Om {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Brugervejledning" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2892,7 +2893,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Wiki-siden." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktiver applikation" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "Tor Anonymiseringstjeneste" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -2965,7 +2966,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2982,7 +2983,7 @@ msgstr "" "kommentarer og RSS-feeds. Når aktiveret, vil blogge og wikier være " "tilgængelige på /ikiwiki." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2991,19 +2992,19 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 #, fuzzy #| msgid "wiki" msgid "ikiwiki" msgstr "wiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 #, fuzzy #| msgid "Wiki & Blog" msgid "Wiki and Blog" msgstr "Wiki & Blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -3086,11 +3087,11 @@ msgstr "{name} slettet." msgid "Could not delete {title}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3098,11 +3099,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -3123,17 +3124,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 #, fuzzy #| msgid "IRC Client (Quassel)" msgid "Chat Client" @@ -3144,7 +3145,7 @@ msgstr "IRC-klient (Quassel)" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, fuzzy, python-brace-format #| msgid "" #| "A digital certficate allows users of a web service to verify the identity " @@ -3165,7 +3166,7 @@ msgstr "" "Dette gøres ved at bekræfte overfor Let's Encrypt, en certifikat-autoritet " "(CA), at den har ejerskab over domænet." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 #, fuzzy #| msgid "" #| "Let's Encrypt is a free, automated, and open certificate authority, run " @@ -3185,19 +3186,19 @@ msgstr "" "org/repository/\">Let's Encrypts abonnementsbetingelser inden tjenesten " "tages i anvendelse." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "Certifikater (Let's Encrypt)" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "Certifikat Status" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3310,7 +3311,7 @@ msgstr "Certifikatet for domænet {domain} blev trukket tilbage" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Fejl ved tilbagetrækning af certifikatet for domænet {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3320,14 +3321,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 #, fuzzy #| msgid "Chat Server (XMPP)" msgid "Matrix Synapse" @@ -3409,7 +3410,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3417,7 +3418,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3426,18 +3427,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3543,7 +3544,7 @@ msgstr "Indstilling uændret" msgid "Server URL updated" msgstr "{name} slettet." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3556,11 +3557,11 @@ msgstr "" "For at forbinde til serveren skal der bruges en Minetest klient." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 #, fuzzy #| msgid "Block Sandbox (Minetest)" msgid "Block Sandbox" @@ -3642,7 +3643,7 @@ msgstr "Konfiguration opdateret" msgid "Damage configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3653,15 +3654,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" @@ -3703,38 +3704,38 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy #| msgid "Monkeysphere" msgid "MLDonkey" msgstr "Monkeysphere" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 #, fuzzy #| msgid "Enable Shaarli" msgid "Peer-to-peer File Sharing" @@ -3752,7 +3753,7 @@ msgstr "Monkeysphere" msgid "AMLDonkey" msgstr "Monkeysphere" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3773,7 +3774,7 @@ msgstr "" "info/getting-started-ssh/\">Monkeysphere SSH-dokumentationen for flere " "detaljer." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3792,7 +3793,7 @@ msgstr "" "href=\"https://web.monkeysphere.info/download/\">Monkeysphere hjemmesiden." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3811,6 +3812,10 @@ msgstr "Annuller" msgid "Service" msgstr "Tjeneste" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domæner" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3916,7 +3921,7 @@ msgstr "Nøgle distribueret til nøgleserver." msgid "Error occurred while publishing key." msgstr "Fejl under distribuering af nøgle." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3924,7 +3929,7 @@ msgstr "" "Mumble er open source software der tilbyder en højkvalitets tale-tjeneste " "med lav forsinkelse og kryptering." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3934,11 +3939,11 @@ msgstr "" "Klienter til computere og Android-enheder " "er tilgængelige." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -3970,7 +3975,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "Kodeord blev ændret." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3979,7 +3984,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Navnetjenester" @@ -3997,23 +4002,23 @@ msgstr "" msgid "Services" msgstr "Tjeneste" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Netværk" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruger DNSSEC på IPv{kind}" @@ -4520,7 +4525,7 @@ msgstr "DNS-server" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Standard" @@ -4533,7 +4538,7 @@ msgid "This connection is not active." msgstr "Denne forbindelse er ikke aktiv." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Sikkerhed" @@ -5031,7 +5036,7 @@ msgstr "generisk" msgid "TUN or TAP interface" msgstr "TUN eller TAP interface" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5125,7 +5130,7 @@ msgstr "Slettede forbindelse {name}." msgid "Failed to delete connection: Connection not found." msgstr "Kunne ikke slette forbindelse: Forbindelse ikke fundet." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5142,26 +5147,26 @@ msgstr "" "af {box_name}. Du kan også tilgå resten af internettet igennem {box_name} " "for øget sikkerhed og anonymitet." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "Forbindelsestype" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "OpenVPN" msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "Virtuelt Privat Netværk (OpenVPN)" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5242,7 +5247,7 @@ msgstr "" msgid "Download my profile" msgstr "Hent min profil" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5255,19 +5260,19 @@ msgstr "" "hvis {box_name} tjenester ikke kan nås fra resten af internettet. Dette " "inkluderer de følgende situationer:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} er bag en restriktiv firewall." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} er forbundet til en (trådløs) router som du ikke selv " "kontrollerer." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5275,7 +5280,7 @@ msgstr "" "Din internetudbyder tildeler dig ikke en ekstern IP-adresse, men giver dig " "forbindelse gennem NAT." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 #, fuzzy #| msgid "" #| "Your ISP does not provide you a static IP address and your IP address " @@ -5287,11 +5292,11 @@ msgstr "" "Din internetudbyder tildeler dig ikke en fast IP-adresse, og din IP-adresse " "ændres hver gang du fobinder til nettet." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Din internetudbyder begrænser indgående forbindelser." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5311,19 +5316,19 @@ msgstr "" "net. I fremtiden vil det måske blive muligt at bruge din vens {box_name} " "til dette." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 #, fuzzy #| msgid "Pagekite" msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 #, fuzzy #| msgid "Public Visibility (PageKite)" msgid "Public Visibility" msgstr "Offentlig Tilgængelighed (PageKite)" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 #, fuzzy #| msgid "PageKite Account" msgid "PageKite Domain" @@ -5479,35 +5484,35 @@ msgstr "" "Se instruktioner for opsætning af SSH-klient" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" msgstr "Systemkonfiguration" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Genstart eller luk systemet." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Strøm" @@ -5568,7 +5573,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Sluk Nu" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5579,7 +5584,7 @@ msgstr "" "HTTP-headers, styre adgang og fjerne reklamer og andet vedderstyggeligt " "internetskrald. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5594,24 +5599,24 @@ msgstr "" "på http://config.privoxy.org/ " "eller http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 #, fuzzy #| msgid "Enable Privoxy" msgid "Privoxy" msgstr "Aktiver Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "Privoxy Webproxy" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgå {url} med proxy {proxy} ved brug af tcp{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5628,7 +5633,7 @@ msgstr "" "kontinuerligt online, og du vil kunne bruge en eller flere Quassel-klienter " "fra en computer eller en mobil til at forbinde til den." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your computer og mobile enhed er tilgængelige." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" @@ -5654,7 +5659,7 @@ msgstr "Quassel IRC-klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5675,19 +5680,19 @@ msgstr "" "carddav-clients\">understøttet klient-applikation. Radicale kan tilgås " "af enhver bruger der har et log ind til {box_name}." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 #, fuzzy #| msgid "Calendar and Addressbook (Radicale)" msgid "Calendar and Addressbook" @@ -5760,7 +5765,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5772,7 +5777,7 @@ msgstr "" "du forventer af en emailklient, inklusiv MIME-understøttelse, lagring af " "kontaktpersoner, mappe-administration, beskedsøgning og stavekontrol." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -5793,7 +5798,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:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5810,19 +5815,19 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Email Client" msgstr "Emailklient (Roundcube)" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5831,31 +5836,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -5945,13 +5950,13 @@ msgstr "Handlinger" msgid "FreedomBox OS disk" msgstr "FreedomBox OS disk" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "Tilføj Service" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5987,27 +5992,27 @@ msgstr "{name} slettet." msgid "Error disabling share: {error_message}" msgstr "Kunne ikke installere applikation: {error}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Web Search" @@ -6185,11 +6190,11 @@ msgstr "Kunne ikke sætte tidszone: {exception}" msgid "Updated security configuration" msgstr "Generel Konfiguration" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli tillader dig at gemme og dele bogmærker." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6203,24 +6208,24 @@ msgstr "" "shaarli på webserveren. Bemærk at Shaarli kun understøtter en enkelt " "brugerkonto, som skal sættes op ved det første besøg." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 #, fuzzy #| msgid "Bookmarks (Shaarli)" msgid "Bookmarks" msgstr "Bogmærker (Shaarli)" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6229,17 +6234,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -6272,7 +6277,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6388,14 +6393,14 @@ msgstr "Rediger Bruger" msgid "Share deleted." msgstr "{name} slettet." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6403,14 +6408,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 #, fuzzy #| msgid "Create User" msgid "Storage Snapshots" @@ -6626,7 +6631,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6634,7 +6639,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) Server" @@ -6681,7 +6686,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6689,7 +6694,7 @@ msgstr "" msgid "Login" msgstr "Log ind" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6697,164 +6702,164 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 #, fuzzy #| msgid "reStore" msgid "Storage" msgstr "reStore" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "repro-tjenesten er aktiv" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "Denne tjeneste eksisterer allerede" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "repro-tjenesten er ikke aktiv" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Ugyldigt værtsnavn" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "Download-mappe" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "Download-mappe" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 #, fuzzy #| msgid "Add Service" msgid "Share" msgstr "Tilføj Service" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6937,7 +6942,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6945,7 +6950,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6957,22 +6962,22 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" msgstr "Installer denne applikation?" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6980,7 +6985,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6988,11 +6993,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -7029,7 +7034,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7043,43 +7048,43 @@ msgstr "" "du bruger Tor-browseren." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor Skjult Tjeneste" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 #, fuzzy msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Tor videresendelsesport tilgængelig" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registreret" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registreret" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tilgå URL {url} ved brug af tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekræft brug af Tor på {url} ved brug af tcp{kind}" @@ -7229,12 +7234,16 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "En Tor SOCKS-port er tilgængelig på din %(box_name)s TCP-port 9050." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Indstilling uændret" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission er en BitTorrent-klient som har et webbaseret brugerinterface." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7242,18 +7251,18 @@ msgstr "" "BitTorrent er en peer-to-peer/P2P (decentral) fildelingsprotokol. Bemærk at " "BitTorrent ikke anonymiserer trafik." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Transmission" msgstr "Transmission BitTorrent" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7263,7 +7272,7 @@ msgstr "" "er designet til at læse nyheder på farten, men samtidig føles så meget som " "en rigtig desktop-applikation som muligt." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -7275,21 +7284,21 @@ msgstr "" "Når aktiveret, vil Tiny Tiny RSS være tilgængelige på stien /tt-rss på webserveren." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 #, fuzzy #| msgid "News Feed Reader (Tiny Tiny RSS)" msgid "News Feed Reader" @@ -7299,12 +7308,12 @@ msgstr "Nyhedsstrømlæser (Tiny Tiny RSS)" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7312,7 +7321,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7553,14 +7562,14 @@ msgstr "Kunne ikke starte opdatering." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7568,15 +7577,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Brugere og Grupper" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrol af LDAP-konfiguration \"{search_item}\"" @@ -7840,18 +7849,18 @@ msgstr "Ændr kodeord" msgid "Password changed successfully." msgstr "Kodeord blev ændret." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8197,7 +8206,7 @@ msgstr "Slet Forbindelse" msgid "Server deleted." msgstr "{name} slettet." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8206,7 +8215,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8215,28 +8224,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Adresse" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki & Blog" msgid "Website and Blog" @@ -8254,7 +8263,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8267,7 +8276,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8275,11 +8284,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -8315,23 +8324,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Fejl under installation" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "Installerer" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "downloader" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "medie-ændring" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -8707,6 +8716,16 @@ msgstr "%(percentage)s%% færdig" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Kunne ikke sætte domænenavn: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Der opstod en fejl under konfigurationen." + #, fuzzy #~| msgid "Disabled" #~ msgid "Disable selected" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index 7b02297db..3660ed2d6 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" -"PO-Revision-Date: 2021-11-02 13:36+0000\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" +"PO-Revision-Date: 2021-12-05 09:51+0000\n" "Last-Translator: Johannes Keyser \n" "Language-Team: German \n" @@ -19,13 +19,13 @@ 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.10-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "Seitenquelle" -#: plinth/context_processors.py:23 plinth/views.py:81 +#: plinth/context_processors.py:23 plinth/views.py:84 msgid "FreedomBox" msgstr "FreedomBox" @@ -34,22 +34,22 @@ msgstr "FreedomBox" msgid "Service {service_name} is running" msgstr "Der Dienst {service_name} wird ausgeführt" -#: plinth/daemon.py:131 +#: plinth/daemon.py:158 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Gebunden auf {kind} Port {listen_address}:{port}" -#: plinth/daemon.py:135 +#: plinth/daemon.py:162 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Gebunden an {kind} Port {port}" -#: plinth/daemon.py:203 +#: plinth/daemon.py:230 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Verbinden mit {host}:{port}" -#: plinth/daemon.py:205 +#: plinth/daemon.py:232 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Verbindung mit {host}:{port} fehlgeschlagen" @@ -92,31 +92,31 @@ msgstr "Sprache für die Darstellung dieser Weboberfläche" msgid "Use the language preference set in the browser" msgstr "Die im Browser festgelegte Sprache verwenden" -#: plinth/middleware.py:36 plinth/templates/setup.html:18 +#: plinth/middleware.py:38 plinth/templates/setup.html:18 msgid "Application installed." msgstr "Anwendung installiert." -#: plinth/middleware.py:41 +#: plinth/middleware.py:43 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "Fehler beim Installieren der Anwendung: {string} {details}" -#: plinth/middleware.py:45 +#: plinth/middleware.py:47 #, python-brace-format msgid "Error installing application: {error}" msgstr "Fehler beim Installieren der Anwendung: {error}" -#: plinth/modules/apache/__init__.py:42 +#: plinth/modules/apache/__init__.py:33 msgid "Apache HTTP Server" msgstr "Apache HTTP Server" -#: plinth/modules/apache/__init__.py:48 +#: plinth/modules/apache/__init__.py:41 #: plinth/modules/monkeysphere/templates/monkeysphere.html:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:46 msgid "Web Server" msgstr "Webserver" -#: plinth/modules/apache/__init__.py:54 +#: plinth/modules/apache/__init__.py:47 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} Weboberfläche (Plinth)" @@ -131,7 +131,7 @@ msgstr "Zugangs-URL {url} über TCP{kind}" msgid "Access URL {url}" msgstr "Zugangs-URL {url}" -#: plinth/modules/avahi/__init__.py:36 +#: plinth/modules/avahi/__init__.py:26 #, python-brace-format msgid "" "Service discovery allows other devices on the network to discover your " @@ -148,24 +148,24 @@ msgstr "" "deaktiviert werden, um die Sicherheit zu erhöhen, vor allem in einem " "unsicheren lokalen Netz." -#: plinth/modules/avahi/__init__.py:60 +#: plinth/modules/avahi/__init__.py:51 msgid "Service Discovery" msgstr "Dienste-Erkennung" -#: plinth/modules/avahi/__init__.py:73 +#: plinth/modules/avahi/__init__.py:64 msgid "Local Network Domain" msgstr "Lokale Netzwerkdomäne" -#: plinth/modules/backups/__init__.py:35 +#: plinth/modules/backups/__init__.py:27 msgid "Backups allows creating and managing backup archives." msgstr "Erstellen und Verwalten von Sicherungs-Archiven." -#: plinth/modules/backups/__init__.py:56 plinth/modules/backups/__init__.py:208 -#: plinth/modules/backups/__init__.py:253 +#: plinth/modules/backups/__init__.py:50 plinth/modules/backups/__init__.py:202 +#: plinth/modules/backups/__init__.py:247 msgid "Backups" msgstr "Sicherungen" -#: plinth/modules/backups/__init__.py:205 +#: plinth/modules/backups/__init__.py:199 msgid "" "Enable an automatic backup schedule for data safety. Prefer an encrypted " "remote backup location or an extra attached disk." @@ -174,18 +174,18 @@ msgstr "" "Bevorzugen Sie einen verschlüsselten Remote-Backup-Speicherort oder einen " "zusätzlich angeschlossenen Datenträger." -#: plinth/modules/backups/__init__.py:211 +#: plinth/modules/backups/__init__.py:205 msgid "Enable a Backup Schedule" msgstr "Aktivieren eines Sicherungszeitplans" -#: plinth/modules/backups/__init__.py:215 -#: plinth/modules/backups/__init__.py:262 -#: plinth/modules/storage/__init__.py:331 +#: plinth/modules/backups/__init__.py:209 +#: plinth/modules/backups/__init__.py:256 +#: plinth/modules/storage/__init__.py:329 #, python-brace-format msgid "Go to {app_name}" msgstr "Gehe zu {app_name}" -#: plinth/modules/backups/__init__.py:250 +#: plinth/modules/backups/__init__.py:244 #, python-brace-format msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " @@ -195,7 +195,7 @@ msgstr "" "Versuche zur Sicherung waren nicht erfolgreich. Der letzte Fehler ist: " "{error_message}" -#: plinth/modules/backups/__init__.py:258 +#: plinth/modules/backups/__init__.py:252 msgid "Error During Backup" msgstr "Fehler beim Sichern" @@ -763,7 +763,7 @@ msgstr "Aushängen fehlgeschlagen!" msgid "Mounting failed" msgstr "Einhängen fehlgeschlagen" -#: plinth/modules/bepasty/__init__.py:25 +#: plinth/modules/bepasty/__init__.py:21 msgid "" "bepasty is a web application that allows large files to be uploaded and " "shared. Text and code snippets can also be pasted and shared. Text, image, " @@ -777,7 +777,7 @@ msgstr "" "Dateien können so eingestellt werden, dass sie nach einer bestimmten Zeit " "ablaufen und gelöscht werden." -#: plinth/modules/bepasty/__init__.py:29 +#: plinth/modules/bepasty/__init__.py:25 msgid "" "bepasty does not use usernames for login. It only uses passwords. For each " "password, a set of permissions can be selected. Once you have created a " @@ -789,7 +789,7 @@ msgstr "" "werden. Sobald Sie ein Passwort erstellt haben, können Sie es mit den " "Benutzern teilen, die über die entsprechenden Berechtigungen verfügen sollen." -#: plinth/modules/bepasty/__init__.py:33 +#: plinth/modules/bepasty/__init__.py:29 msgid "" "You can also create multiple passwords with the same set of privileges, and " "distribute them to different people or groups. This will allow you to later " @@ -801,39 +801,39 @@ msgstr "" "können Sie später den Zugang für eine einzelne Person oder Gruppe sperren, " "indem Sie deren Passwort aus der Liste entfernen." -#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +#: plinth/modules/bepasty/__init__.py:38 plinth/modules/bepasty/__init__.py:47 msgid "Read a file, if a web link to the file is available" msgstr "Lesen einer Datei, wenn ein Weblink zur Datei verfügbar ist" -#: plinth/modules/bepasty/__init__.py:43 +#: plinth/modules/bepasty/__init__.py:39 msgid "Create or upload files" msgstr "Dateien erstellen oder hochladen" -#: plinth/modules/bepasty/__init__.py:44 +#: plinth/modules/bepasty/__init__.py:40 msgid "List all files and their web links" msgstr "Auflisten aller Dateien und deren Weblinks" -#: plinth/modules/bepasty/__init__.py:45 +#: plinth/modules/bepasty/__init__.py:41 msgid "Delete files" msgstr "Dateien löschen" -#: plinth/modules/bepasty/__init__.py:46 +#: plinth/modules/bepasty/__init__.py:42 msgid "Administer files: lock/unlock files" msgstr "Dateien verwalten: Dateien sperren/entsperren" -#: plinth/modules/bepasty/__init__.py:50 +#: plinth/modules/bepasty/__init__.py:46 msgid "None, password is always required" msgstr "Keiner, Passwort ist immer erforderlich" -#: plinth/modules/bepasty/__init__.py:52 +#: plinth/modules/bepasty/__init__.py:48 msgid "List and read all files" msgstr "Alle Dateien auflisten und lesen" -#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:6 +#: plinth/modules/bepasty/__init__.py:63 plinth/modules/bepasty/manifest.py:6 msgid "bepasty" msgstr "bepasty" -#: plinth/modules/bepasty/__init__.py:67 +#: plinth/modules/bepasty/__init__.py:65 msgid "File & Snippet Sharing" msgstr "Datei- und Snippet-Freigabe" @@ -935,9 +935,10 @@ msgstr "Admin" msgid "Configuration updated." msgstr "Konfiguration aktualisiert." -#: plinth/modules/bepasty/views.py:93 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 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: 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 msgid "An error occurred during configuration." msgstr "Ein Fehler ist bei der Konfiguration aufgetreten." @@ -953,7 +954,7 @@ msgstr "Passwort hinzufügen" msgid "Password deleted." msgstr "Passwort gelöscht." -#: plinth/modules/bind/__init__.py:31 +#: plinth/modules/bind/__init__.py:25 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." @@ -962,7 +963,7 @@ msgstr "" "Internet veröffentlichen, und DNS-Abfragen Ihrer Geräte im Heimnetz " "beantworten." -#: plinth/modules/bind/__init__.py:35 +#: plinth/modules/bind/__init__.py:29 #, python-brace-format msgid "" "Currently, on {box_name}, BIND is only used to resolve DNS queries for other " @@ -973,11 +974,11 @@ msgstr "" "Geräte im lokalen Netzwerk zu beantworten. Dies ist außerdem inkompatibel " "mit dem Teilen der Internetverbindung durch die {box_name}." -#: plinth/modules/bind/__init__.py:80 +#: plinth/modules/bind/__init__.py:76 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:81 +#: plinth/modules/bind/__init__.py:77 msgid "Domain Name Server" msgstr "DNS-Server" @@ -1032,7 +1033,7 @@ msgstr "IP-Adresse und Domänen aktualisieren" #: 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:214 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 #: 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 @@ -1041,7 +1042,7 @@ msgstr "IP-Adresse und Domänen aktualisieren" msgid "Configuration updated" msgstr "Konfiguration aktualisiert" -#: plinth/modules/calibre/__init__.py:32 +#: plinth/modules/calibre/__init__.py:26 #, python-brace-format msgid "" "calibre server provides online access to your e-book collection. You can " @@ -1052,7 +1053,7 @@ msgstr "" "Ihre E-Books auf Ihrer {box_name} speichern und online oder von einem Ihrer " "Geräte aus lesen." -#: plinth/modules/calibre/__init__.py:35 +#: plinth/modules/calibre/__init__.py:29 msgid "" "You can organize your e-books, extract and edit their metadata, and perform " "advanced search. calibre can import, export, or convert across a wide range " @@ -1068,7 +1069,7 @@ msgstr "" "hervorgehobenen Text. Die Verteilung von Inhalten mit OPDS wird derzeit " "nicht unterstützt." -#: plinth/modules/calibre/__init__.py:41 +#: plinth/modules/calibre/__init__.py:35 msgid "" "Only users belonging to calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1076,15 +1077,15 @@ msgstr "" "Nur Benutzer der calibre Gruppe können auf die App zugreifen. Alle " "Benutzer mit Zugangsberechtigung können alle Bibliotheken nutzen." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Verwenden von Calibre-E-Book-Bibliotheken" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "E-Book-Bibliothek" @@ -1158,7 +1159,7 @@ msgstr "{name} gelöscht." msgid "Could not delete {name}: {error}" msgstr "{name} konnte nicht gelöscht werden: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1172,7 +1173,7 @@ msgstr "" "Zusätzlich ist eine Kommandozeile im Webbrowser enthalten, um direkt Befehle " "einzugeben." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1185,7 +1186,7 @@ msgstr "" "Anschlüsse und erweiterte Netzwerkfunktionen wie bonding, bridging und VLAN-" "Management." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1194,7 +1195,7 @@ msgstr "" "Auf sie kann von jedem Benutzer auf der " "{box_name} zugegriffen werden, der zur Administratorgruppe gehören." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1203,12 +1204,12 @@ msgstr "" "funktioniert nicht, wenn auf eine IP-Adresse als Teil der URL zugegriffen " "wird." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Serververwaltung" @@ -1222,7 +1223,7 @@ msgstr "" "Das Cockpit funktioniert nur, wenn es über die folgenden URLs aufgerufen " "wird." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1230,11 +1231,11 @@ msgstr "" "Hier können Sie einige allgemeine Konfigurationsoptionen wie Hostname, " "Domainname, Webserver-Homepage usw. festlegen." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Allgemeine Konfiguration" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1243,7 +1244,7 @@ msgstr "Allgemeine Konfiguration" msgid "Configure" msgstr "Konfigurieren" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1373,7 +1374,7 @@ msgstr "Zeige erweiterte Anwendungen und Funktionen an" msgid "Hiding advanced apps and features" msgstr "Ausblenden von erweiterten Apps und Funktionen" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1386,7 +1387,7 @@ msgstr "" "verwenden, um eine Verbindung zwischen Parteien herzustellen, die sich sonst " "nicht miteinander verbinden können." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as ejabberd müssen mit den hier angegebenen Details " "konfiguriert werden." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "VoIP-Helfer" @@ -1420,7 +1421,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Verwenden Sie das folgende geteilte Authentifizierungsgeheimnis:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1428,11 +1429,11 @@ msgstr "" "Der Netzwerk-Zeitserver hält Ihre Systemzeit synchron mit Servern im " "Internet." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Datum und Uhrzeit" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Zeit synchronisiert mit NTP-Server" @@ -1461,11 +1462,11 @@ msgstr "Fehler beim Setzen der Zeitzone: {exception}" msgid "Time zone set" msgstr "Zeitzone gesetzt" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge ist ein BitTorrent-Client mit einer Weboberfläche." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1473,17 +1474,17 @@ msgstr "" "Das Standardkennwort ist 'deluge'; Sie sollten sich aber anmelden und es " "sofort ändern, nachdem Sie diesen Dienst aktiviert haben." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Dateien mit BitTorrent herunterladen" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "BitTorrent-Webclient" @@ -1495,7 +1496,7 @@ msgstr "Download-Ordner" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent Client geschrieben in Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1503,54 +1504,54 @@ msgstr "" "Der Systemdiagnosetest wird eine Reihe von Tests auf dem System durchführen, " "um zu überprüfen, ob alle Anwendungen und Dienste funktionieren." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Diagnose" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "bestanden" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "gescheitert" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "Fehler" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "Warnung" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GiB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" "Sie sollten einige Anwendungen deaktivieren, um den Speicherverbrauch zu " "reduzieren." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Sie sollten auf diesem System keine neuen Anwendungen installieren." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1559,7 +1560,7 @@ msgstr "" "Das System hat wenig Speicherplatz: {percent_used}% verwendet, " "{memory_available}·{memory_available_unit}frei. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Wenig Speicher" @@ -1612,7 +1613,7 @@ msgstr "Ergebnis" msgid "Diagnostic Test" msgstr "Diagnose" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1620,12 +1621,12 @@ msgstr "" "diaspora* ist ein dezentrales soziales Netzwerk, in dem Sie Ihre Daten " "selbst speichern und kontrollieren können." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Verteiltes Soziales Netzwerk" @@ -1686,7 +1687,7 @@ msgstr "Registrierung neuer Benutzer aktiviert" msgid "User registrations disabled" msgstr "Registrierung neuer Benutzer deaktiviert" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1698,7 +1699,7 @@ msgstr "" "zu finden. Dadurch werden andere daran gehindert, jene Dienste zu finden, " "die von Ihrer {box_name} angeboten werden." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1716,11 +1717,11 @@ msgstr "" "der neuen IP zuweisen, und wenn jemand aus dem Internet nach Ihrem DNS-Namen " "fragt, erhält er eine Antwort mit Ihrer aktuellen IP-Adresse." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Dynamischer DNS-Client" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Dynamischer Domain-Name" @@ -1779,12 +1780,17 @@ msgstr "" "Dieses Feld leerlassen, wenn Sie das Passwort unverändert lassen möchten." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Optionaler Wert. Wenn Ihre FreedomBox {box_name} nicht direkt mit dem " "Internet verbunden ist (z. B. Verbindung über einen NAT-Router), wird diese " @@ -1865,12 +1871,18 @@ msgid "Please provide a password" msgstr "Bitte ein Passwort angeben" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Ein kostenloser Anbieter für Dynamisches DNS mittels GnuDIP ist " "beispielsweise web client Benutzer mit einem " "{box_name} Login aufgerufen werden." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn-App oder konfiguriere einen externen " "Server." -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Chatserver" @@ -2109,7 +2121,7 @@ msgstr "" "auf der Seite Systemeinstellungen " "konfigurieren." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." @@ -2117,7 +2129,7 @@ msgstr "" "Roundcube App bietet eine " "Weboberfläche für den Zugriff auf E-Mails." -#: plinth/modules/email_server/__init__.py:57 +#: plinth/modules/email_server/__init__.py:33 msgid "" "During installation, any other email servers in the system will be " "uninstalled." @@ -2125,18 +2137,14 @@ msgstr "" "Während der Installation werden alle anderen E-Mail-Server im System " "deinstalliert." -#: plinth/modules/email_server/__init__.py:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "E-Mail Server" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Betrieben mit Postfix, Dovecot und Rspamd" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "Postfix-Domänenname konfigurieren" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "Postfix-Dovecot SASL-Integration" @@ -2169,52 +2177,58 @@ msgstr "Postfix verwendet ein TLS-Zertifikat" msgid "Has a TLS certificate" msgstr "Hat ein TLS-Zertifikat" -#: plinth/modules/email_server/forms.py:15 -#, fuzzy -#| msgid "Enter a valid username." +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" -msgstr "Einen gültigen Benutzernamen eingeben." +msgstr "Eine gültige Domain eingeben" -#: plinth/modules/email_server/forms.py:18 -#, fuzzy -#| msgid "Enter a valid username." +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" -msgstr "Einen gültigen Benutzernamen eingeben." +msgstr "Ein gültiges Ziel eingeben" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "Domain" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Primäre Verbindung" + +#: 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 "Neuer Alias (ohne @Domäne)" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "Enthält unzulässige Zeichen" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "Muss mit a-z oder 0-9 beginnen und enden" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "Kann keine Zahl sein" -#: plinth/modules/email_server/forms.py:76 -#, fuzzy -#| msgid "My Aliases" +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" -msgstr "Meine Aliase" +msgstr "Aliase" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktiviert" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2223,7 +2237,7 @@ msgid "Disabled" msgstr "Deaktiviert" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2241,7 +2255,7 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "Aliase verwalten" @@ -2250,16 +2264,12 @@ msgid "You have no email aliases." msgstr "Sie haben keine E-Mail-Aliase." #: plinth/modules/email_server/templates/email_alias.html:24 -#, fuzzy -#| msgid "Disabled" msgid "Disable" -msgstr "Deaktiviert" +msgstr "Deaktivieren" #: plinth/modules/email_server/templates/email_alias.html:26 -#, fuzzy -#| msgid "Enabled" msgid "Enable" -msgstr "Aktiviert" +msgstr "Aktivieren" #: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" @@ -2270,47 +2280,28 @@ msgstr "Einen neuen E-Mail-Alias erstellen" msgid "Add" msgstr "Hinzufügen" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domains" - -#: plinth/modules/email_server/templates/email_server.html:19 -#, fuzzy -#| msgid "Manage Snapshots" +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" -msgstr "Schnappschüsse verwalten" +msgstr "Spam verwalten" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "Service-Warnung" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "Reparieren" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "Interner Fehler in {0}" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "Prüfen Sie das Syslog für weitere Informationen" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Ein Fehler ist bei der Konfiguration aufgetreten." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Einstellung unverändert" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2321,7 +2312,7 @@ msgstr "" "Verkehr Ihrer {box_name} kontrolliert. Die Firewall aktiv und korrekt " "konfiguriert halten reduziert Sicherheitsrisiken aus dem Internet." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Firewall" @@ -2445,7 +2436,7 @@ msgstr "Einrichten beginnen" msgid "Setup Complete" msgstr "Installation abgeschlossen" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2464,7 +2455,7 @@ msgstr "" "Git-Befehlszeilenclient oder mit mehreren verfügbaren Grafikclients " "hochladen. Und Sie können Ihren Code mit Menschen auf der ganzen Welt teilen." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2472,15 +2463,15 @@ msgstr "" "Um weiter über Git Betrieb zu lernen, schauen Sie sich die Gitanleitung an." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Lese- und Schreibberechtigung auf Git respositories" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Einfaches Git Hosting" @@ -2596,31 +2587,31 @@ msgstr "Archiv bearbeitet." msgid "Edit repository" msgstr "Archiv bearbeiten" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Handbuch" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Unterstützung erhalten" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Feedback geben" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2917,7 +2908,7 @@ msgstr "Über Ihre FreedomBox {box_name}" msgid "{box_name} Manual" msgstr "{box_name}-Handbuch" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2929,7 +2920,7 @@ msgstr "" "Anonymität, indem es verschlüsselten Datenverkehr über ein von Freiwilligen " "betriebenes, weltweit verteiltes Netzwerk sendet." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2937,7 +2928,7 @@ msgstr "" "Mehr Informationen über I2P finden Sie auf deren Projekt-Webseite." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2945,19 +2936,19 @@ msgstr "" "Der erste Besuch der bereitgestellten Weboberfläche leitet den " "Konfigurationsprozess ein." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "I2P-Anwendung verwalten" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Anonymisierungsnetzwerk" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P Proxy" @@ -3003,7 +2994,7 @@ msgstr "" "einem Peer-to-Peer-Netzwerk. Laden Sie Dateien herunter, indem Sie Torrents " "hinzufügen, oder erstellen Sie einen neuen Torrent, um eine Datei zu teilen." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3013,7 +3004,7 @@ msgstr "" "einfache Markup-Sprachen, einschließlich Markdown, und gängige Blogging-" "Funktionalität wie Kommentare und RSS-Feeds." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3027,15 +3018,15 @@ msgstr "" "\"{users_url}\">Benutzerkonfiguration können diese Rechte geändert oder " "neue Benutzer angelegt werden." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki und Blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Wiki-Anwendungen ansehen und bearbeiten" @@ -3114,11 +3105,11 @@ msgstr "{title} gelöscht." msgid "Could not delete {title}: {error}" msgstr "{title} konnte nicht gelöscht werden: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted ist ein Server für Gobby, den kollaborativen Text-Editor." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3129,11 +3120,11 @@ msgstr "" "Client herunterladen und installieren. Dann Gobby starten und „Mit " "Server verbinden“ auswählen und den Domainnamen Ihrer {box_name} eingeben." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Gobby-Server" @@ -3154,7 +3145,7 @@ msgstr "" "Gobby starten, „Mit Server verbinden“ auswählen und den Domainnamen Ihrer " "FreedomBox {box_name} eingeben." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3162,11 +3153,11 @@ msgstr "" "JSXC ist ein XMPP-Webclient. Er wird meist mit einem lokalen XMPP-Server " "genutzt." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Chatclient" @@ -3175,7 +3166,7 @@ msgstr "Chatclient" msgid "JavaScript license information" msgstr "JavaScript-Lizenzinformation" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3191,7 +3182,7 @@ msgstr "" "Zertifizierungsstelle Let's Encrypt nachweist, der Inhaber einer Domain zu " "sein." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3205,15 +3196,15 @@ msgstr "" "akzeptieren Sie die Let's " "Encrypt Vetragsvereinbarungen vor der Verwendung dieses Dienstes." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Zertifikate" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "Kann nicht testen: Es sind keine Domains konfiguriert." @@ -3318,7 +3309,7 @@ msgstr "Zertifikat erfolgreich widerrufen für Domain {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Fehler beim Widerrufen des Zertifikats für Domain {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3336,7 +3327,7 @@ msgstr "" "einem bestimmten Matrix Server können dank Föderation zwischen den Servern " "mit Nutzerkonten auf einem beliebigen anderen Server kommunizieren." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3346,7 +3337,7 @@ msgstr "" "Installiere die Coturn-App oder konfiguriere " "einen externen Server." -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3444,7 +3435,7 @@ msgstr "" "Zertifikat. Bitte gehen Sie zu Let's " "Encrypt, um eines zu beziehen." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3457,7 +3448,7 @@ msgstr "" "nutzen, um eine Wiki-Webseite anzubieten, um Notizen zu schreiben oder um " "mit Freunden an einem Projekt zusammen zu arbeiten." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3472,7 +3463,7 @@ msgstr "" "Seite Spezial: Konto-" "Erstellen nutzen." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3480,12 +3471,12 @@ msgstr "" "Alle mit einem Link zu diesem Wiki können es lesen. Ausschließlich " "angemeldete Nutzer können den Inhalt verändern." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3578,7 +3569,7 @@ msgstr "Standard-Thema geändert" msgid "Server URL updated" msgstr "Server-URL aktualisiert" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3591,11 +3582,11 @@ msgstr "" "Standardport (30000). Um auf dem Server zu spielen, wird ein Minetest-Client benötigt." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Block-Sandkasten" @@ -3669,7 +3660,7 @@ msgstr "Spieler-gegen-Spieler-Konfiguration aktualisiert" msgid "Damage configuration updated" msgstr "Schaden-Konfiguration aktualisiert" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3687,15 +3678,15 @@ msgstr "" "Smartphones, Fernseher und Gaming-Systeme (wie PS3 und Xbox 360) oder " "Anwendungen wie Totem und Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Medien-Streaming-Server" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Einfacher Medienserver" @@ -3741,7 +3732,7 @@ msgstr "Das angegebene Verzeichnis ist nicht vorhanden." msgid "Updated media directory" msgstr "Aktualisiertes Medienverzeichnis" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3751,7 +3742,7 @@ msgstr "" "auszutauschen. Es kann in mehreren Peer-to-Peer-Netzwerken teilnehmen, unter " "anderem eDonkey, Kademlia, Overnet, BitTorrent und DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3762,7 +3753,7 @@ msgstr "" "der separaten mobilen oder Desktop-Frontends oder eine Telnet-Schnittstelle " "steuern. Siehe Handbuch." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3770,16 +3761,16 @@ msgstr "" "Auf {box_name} können heruntergeladene Dateien im Verzeichnis /var/lib/" "mldonkey/ gefunden werden." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Dateien mit eDonkey herunterladen" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Peer-to-Peer-Datenaustausch" @@ -3791,7 +3782,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3812,7 +3803,7 @@ msgstr "" "die Monkeysphere-SSH-Dokumentation für weitere Details." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3831,7 +3822,7 @@ msgstr "" "monkeysphere.info/download/\">Monkeysphere-Webseite zur Verfügung steht, " "installieren." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3850,6 +3841,10 @@ msgstr "Abbrechen" msgid "Service" msgstr "Dienst" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domains" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3956,7 +3951,7 @@ msgstr "Veröffentlichte Schlüssel auf dem Server." msgid "Error occurred while publishing key." msgstr "Fehler beim Veröffentlichen des Schlüssels." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3964,7 +3959,7 @@ msgstr "" "Mumble ist eine hochwertige quelloffene Software für Telefonie und Chat, mit " "Verschlüsselung und geringer Latenz." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3974,11 +3969,11 @@ msgstr "" "verbinden. Auf Mumble finden Sie " "Anwendungen, um sich vom Desktop oder Android-Gerät mit Mumble zu verbinden." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Sprachkonferenz" @@ -4007,7 +4002,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "SuperUser-Kennwort wurde erfolgreich aktualisiert." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -4020,7 +4015,7 @@ msgstr "" "jeden Namens-Typ wird angezeigt, ob die HTTP-, HTTPS- und SSH-Dienste für " "eingehende Verbindungen eingeschaltet oder ausgeschaltet ist." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Namen-Dienste" @@ -4036,7 +4031,7 @@ msgstr "Alle Webanwendungen" msgid "Services" msgstr "Dienste" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4045,7 +4040,7 @@ msgstr "" "eine Verbindung zum Internet her. Teilen Sie diese Verbindung mit anderen " "Geräten im Netzwerk." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4053,11 +4048,11 @@ msgstr "" "Geräte die mit anderen Methoden verwaltet werden, können hier möglicherweise " "nicht konfiguriert werden." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Netzwerke" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC wird auf IPv{kind} verwendet" @@ -4621,7 +4616,7 @@ msgstr "DNS-Server" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Standard" @@ -4634,7 +4629,7 @@ msgid "This connection is not active." msgstr "Diese Verbindung ist nicht aktiv." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Sicherheit" @@ -5129,7 +5124,7 @@ msgstr "generisch" msgid "TUN or TAP interface" msgstr "TUN- bzw. TAP-Schnittstelle" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5220,7 +5215,7 @@ msgstr "Verbindung {name} gelöscht." msgid "Failed to delete connection: Connection not found." msgstr "Konnte Verbindung nicht löschen: Verbindung nicht gefunden." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5237,20 +5232,20 @@ msgstr "" "{box_name} erlangen. Sie können auch auf das Internet via {box_name} für " "zusätzliche Sicherheit und Anonymität zugreifen." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "Mit VPN-Diensten verbinden" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuelles Privates Netzwerk" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5334,7 +5329,7 @@ msgstr "" msgid "Download my profile" msgstr "Mein Profil herunterladen" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5347,19 +5342,19 @@ msgstr "" "die Dienste Ihrer {box_name} vom Internet nicht erreichbar sind. Dies " "umfasst folgende Situationen:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} ist hinter einer eingeschränkten Firewall." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} ist mit einem (wireless)-Router verbunden, den Sie nicht " "kontrollieren." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5367,7 +5362,7 @@ msgstr "" "Ihr ISP bietet Ihnen keine externe IP-Adresse, sondern statt dessen eine " "Internetverbindung über NAT." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5375,11 +5370,11 @@ msgstr "" "Ihr ISP bietet keine statische IP-Adresse und Ihre IP-Adresse ändert sich " "immer, wenn Sie sich mit dem Internet verbinden." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Ihr ISP schränkt eingehende Verbindungen ein." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5393,15 +5388,15 @@ msgstr "" "\"https://pagekite.net\">pagekite.net. In der Zukunft könnte es möglich " "sein, hierfür die {box_name} eines Freundes zu nutzen." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Öffentliche Sichtbarkeit" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "PageKite Domäne" @@ -5547,12 +5542,12 @@ msgstr "" "Siehe SSH-Client Konfigurationsanweisungen" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Leistung" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5563,7 +5558,7 @@ msgstr "" "Nutzungsmuster und darüber geben, ob die Hardware von Benutzern und Diensten " "überlastet ist." -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5571,15 +5566,15 @@ msgstr "" "Leistungskennzahlen werden von Performance Co-Pilot erfasst und können in " "der Cockpit-App angezeigt werden." -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Systemüberwachung" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Neu starten oder das System herunterfahren." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Power" @@ -5643,7 +5638,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Jetzt herunterfahren" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5654,7 +5649,7 @@ msgstr "" "kontrolliert den Zugang und entfernt Werbung und anderen abscheulichen " "Internet-Müll. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5669,20 +5664,20 @@ msgstr "" "unter http://config.privoxy.org/ " "oder http://p.p einsehen." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Zugang auf {url} über Proxy {proxy} auf TCP{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5700,7 +5695,7 @@ msgstr "" "mobilen App können verwendet werden, um sich mit ihm zu verbinden und oder " "zu trennen." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your Desktop und mobile Telefone zur Verfügung." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "IRC-Client" @@ -5724,7 +5719,7 @@ msgstr "IRC-Client" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5739,7 +5734,7 @@ msgstr "" "supported-clients\">unterstützte Client Software notwendig. Radicale " "kann von jedem Benutzer mit einem {box_name}-Konto verwendet werden." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5750,12 +5745,12 @@ msgstr "" "Kontaktdaten wird nicht unterstützt; dies muss über einen separaten Client " "erfolgen." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Kalender und Adressbuch" @@ -5837,7 +5832,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Konfiguration der Zugangsrechte aktualisiert" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5850,7 +5845,7 @@ msgstr "" "wie zum Beispiel MIME-Unterstützung, Adressbuch, Ordnerverwaltung, Suche in " "den Nachrichten und Rechtschreibprüfung." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5864,7 +5859,7 @@ msgstr "" "code>. Bei IMAP über SSL (empfohlen) füllen Sie das Server-Feld aus, z. B. " "imaps://imap.beispiel.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5881,11 +5876,11 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "E-Mail-Client" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5893,7 +5888,7 @@ msgstr "" "Samba ermöglicht das Teilen von Dateien und Ordnern zwischen der FreedomBox " "und anderen Rechnern im lokalen Netzwerk." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5907,11 +5902,11 @@ msgstr "" "Windows) oder smb://{hostname}.local (unter Linux und Mac) zugegriffen " "werden. Es gibt drei Arten von Shares, aus denen Sie wählen können: " -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "Offene Freigabe - für alle in Ihrem lokalen Netzwerk zugänglich." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5919,7 +5914,7 @@ msgstr "" "Gruppenfreigabe - nur für FreedomBox-Benutzer zugänglich, die sich in der " "Freedombox-Freigabegruppe befinden." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5927,15 +5922,15 @@ msgstr "" "Home Share - jeder Benutzer in der freedombox-share-Gruppe kann seinen " "eigenen privaten Raum haben." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Zugriff auf die privaten Freigaben" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Netzwerkdateispeicherung" @@ -6023,11 +6018,11 @@ msgstr "Aktion" msgid "FreedomBox OS disk" msgstr "FreedomBox OS Datenträger" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Open Share" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Group Share" @@ -6053,7 +6048,7 @@ msgstr "Freigabe deaktiviert." msgid "Error disabling share: {error_message}" msgstr "Fehler beim Deaktivieren der Freigabe: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6061,7 +6056,7 @@ msgstr "" "Searx ist eine Internet-Metasuchmaschine, die die Privatsphäre respektiert. " "Sie sammelt und zeigt Ergebnisse von mehreren Suchmaschinen an." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6069,15 +6064,15 @@ msgstr "" "Searx kann verwendet werden, um Nachverfolgung und Profiling durch " "Suchmaschinen zu vermeiden. Standardmäßig werden keine Cookies gespeichert." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Suche im Web" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Websuche" @@ -6261,11 +6256,11 @@ msgstr "Fehler beim Setzen des eingeschränkten Zugriffs: {exception}" msgid "Updated security configuration" msgstr "Sicherheitskonfiguration aktualisiert" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli ermöglicht das Speichern und Teilen von Lesezeichen." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6273,15 +6268,15 @@ msgstr "" "Beachten Sie, dass Shaarli nur ein einziges Benutzerkonto unterstützt, das " "Sie bei Ihrem ersten Besuch einrichten müssen." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Lesezeichen" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6291,7 +6286,7 @@ msgstr "" "Internetverkehr zu schützen. Er kann verwendet werden, um Internetfilterung " "und -zensur zu umgehen." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6304,7 +6299,7 @@ msgstr "" "betrieben. Lokale Geräte können sich mit diesem Proxy verbinden, und deren " "Daten werden verschlüsselt über den Shadowsocks-Server weitergeleitet." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6313,11 +6308,11 @@ msgstr "" "SOCKS5-Proxy in ihrem Gerät, Browser, oder Anwendung auf http://" "Freedombox_Adresse:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Socks5-Proxy" @@ -6350,7 +6345,7 @@ msgstr "" "Verschlüsselungsverfahren. Muss mit der Einstellung des Servers " "übereinstimmen." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6459,7 +6454,7 @@ msgstr "Freigabe bearbeiten" msgid "Share deleted." msgstr "Freigabe gelöscht." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6470,7 +6465,7 @@ msgstr "" "unerwünschte Änderungen in einen vorherigen bekannten guten Zustand zurück " "zu versetzen." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6482,7 +6477,7 @@ msgstr "" "Software. Ältere Schnappschüsse werden gemäß den Einstellungen unten " "automatisch bereinigt." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for Datensicherungen, da sie nur auf derselben " "Partition gespeichert werden können. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Speicherauszüge" @@ -6701,7 +6696,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "Zurücksetzen auf Speicherauszug" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6713,7 +6708,7 @@ msgstr "" "verifizierter, entfernter Computer Verwaltungsaufgaben ausführen, Dateien " "kopieren oder andere Anwendungen starten." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) Server" @@ -6760,7 +6755,7 @@ msgstr "SSH-Authentifizierung mit Passwort deaktiviert." msgid "SSH authentication with password enabled." msgstr "SSH-Authentifizierung mit Passwort aktiviert." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Einmal-Anmeldung" @@ -6768,7 +6763,7 @@ msgstr "Einmal-Anmeldung" msgid "Login" msgstr "Anmelden" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6780,109 +6775,109 @@ msgstr "" "Speichermedien einsehen, Wechselmedien einbinden und aushängen, die Root-" "Partition erweitern usw." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Speicher" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} Bytes" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Der Vorgang schlug fehl." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Der Vorgang wurde abgebrochen." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Das Gerät wird bereits ausgehängt." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Der Vorgang ist wegen fehlender Treiber-/Werkzeugunterstützung nicht möglich." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "Der Vorgang beendet wegen Zeitüberschreitung." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "Dieser Vorgang würde ein Gerät aufwecken, welches sich in einem Tiefschlaf-" "Zustand befindet." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Es wird versucht, ein Gerät auszuhängen, das beschäftigt ist." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "Dieser Vorgang wurde bereits abgebrochen." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "Nicht autorisiert, um den gewünschten Vorgang auszuführen." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Dieses Gerät ist bereits eingebunden." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Das Gerät ist nicht eingebunden." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "Die gewünschte Option ist nicht gestattet." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Das Gerät ist von einem anderen Benutzer eingebunden." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Geringer Speicherplatz auf der Systempartition: {percent_used}% belegt, " "{free_space} verfügbar." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Wenig Plattenspeicherplatz" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "Festplattenfehler unmittelbar bevorstehend" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6892,39 +6887,39 @@ msgstr "" "Kopieren Sie alle Daten, solange Sie noch können, und ersetzen Sie das " "Laufwerk." -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Ungültiger Verzeichnisname." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Verzeichnis ist nicht vorhanden." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Pfad ist kein Verzeichnis." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "Verzeichnis ist für den Benutzer nicht lesbar." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "Das Verzeichnis ist für den Benutzer nicht beschreibbar." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Verzeichnis" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Unterverzeichnis (optional)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Freigeben" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Anderes Verzeichnis (unten angeben)" @@ -7009,7 +7004,7 @@ msgstr "Gerät kann sicher entfernt werden." msgid "Error ejecting device: {error_message}" msgstr "Fehler beim Auswerfen des Geräts: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7021,7 +7016,7 @@ msgstr "" "Modifikation oder Löschen von Dateien auf einem Gerät wird automatisch auf " "allen anderen Geräten reproduziert, auf denen Syncthing läuft." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7041,20 +7036,20 @@ msgstr "" "{box_name} ist nur für Benutzer der \"Admin\" oder \"Syncthing-access\"-" "Gruppe zugänglich." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Syncthing-Anwendung einstellen" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Dateisynchronisation" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7067,7 +7062,7 @@ msgstr "" "Knoten ausfallen, können Ihre Dateien von den restlichen Knoten " "wiederhergestellt werden." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7078,11 +7073,11 @@ msgstr "" "LAFS \"Introducer\". Sie können zusätzliche Introducer einstellen, welche " "diesen Speicherknoten bei weiteren Speicherknoten anmelden können." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Verteilter Dateispeicher" @@ -7122,7 +7117,7 @@ msgstr "Verbundene Vermittler" msgid "Remove" msgstr "Entfernen" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7136,40 +7131,40 @@ msgstr "" "Sie den Tor Browser verwenden." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Tor-Onion-Dienste" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Tor-Socks-Proxy" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Tor-Bridge-Relay" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Tor-Relay-Port ist verfügbar" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3-Transport registriert" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4-Transport registriert" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Zugangs-URL {url} auf TCP{kind} über Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Tor-Nutzung auf {url} über TCP{kind} bestätigen" @@ -7323,11 +7318,15 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Tor SOCKS-Port ist auf Ihrer %(box_name)s auf TCP port 9050 verfügbar." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Einstellung unverändert" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission ist ein BitTorrent-Client mit einer Weboberfläche." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7335,16 +7334,16 @@ msgstr "" "BitTorrent ist ein Peer-to-Peer Protokoll zum Teilen von Dateien. Es gilt zu " "beachten: BitTorrent ist nicht anonym." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "Bitte ändern Sie den Standardport des Transmission Daemons nicht." -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7353,7 +7352,7 @@ msgstr "" "Tiny Tiny RSS ist ein Feedreader (RSS/Atom), der von jedem Browser aus " "genutzt werden kann, sich aber sehr wie eine normale Anwendung anfühlt." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any Benutzer mit einem {box_name} Login aufgerufen werden." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7371,15 +7370,15 @@ msgstr "" "verwenden Sie die URL /tt-rss-app für die " "Verbindung." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Lesen und Abonnieren von Neuigkeiten-Feeds" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Feedreader" @@ -7387,14 +7386,14 @@ msgstr "Feedreader" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Suchen Sie nach den neuesten Software- und Sicherheitsupdates und " "installieren Sie diese." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7408,7 +7407,7 @@ msgstr "" "erachtet wird, erfolgt dieser automatisch um 02:00 Uhr, so dass alle " "Anwendungen kurzzeitig nicht verfügbar sind." -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7638,7 +7637,7 @@ msgstr "Starten der Aktualisierung fehlgeschlagen." msgid "Frequent feature updates activated." msgstr "Häufige Funktions-Updates aktiviert." -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7649,7 +7648,7 @@ msgstr "" "muss ein Benutzerkonto Teil einer Gruppe sein, damit ein Benutzer auf die " "App zugreifen kann." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7661,15 +7660,15 @@ msgstr "" "dürfen nur Mitglieder der Gruppe admin Apps oder " "Systemeinstellungen ändern." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Benutzer und Gruppen" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Zugriff auf alle Anwendungen und Systemeinstellungen" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP-Eintrag „{search_item}“ prüfen" @@ -7922,11 +7921,11 @@ msgstr "Passwort ändern" msgid "Password changed successfully." msgstr "Passwort erfolgreich geändert." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard ist ein schneller, moderner, sicherer VPN-Tunnel." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7936,7 +7935,7 @@ msgstr "" "herzustellen, der WireGuard unterstützt, und um den gesamten ausgehenden " "Datenverkehr von {box_name} über das VPN weiterzuleiten." -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8263,7 +8262,7 @@ msgstr "Verbindung zum Server löschen" msgid "Server deleted." msgstr "Server gelöscht." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8278,7 +8277,7 @@ msgstr "" "Verwaltungsoberfläche und die erstellten Webseiten sind für mobile Geräte " "geeignet." -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8292,7 +8291,7 @@ msgstr "" "zugreifen. Aktivieren Sie Permalinks in der Administratoroberfläche, um " "bessere URLs für Ihre Seiten und Beiträge zu erhalten." -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " @@ -8303,7 +8302,7 @@ msgstr "" "wordpress/wp-admin/\">Administrationsseite, um die " "Administrationsoberfläche in Zukunft zu erreichen." -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " @@ -8314,12 +8313,12 @@ msgstr "" "Plugins oder Themes können auf Ihr eigenes Risiko installiert und " "aktualisiert werden." -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "Internetseite und Blog" @@ -8336,7 +8335,7 @@ msgstr "" "Administratoren die WordPress-Website oder den Blog aufrufen. Aktivieren Sie " "diese Option erst nach der Ersteinrichtung von WordPress." -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8361,7 +8360,7 @@ msgstr "" "Einzelne Fotos können mit anderen geteilt werden, indem ein direkter Link " "gesendet wird." -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8372,11 +8371,11 @@ msgstr "" "Administrator in Zoph. Für zusätzliche Benutzer müssen Konten sowohl in " "{box_name} als auch in Zoph mit demselben Benutzernamen erstellt werden." -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "Foto-Manager" @@ -8415,23 +8414,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Allgemein" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Fehler bei der Installation" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "Installation läuft" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "herunterladen" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "Medienwechsel" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "Konfigurationsdatei: {file}" @@ -8809,6 +8808,12 @@ msgstr "%(percentage)s %% abgeschlossen" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Postfix domain name config" +#~ msgstr "Postfix-Domänenname konfigurieren" + +#~ msgid "Error updating configuration" +#~ msgstr "Fehler beim Aktualisieren der Konfiguration" + #~ msgid "The alias was taken" #~ msgstr "Der Alias wurde übernommen" diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index d063af7d8..b06987928 100644 --- a/plinth/locale/django.pot +++ b/plinth/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,7 +21,7 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:81 +#: plinth/context_processors.py:23 plinth/views.py:84 msgid "FreedomBox" msgstr "" @@ -30,22 +30,22 @@ msgstr "" msgid "Service {service_name} is running" msgstr "" -#: plinth/daemon.py:131 +#: plinth/daemon.py:158 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/daemon.py:135 +#: plinth/daemon.py:162 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/daemon.py:203 +#: plinth/daemon.py:230 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "" -#: plinth/daemon.py:205 +#: plinth/daemon.py:232 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "" @@ -84,31 +84,31 @@ msgstr "" msgid "Use the language preference set in the browser" msgstr "" -#: plinth/middleware.py:36 plinth/templates/setup.html:18 +#: plinth/middleware.py:38 plinth/templates/setup.html:18 msgid "Application installed." msgstr "" -#: plinth/middleware.py:41 +#: plinth/middleware.py:43 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "" -#: plinth/middleware.py:45 +#: plinth/middleware.py:47 #, python-brace-format msgid "Error installing application: {error}" msgstr "" -#: plinth/modules/apache/__init__.py:42 +#: plinth/modules/apache/__init__.py:33 msgid "Apache HTTP Server" msgstr "" -#: plinth/modules/apache/__init__.py:48 +#: plinth/modules/apache/__init__.py:41 #: plinth/modules/monkeysphere/templates/monkeysphere.html:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:46 msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:54 +#: plinth/modules/apache/__init__.py:47 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -123,7 +123,7 @@ msgstr "" msgid "Access URL {url}" msgstr "" -#: plinth/modules/avahi/__init__.py:36 +#: plinth/modules/avahi/__init__.py:26 #, python-brace-format msgid "" "Service discovery allows other devices on the network to discover your " @@ -134,48 +134,48 @@ msgid "" "network." msgstr "" -#: plinth/modules/avahi/__init__.py:60 +#: plinth/modules/avahi/__init__.py:51 msgid "Service Discovery" msgstr "" -#: plinth/modules/avahi/__init__.py:73 +#: plinth/modules/avahi/__init__.py:64 msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:35 +#: plinth/modules/backups/__init__.py:27 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:56 plinth/modules/backups/__init__.py:208 -#: plinth/modules/backups/__init__.py:253 +#: plinth/modules/backups/__init__.py:50 plinth/modules/backups/__init__.py:202 +#: plinth/modules/backups/__init__.py:247 msgid "Backups" msgstr "" -#: plinth/modules/backups/__init__.py:205 +#: plinth/modules/backups/__init__.py:199 msgid "" "Enable an automatic backup schedule for data safety. Prefer an encrypted " "remote backup location or an extra attached disk." msgstr "" -#: plinth/modules/backups/__init__.py:211 +#: plinth/modules/backups/__init__.py:205 msgid "Enable a Backup Schedule" msgstr "" -#: plinth/modules/backups/__init__.py:215 -#: plinth/modules/backups/__init__.py:262 -#: plinth/modules/storage/__init__.py:331 +#: plinth/modules/backups/__init__.py:209 +#: plinth/modules/backups/__init__.py:256 +#: plinth/modules/storage/__init__.py:329 #, python-brace-format msgid "Go to {app_name}" msgstr "" -#: plinth/modules/backups/__init__.py:250 +#: plinth/modules/backups/__init__.py:244 #, python-brace-format msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " "succeed. The latest error is: {error_message}" msgstr "" -#: plinth/modules/backups/__init__.py:258 +#: plinth/modules/backups/__init__.py:252 msgid "Error During Backup" msgstr "" @@ -692,7 +692,7 @@ msgstr "" msgid "Mounting failed" msgstr "" -#: plinth/modules/bepasty/__init__.py:25 +#: plinth/modules/bepasty/__init__.py:21 msgid "" "bepasty is a web application that allows large files to be uploaded and " "shared. Text and code snippets can also be pasted and shared. Text, image, " @@ -700,7 +700,7 @@ msgid "" "can be set to expire after a time period." msgstr "" -#: plinth/modules/bepasty/__init__.py:29 +#: plinth/modules/bepasty/__init__.py:25 msgid "" "bepasty does not use usernames for login. It only uses passwords. For each " "password, a set of permissions can be selected. Once you have created a " @@ -708,7 +708,7 @@ msgid "" "permissions." msgstr "" -#: plinth/modules/bepasty/__init__.py:33 +#: plinth/modules/bepasty/__init__.py:29 msgid "" "You can also create multiple passwords with the same set of privileges, and " "distribute them to different people or groups. This will allow you to later " @@ -716,39 +716,39 @@ msgid "" "the list." msgstr "" -#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +#: plinth/modules/bepasty/__init__.py:38 plinth/modules/bepasty/__init__.py:47 msgid "Read a file, if a web link to the file is available" msgstr "" -#: plinth/modules/bepasty/__init__.py:43 +#: plinth/modules/bepasty/__init__.py:39 msgid "Create or upload files" msgstr "" -#: plinth/modules/bepasty/__init__.py:44 +#: plinth/modules/bepasty/__init__.py:40 msgid "List all files and their web links" msgstr "" -#: plinth/modules/bepasty/__init__.py:45 +#: plinth/modules/bepasty/__init__.py:41 msgid "Delete files" msgstr "" -#: plinth/modules/bepasty/__init__.py:46 +#: plinth/modules/bepasty/__init__.py:42 msgid "Administer files: lock/unlock files" msgstr "" -#: plinth/modules/bepasty/__init__.py:50 +#: plinth/modules/bepasty/__init__.py:46 msgid "None, password is always required" msgstr "" -#: plinth/modules/bepasty/__init__.py:52 +#: plinth/modules/bepasty/__init__.py:48 msgid "List and read all files" msgstr "" -#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:6 +#: plinth/modules/bepasty/__init__.py:63 plinth/modules/bepasty/manifest.py:6 msgid "bepasty" msgstr "" -#: plinth/modules/bepasty/__init__.py:67 +#: plinth/modules/bepasty/__init__.py:65 msgid "File & Snippet Sharing" msgstr "" @@ -845,9 +845,10 @@ msgstr "" msgid "Configuration updated." msgstr "" -#: plinth/modules/bepasty/views.py:93 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 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: 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 msgid "An error occurred during configuration." msgstr "" @@ -863,13 +864,13 @@ msgstr "" msgid "Password deleted." msgstr "" -#: plinth/modules/bind/__init__.py:31 +#: plinth/modules/bind/__init__.py:25 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." msgstr "" -#: plinth/modules/bind/__init__.py:35 +#: plinth/modules/bind/__init__.py:29 #, python-brace-format msgid "" "Currently, on {box_name}, BIND is only used to resolve DNS queries for other " @@ -877,11 +878,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:80 +#: plinth/modules/bind/__init__.py:76 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:81 +#: plinth/modules/bind/__init__.py:77 msgid "Domain Name Server" msgstr "" @@ -934,7 +935,7 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:214 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 #: 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 @@ -943,7 +944,7 @@ msgstr "" msgid "Configuration updated" msgstr "" -#: plinth/modules/calibre/__init__.py:32 +#: plinth/modules/calibre/__init__.py:26 #, python-brace-format msgid "" "calibre server provides online access to your e-book collection. You can " @@ -951,7 +952,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/calibre/__init__.py:35 +#: plinth/modules/calibre/__init__.py:29 msgid "" "You can organize your e-books, extract and edit their metadata, and perform " "advanced search. calibre can import, export, or convert across a wide range " @@ -960,21 +961,21 @@ msgid "" "highlighted text. Content distribution using OPDS is currently not supported." msgstr "" -#: plinth/modules/calibre/__init__.py:41 +#: plinth/modules/calibre/__init__.py:35 msgid "" "Only users belonging to calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1046,7 +1047,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1055,7 +1056,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1063,25 +1064,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1093,17 +1094,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1112,7 +1113,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1226,7 +1227,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1234,7 +1235,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1701,7 +1701,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1728,13 +1728,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1846,30 +1846,26 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1902,46 +1898,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1950,7 +1956,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1968,7 +1974,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -1993,43 +1999,28 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2037,7 +2028,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2144,7 +2135,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2155,21 +2146,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2281,31 +2272,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2530,7 +2521,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2538,31 +2529,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2599,14 +2590,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2615,15 +2606,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2700,11 +2691,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2712,11 +2703,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2735,17 +2726,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2754,7 +2745,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2764,7 +2755,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2772,15 +2763,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2881,7 +2872,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2891,14 +2882,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -2969,7 +2960,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2977,7 +2968,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2986,18 +2977,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3079,7 +3070,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3088,11 +3079,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3158,7 +3149,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3169,15 +3160,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3217,36 +3208,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3258,7 +3249,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3270,7 +3261,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3281,7 +3272,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3300,6 +3291,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3403,24 +3398,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3446,7 +3441,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3455,7 +3450,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3471,23 +3466,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3955,7 +3950,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -3968,7 +3963,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4409,7 +4404,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4498,7 +4493,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4509,20 +4504,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4586,7 +4581,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4595,33 +4590,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4630,15 +4625,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4772,33 +4767,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4851,14 +4846,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4868,20 +4863,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4892,7 +4887,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4912,7 +4907,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4922,19 +4917,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5001,7 +4996,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5009,7 +5004,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5018,7 +5013,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5028,17 +5023,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5047,31 +5042,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5149,11 +5144,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5179,27 +5174,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5354,32 +5349,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5388,17 +5383,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5427,7 +5422,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5527,14 +5522,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5542,14 +5537,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5739,7 +5734,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5747,7 +5742,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5788,7 +5783,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5796,7 +5791,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5804,143 +5799,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6015,7 +6010,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6023,7 +6018,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6035,20 +6030,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6056,7 +6051,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6064,11 +6059,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6103,7 +6098,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6112,40 +6107,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6271,54 +6266,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6326,12 +6325,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6339,7 +6338,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6535,14 +6534,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6550,15 +6549,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6784,18 +6783,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7089,7 +7088,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7098,7 +7097,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7107,26 +7106,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7140,7 +7139,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7153,7 +7152,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7161,11 +7160,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7199,23 +7198,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 7aefed775..63a61d10f 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-04-14 04:27+0000\n" "Last-Translator: Michalis \n" "Language-Team: Greek calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1179,7 +1180,7 @@ msgstr "το {name} διαγράφηκε." msgid "Could not delete {name}: {error}" msgstr "Δεν ήταν δυνατή η διαγραφή του {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1193,7 +1194,7 @@ msgstr "" "λειτουργίες οι οποίες συνήθως δεν θέλουν αλλαγές. Επιπλέον το Cockpit " "παρέχει λειτουργίες κονσόλας σε ένα τερματικό στο πρόγραμμα περιήγησης ιστού." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1201,7 +1202,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1210,7 +1211,7 @@ msgstr "" "To πρόγραμμα είναι προσβάσιμο στο URL από " "οποιοσδήποτε χρήστης στο {box_name} που ανήκει στην ομάδα διαχειριστών." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1219,12 +1220,12 @@ msgstr "" "λειτουργήσει όταν αποκτάτε πρόσβαση χρησιμοποιώντας μια διεύθυνση IP ως " "μέρος της διεύθυνσης URL." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Διαχείριση διακομιστή" @@ -1238,7 +1239,7 @@ msgstr "" "To Cockpit θα λειτουργήσει μόνο όταν έχετε πρόσβαση σε αυτό χρησιμοποιώντας " "τις ακόλουθες διευθύνσεις URL." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1247,11 +1248,11 @@ msgstr "" "υπολογιστή, το όνομα διαδικτύου σας, την κεντρική ιστοσελίδα του διακομιστή " "διαδικτύου κλπ." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Γενικές ρυθμίσεις" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1260,7 +1261,7 @@ msgstr "Γενικές ρυθμίσεις" msgid "Configure" msgstr "Ρυθμίσετε" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1395,7 +1396,7 @@ msgstr "Εμφανίζονται προηγμένες εφαρμογές και msgid "Hiding advanced apps and features" msgstr "Απόκρυψη προηγμένων εφαρμογών και χαρακτηριστικών" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1403,7 +1404,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Εάν ψάχνετε για ένα δωρεάν λογαριασμό δυναμικού DNS, μπορείτε να βρείτε μια " "δωρεάν GnuDIP υπηρεσια στο web clientπιστοποιητικά για το {box_name}." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Διακομιστής συνομιλίας" @@ -2126,34 +2138,28 @@ msgstr "" "%(domainname)s. Μπορείτε να ρυθμίσετε το όνομα της υπηρεσίας στο Ρυθμίστε page." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Διακομιστής συνομιλίας" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Σφάλμα κατά τη ρύθμιση ονόματος διδαδικτύου: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2190,54 +2196,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Δεν υπάρχει πιστοποιητικό" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "Μη έγκυρο όνομα διακομιστή" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "Μη έγκυρο όνομα διακομιστή" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Όνομα διαδικτύου" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Repositories" msgid "Aliases" msgstr "Διαχείριση αποθετηρίων" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Ενεργοποιήθηκε" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2246,7 +2264,7 @@ msgid "Disabled" msgstr "Απενεργοποιήθηκε" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2266,7 +2284,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Repositories" msgid "Manage Aliases" @@ -2299,49 +2317,32 @@ msgstr "Δημιουργία νέου αντιγράφου ασφαλείας" msgid "Add" msgstr "Προσθήκη" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Ονόματα διαδικτύου" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "Διαχείριση στιγμιότυπων" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Τύπος υπηρεσίας" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Παρουσιάστηκε σφάλμα κατά τη ρύθμιση παραμέτρων." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Οι ρυθμίσεις δεν άλλαξαν" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2353,7 +2354,7 @@ msgstr "" "προστασίας ενεργοποιημένο και η σωστή ρύθμιση παραμέτρων μειώνει τον κίνδυνο " "απειλών προερχόμενων από το Internet." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Firewall (τείχος προστασίας)" @@ -2474,7 +2475,7 @@ msgstr "Έναρξη εγκατάστασης" msgid "Setup Complete" msgstr "Η εγκατάσταση ολοκληρώθηκε" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2493,7 +2494,7 @@ msgstr "" "πολλαπλές διαθέσιμες γραφικές εφαρμογές-πελάτες. Και μπορείτε να μοιραστείτε " "τον κώδικά σας με τους ανθρώπους σε όλο τον κόσμο." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2501,15 +2502,15 @@ msgstr "" "Για να μάθετε περισσότερα για το git μάθημα git." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Πρόσβαση ανάγνωσης και εγγραφής σε αποθετήρια Git" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Απλό Hosting Git" @@ -2631,11 +2632,11 @@ msgstr "To αποθετήριο τροποποιήθηκε." msgid "Edit repository" msgstr "Τροποποίηση αποθετηρίου" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Boηθητικά έγγραφα" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2643,21 +2644,21 @@ msgctxt "User guide" msgid "Manual" msgstr "Εγχειρίδιο" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Λάβετε Υποστήριξη" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Υποβάλετε σχόλια" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2970,7 +2971,7 @@ msgstr "Σχετικά με το {box_name}" msgid "{box_name} Manual" msgstr "Εγχειρίδιο για το {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2982,7 +2983,7 @@ msgstr "" "παρακολούθηση. Το i2p παρέχει ανωνυμία κατά την αποστολή κρυπτογραφημένης " "κυκλοφορίας μέσα από ένα εθελοντικό δίκτυο διανεμημένο σε όλο τον κόσμο." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2990,7 +2991,7 @@ msgstr "" "Βρείτε περισσότερες πληροφορίες σχετικά με το έργο τους Ι2Ρ." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2998,19 +2999,19 @@ msgstr "" "Η πρώτη επίσκεψη στο παρεχόμενο δικτυακό περιβάλλον θα ξεκινήσει τη " "διαδικασία ρύθμισης." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Διαχείριση εφαρμογής I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Δίκτυο ανωνυμίας" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Διακομιστής μεσολάβησης I2P" @@ -3056,7 +3057,7 @@ msgstr "" "to-peer δίκτυο. Κατεβάστε τα αρχεία με την προσθήκη torrents ή δημιουργήστε " "ένα νέο torrent για να μοιραστείτε ένα αρχείο." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3066,7 +3067,7 @@ msgstr "" "ελαφριές γλώσσες σήμανσης, όπως Markdown και κοινές λειτουργίες ιστολογίου, " "όπως σχόλια και τροφοδοσίες RSS." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3081,15 +3082,15 @@ msgstr "" "\"{users_url}\">ρυθμίσεις μπορεί να γίνει ρύθμιση παραμέτρων χρήστη και " "να αλλάξετε τα δικαιώματα ή να προσθέσετε νέους χρήστες." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki και Blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Προβολή και επεξεργασία εφαρμογών wiki" @@ -3169,13 +3170,13 @@ msgstr "{title} διαγράφηκε." msgid "Could not delete {title}: {error}" msgstr "Δεν ήταν δυνατή η διαγραφή του {title}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted είναι ένας διακομιστής για Γκόμπι, ένα πρόγραμμα που μπορείτε να " "συνεργαστείτε στην επεξεργασία κειμένου." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3187,11 +3188,11 @@ msgstr "" "επιλέξτε \"σύνδεση στο διακομιστή\" και πληκτρολογήστε το όνομα διαδικτύου " "σας για το {box_name}." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Gobby Server" @@ -3212,7 +3213,7 @@ msgstr "" "Ξεκινήστε το gobby και επιλέξτε \"σύνδεση στο διακομιστή\" και " "πληκτρολογήστε το όνομα domain σας {box_name}." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3220,11 +3221,11 @@ msgstr "" "Το JSXC είναι ένα πρόγραμμα-πελάτης Web για το XMPP Συνήθως χρησιμοποιείται " "με ένα διακομιστή ΧΜPP που εκτελείται στο ίδιο δίκτυο." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Πρόγραμμα-πελάτης συνομιλίας" @@ -3233,7 +3234,7 @@ msgstr "Πρόγραμμα-πελάτης συνομιλίας" msgid "JavaScript license information" msgstr "Πληροφορίες άδειας χρήσης JavaScript" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3249,7 +3250,7 @@ msgstr "" "αποδεικνύοντας ότι είναι ο ιδιοκτήτης ενός ονόματος στην υπηρεσία Let's " "Encrypt, μια αρχή έκδοσης πιστοποιητικών (CA)." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3263,15 +3264,15 @@ msgstr "" "letsencrypt.org/repository/\">Συμφωνία Συνδρομητή Lets Encrypt πριν από " "τη χρήση αυτής της υπηρεσίας." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Πιστοποιητικά" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3376,7 +3377,7 @@ msgstr "Το πιστοποιητικό διαγράφηκε επιτυχώς γ msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Αποτυχία διαγραφής πιστοποιητικού για το όνομα {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3394,14 +3395,14 @@ msgstr "" "να συνομιλήσουν με τους χρήστες σε όλες τις άλλες διακομιστές Matrix μέσω " "ομοσπονδίας." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3499,7 +3500,7 @@ msgstr "" "TLS πιστοποιητικό. Μεταβείτε στη διεύθυνση " "Lets Encrypt για να αποκτήσετε ένα." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3512,7 +3513,7 @@ msgstr "" "χρησιμοποιήσετε το wiki για να φιλοξενήσετε μια ιστοσελίδα που μοιάζει με " "wiki, να πάρετε σημειώσεις ή να συνεργαστείτε με φίλους σε έργα." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3527,7 +3528,7 @@ msgstr "" "λογαριασμούς χρηστών από το ίδιο το wiki, πηγαίνοντας στη σελίδα Δημιουργία λογαριασμού." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3535,12 +3536,12 @@ msgstr "" "Όποιος έχει μια διεύθυνση URL για αυτό το wiki μπορεί να το διαβάσει. Μόνο " "οι χρήστες που είναι συνδεδεμένοι μπορούν να κάνουν αλλαγές στο περιεχόμενο." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "Mediawiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3636,7 +3637,7 @@ msgstr "Η προεπιλεγμένη εμφάνιση άλλαξε" msgid "Server URL updated" msgstr "Το μέρισμα διαγράφηκε." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3650,11 +3651,11 @@ msgstr "" "συνδεθείτε με το διακομιστή, ένας Minetest πελάτη είναι απαραίτητος." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Μπλοκ Sandbox" @@ -3729,7 +3730,7 @@ msgstr "Η ρύθμιση PVP ενημερώθηκε" msgid "Damage configuration updated" msgstr "Η ρύθμιση ζημιών ενημερώθηκε" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3748,15 +3749,15 @@ msgstr "" "βίντεο παιχνιδιών (όπως το PS3 και το Xbox 360) ή εφαρμογές όπως το Totem " "και Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Διακομιστής ροής πολυμέσων" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Απλός διακομιστής πολυμέσων" @@ -3801,7 +3802,7 @@ msgstr "Ο καθορισμένος κατάλογος δεν υπάρχει." msgid "Updated media directory" msgstr "O κατάλογος πολυμέσων ενημερώθηκε" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3812,7 +3813,7 @@ msgstr "" "πολλαπλά ομότιμα (peer-to-peer) δίκτυα όπως το eDonkey, Kademlia, Overnet, " "BitTorrent και DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3823,7 +3824,7 @@ msgstr "" "να το ελέγξουν μέσω οποιουδήποτε ξεχωριστού κινητού ή επιτραπέζιου " "υπολογιστή ή μιας διασύνδεσης Telnet. Δείτε το εγχειρίδιο." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3831,16 +3832,16 @@ msgstr "" "Στο {box_name}, τα ληφθέντα αρχεία μπορούν να βρεθούν στον κατάλογο/var/lib/" "mldonkey/." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Λήψη αρχείων με χρήση των εφαρμογών eDonkey" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Διαμοιρασμός αρχείων σε ομότιμο δίκτυο (peer-to-peer)" @@ -3852,7 +3853,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3874,7 +3875,7 @@ msgstr "" "\"http://web.monkeysphere.info/getting-started-ssh/\">Monkeysphere έγγραφα για περισσότερες λεπτομέρειες." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3894,7 +3895,7 @@ msgstr "" "ιστότοπο Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3913,6 +3914,10 @@ msgstr "Άκυρο" msgid "Service" msgstr "Υπηρεσία" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Ονόματα διαδικτύου" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -4019,7 +4024,7 @@ msgstr "Δημοσιεύθηκε το κλειδί στο διακομιστή msgid "Error occurred while publishing key." msgstr "Παρουσιάστηκε σφάλμα κατά τη δημοσίευση του κλειδιού." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4027,7 +4032,7 @@ msgstr "" "Το mumble είναι ένα ανοικτού πηγαίου κώδικα, χαμηλής καθυστέρησης, " "κρυπτογραφημένο και υπηλής ποιότητας προγραμμα φωνητικής συνομιλίας." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4037,11 +4042,11 @@ msgstr "" "href=\"http://mumble.info\"> Πελάτες για να συνδεθείτε με το Mumble από " "τον υπολογιστή και τις συσκευές Android είναι διαθέσιμες." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Φωνητική συνομιλία" @@ -4070,7 +4075,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "Ο κωδικός πρόσβασης SuperUser Ενημερώθηκε με επιτυχία." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -4084,7 +4089,7 @@ msgstr "" "αν οι υπηρεσίες HTTP, HTTPS και SSH είναι ενεργοποιημένες ή " "απενεργοποιημένες για εισερχόμενες συνδέσεις μέσω του συγκεκριμένου ονόματος." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Υπηρεσίες ονομάτων" @@ -4102,7 +4107,7 @@ msgstr "Όλες οι εφαρμογές ιστού" msgid "Services" msgstr "Υπηρεσία" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4111,7 +4116,7 @@ msgstr "" "Ethernet, Wi-Fi ή PPPoE. Μοιραστείτε αυτήν τη σύνδεση με άλλες συσκευές στο " "δίκτυο." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4119,11 +4124,11 @@ msgstr "" "Οι συσκευές που διαχειρίζονται μέσω άλλων μεθόδων ενδέχεται να μην είναι " "διαθέσιμες για ρύθμιση παραμέτρων εδώ." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Δίκτυα" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Χρήση του DNSSEC σε IPv {kind}" @@ -4619,7 +4624,7 @@ msgstr "Διακομιστής DNS" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Προεπιλογή" @@ -4632,7 +4637,7 @@ msgid "This connection is not active." msgstr "Αυτή η σύνδεση δεν είναι ενεργή." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Ασφάλεια" @@ -5132,7 +5137,7 @@ msgstr "Γενικός" msgid "TUN or TAP interface" msgstr "Ιnterface" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5231,7 +5236,7 @@ msgstr "Η σύνδεση {name} διαγράφηκε." msgid "Failed to delete connection: Connection not found." msgstr "Απέτυχε η διαγραφή της σύνδεσης: η σύνδεση δεν βρέθηκε." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5249,22 +5254,22 @@ msgstr "" "επίσης να αποκτήσετε πρόσβαση στο υπόλοιπο Internet μέσω του {box_name} για " "πρόσθετη ασφάλεια και ανωνυμία." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "Τύπος σύνδεσης" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Εικονικό ιδιωτικό δίκτυο" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5340,7 +5345,7 @@ msgstr "" msgid "Download my profile" msgstr "Λήψη του προφίλ μου" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5353,19 +5358,19 @@ msgstr "" "υπηρεσίες δεν είναι προσβάσιμες από το υπόλοιπο Internet. Αυτό περιλαμβάνει " "τις ακόλουθες καταστάσεις:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "το {box_name} βρίσκεται πίσω από ένα περιορισμένο τείχος προστασίας." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "το {box_name} είναι συνδεδεμένο σε έναν (ασύρματο) δρομολογητή, τον οποίο " "δεν ελέγχετε." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5373,7 +5378,7 @@ msgstr "" "Ο παροχέας ιντερνετ δεν σας παρέχει εξωτερική διεύθυνση IP και αντίθετα " "παρέχει σύνδεση στο Internet μέσω δικτύου NAT." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5381,11 +5386,11 @@ msgstr "" "Ο παροχέας ιντερνετ δεν σας παρέχει μια στατική διεύθυνση IP και η διεύθυνση " "IP αλλάζει κάθε φορά που συνδέεστε στο Internet." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Ο παροχέας ιντερνετ περιορίζει τις εισερχόμενες συνδέσεις." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5399,15 +5404,15 @@ msgstr "" "παράδειγμα pagekite.net . Στο μέλλον " "μπορεί να είναι δυνατή η χρήση του {box_name} ενός φίλου σας για αυτό." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Δημόσια ορατότητα" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "Όνομα διαδικτύου Pagekite" @@ -5558,33 +5563,33 @@ msgstr "" "Δείτε το πρόγραμμα εγκατάστασης του προγράμματος-πελάτη (SSH) Οδηγίες" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Επανεκκίνηση ή κλείσιμο του συστήματος." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Ισχύς" @@ -5651,7 +5656,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Τερματισμός τώρα" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5663,7 +5668,7 @@ msgstr "" "τον έλεγχο της πρόσβασης και την κατάργηση διαφημίσεων και άλλων " "ανεπιθύμητων μηνυμάτων στο Internet. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5679,22 +5684,22 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ ή http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Διακομιστής μεσολάβησης διαδικτύου" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" "Πρόσβαση στη διεύθυνση URL {url} με διακομιστή μεσολάβησης {proxy} στο TCP " "{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5712,7 +5717,7 @@ msgstr "" "πελάτες Κουάσελ από ένα υπολογιστή ή ένα κινητό μπορούν να χρησιμοποιηθούν " "για τη σύνδεση και την αποσύνδεση από αυτό." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your υπολογιστή και κινητό είναι διαθέσιμοι." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "Πελάτης IRC" @@ -5736,7 +5741,7 @@ msgstr "Πελάτης IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5756,7 +5761,7 @@ msgstr "" "clients/\">πελάτη . Το Radicale μπορεί να προσεγγιστεί από οποιονδήποτε " "χρήστη με {box_name} πιστοποιητικά." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5767,12 +5772,12 @@ msgstr "" "γεγονότων ή επαφών, το οποίο πρέπει να γίνει χρησιμοποιώντας ένα ξεχωριστό " "πελάτη." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Ημερολόγιο και βιβλίο διευθύνσεων" @@ -5859,7 +5864,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Η διαμόρφωση των δικαιωμάτων πρόσβασης ενημερώθηκε" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5873,7 +5878,7 @@ msgstr "" "βιβλίο διευθύνσεων, χειρισμός φακέλων, Αναζήτηση μηνυμάτων και ορθογραφικό " "έλεγχο." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 #, fuzzy #| msgid "" #| "You can access Roundcube from imaps://imap." "παράδειγμα.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5915,11 +5920,11 @@ msgstr "" "settings/security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps )." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "Πρόγραμμα-πελάτης ηλεκτρονικού ταχυδρομείου" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5927,7 +5932,7 @@ msgstr "" "Το Samba επιτρέπει την κοινή χρήση αρχείων και φακέλων μεταξύ του Freedombox " "και άλλων υπολογιστών στο τοπικό σας δίκτυο." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5942,11 +5947,11 @@ msgstr "" "Υπάρχουν τρεις τύποι κοινόχρηστων αρχείων από τα οποία μπορείτε να " "επιλέξετε: " -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "Ανοιχτό μέρισμα - ορατό σε όλους τους χρήστες του τοπικού δικτύου." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5954,7 +5959,7 @@ msgstr "" "Ομαδικό μέρισμα - ορατό μόνο σε χρήστες του Freedombox που είναι στην ομάδα " "Freedombox-share." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5962,15 +5967,15 @@ msgstr "" "Οικιακό μέρισμα - κάθε χρήστης στην ομάδα freedombox-share μπορεί να έχει το " "δικό του προσωπικό διαμέρισμα στο δίσκο." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Πρόσβαση στα ιδιωτικά μερίσματα" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Distributed File Storage" msgid "Network File Storage" @@ -6077,11 +6082,11 @@ msgstr "Ενέργεια" msgid "FreedomBox OS disk" msgstr "Freedombox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Aνοικτό μέρισμα" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Ομαδικό μέρισμα" @@ -6107,7 +6112,7 @@ msgstr "Το μέρισμα απενεργοποιήθηκε." msgid "Error disabling share: {error_message}" msgstr "Σφάλμα κατά την απενεργοποίηση του μερίσματος: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6116,7 +6121,7 @@ msgstr "" "ιδιωτικότητα. Μαζεύει και εμφανίζει αποτελέσματα από πολλαπλές μηχανές " "αναζήτησης." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6125,15 +6130,15 @@ msgstr "" "δημιουργία προφίλ χρήστη από τις μηχανές αναζήτησης. Δεν αποθηκεύει cookies " "από προεπιλογή." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Αναζήτηση στο διαδίκτυο" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Διαδικτυακή αναζήτηση" @@ -6311,12 +6316,12 @@ msgstr "Σφάλμα κατά τη ρύθμιση περιορισμένης π msgid "Updated security configuration" msgstr "Ενημερώθηκαν οι ρυθμίσεις παραμέτρων ασφαλείας" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" "To Shaarli σας επιτρέπει να αποθηκεύσετε και να μοιραστείτε σελιδοδείκτες." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from αντίγραφα ασφαλείας επειδή " "μπορούν να αποθηκευτούν μόνο στο ίδιο διαμέρισμα του δίσκου. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Στιγμιότυπα συστήματος αρχείων" @@ -6773,7 +6778,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "Επαναφορά σε στιγμιότυπο" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6786,7 +6791,7 @@ msgstr "" "αντιγράψει αρχεία ή να εκτελέσει άλλες υπηρεσίες χρησιμοποιώντας αυτές τις " "συνδέσεις." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Διακομιστής SSH" @@ -6833,7 +6838,7 @@ msgstr "Έλεγχος ταυτότητας SSH με κωδικό πρόσβασ msgid "SSH authentication with password enabled." msgstr "Έλεγχος ταυτότητας SSH με κωδικό πρόσβασης ενεργοποιήθηκε." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Ενιαία είσοδος" @@ -6841,7 +6846,7 @@ msgstr "Ενιαία είσοδος" msgid "Login" msgstr "Σύνδεση" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6853,92 +6858,92 @@ msgstr "" "χρησιμοποιούνται προς το παρόν, να προσθέσετε και να αφαιρέσετε αφαιρούμενα " "μέσα, επεκτείνετε το root διαμέρισμα κλπ." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Χώρος Αποθήκευσης" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Η ενέργεια απέτυχε." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Η ενέργεια ακυρώθηκε." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Η συσκευή είναι ήδη προς αφαίρεση." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "Η ενέργεια δεν υποστηρίζεται λόγω μη υποστήριξης προγραμματος οδηγού." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "Η ενέργεια απέτυχε επειδή διήρκησε πολύ χρόνο." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "Η ενέργεια θα ξυπνήσει ένα δίσκο που είναι σε μια βαθιά κατάσταση ύπνου." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Γίνεται προσπάθεια αφαίρεσης μιας συσκευής που είναι απασχολημένη." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "Η ενέργια έχει ήδη ακυρωθεί." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Η συσκευή έχει ήδη προστεθεί." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Η συσκευή δεν είναι τοποθετημένη." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Η συσκευή έχει ήδη προστεθεί από άλλο χρήστη." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -6948,54 +6953,54 @@ msgstr "" "Προειδοποίηση: χαμηλός χώρος στο διαμέρισμα του συστήματος ({percent_used}% " "χρησιμοποιείται, {free_space} είναι ελεύθερος)." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Το όνομα καταλόγου δεν είναι έγκυρο." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Ο κατάλογος δεν υπάρχει." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Το μονοπάτι δεν είναι κατάλογος." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "Ο κατάλογος δεν είναι αναγνώσιμος από τον χρήστη." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "Ο κατάλογος δεν είναι εγγράψιμος από το χρήστη." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Κατάλογος" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Υποκατάλογος (προαιρετικό)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Κοινοποίηση" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Άλλος κατάλογος (Καθορίστε παρακάτω)" @@ -7076,7 +7081,7 @@ msgstr "Η συσκευή μπορεί να αποσυνδεθεί με ασφά msgid "Error ejecting device: {error_message}" msgstr "Σφάλμα κατά την αφαίρεση της συσκευής: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7088,7 +7093,7 @@ msgstr "" "δημιουργία, η τροποποίηση ή η διαγραφή αρχείων σε μία συσκευή θα αναπαραχθεί " "αυτόματα σε όλες τις άλλες συσκευές που εκτελούν επίσης το Syncthing." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, fuzzy, python-brace-format #| msgid "" #| "Running Syncthing on {box_name} provides an extra synchronization point " @@ -7115,20 +7120,20 @@ msgstr "" "{box_name} είναι διαθέσιμη μόνο για χρήστες που ανήκουν στην ομάδα \"admin" "\" (διαχειριστών)." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Διαχειριστείτε την εφαρμογή Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Συγχρονισμός αρχείων" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7141,7 +7146,7 @@ msgstr "" "και αν κάποιοι κόμβοι αποτυγχάνουν, τα αρχεία μπορούν να ανακτηθούν από τους " "υπόλοιπους κόμβους." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7152,11 +7157,11 @@ msgstr "" "από προεπιλογή. Πρόσθετοι \"εισαγωγείς\" μπορούν να προστεθούν, οι οποίοι θα " "διαφημίσουν αυτόν τον κόμβο στους άλλους κόμβους αποθήκευσης." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Διανεμημένος χώρος αποθήκευσης αρχείων" @@ -7196,7 +7201,7 @@ msgstr "Συνδεδεμένοι εισαγωγείς" msgid "Remove" msgstr "Αφαίρεση" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7210,40 +7215,40 @@ msgstr "" "Project συνιστά να χρησιμοποιήσετε το πρόγραμμα περιήγησης διαδικτύου Tor." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Υπηρεσία κρεμυδιού Tor" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Tor διακομιστής μεσολάβησης τύπου socks5" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Γέφυρα/μεσολαβητής Tor" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Θύρα μεσολαβητή Tor διαθέσιμη" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 μεταφορά καταχωρήθηκε" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 μεταφορά καταχωρήθηκε" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Πρόσβαση στη διεύθυνση URL {url} με tcp {kind} μέσω του Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Επιβεβαίωση χρήσης του Tor στο {url} στο προτόκολλο TCP {kind}" @@ -7397,13 +7402,17 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Μια θύρα Tor SOCKS είναι διαθέσιμη στη θύρα 9050 του %(box_name)s σας." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Οι ρυθμίσεις δεν άλλαξαν" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission είναι ένα πρόγραμμα-πελάτης BitTorrent που διαθέτει ένα " "περιβάλλον εργασίας χρήστη προσβάσιμο από τον περιηγητή ιστού." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7411,16 +7420,16 @@ msgstr "" "Το BitTorrent είναι ένα ομότιμο πρωτόκολλο κοινής χρήσης αρχείων. Σημειώστε " "ότι το BitTorrent δεν είναι ανώνυμο." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7430,7 +7439,7 @@ msgstr "" "σχεδιασμένος να επιτρέπει την ανάγνωση ειδήσεων από οποιαδήποτε τοποθεσία, " "ενώ δίνει την εντύπωση μιας πραγματικής εφαρμογής επιφάνειας εργασίας." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any χρήστη με {box_name} πιστοποιητικά." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -7453,15 +7462,15 @@ msgstr "" "Tiny Tiny RSS, χρησιμοποιήστε τη διεύθυνση URL /tt-rss-app για τη σύνδεση." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Διαβάστε και εγγραφείτε τροφοδοσίες ειδήσεων" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Αναγνώστης ειδήσεων" @@ -7469,13 +7478,13 @@ msgstr "Αναγνώστης ειδήσεων" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Ελέγξτε και εφαρμόστε τις πιο πρόσφατες ενημερώσεις λογισμικού και ασφαλείας." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7483,7 +7492,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7725,7 +7734,7 @@ msgstr "Η εκκίνηση της αναβάθμισης απέτυχε." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7737,7 +7746,7 @@ msgstr "" "είναι μέρος μιας ομάδας για να εξουσιοδοτήσουν το χρήστη να αποκτήσει " "πρόσβαση στην εφαρμογή." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7749,15 +7758,15 @@ msgstr "" "σελίδα. Ωστόσο, μόνο οι χρήστες της ομάδας admin μπορούν να " "τροποποιήσουν τις εφαρμογές ή τις ρυθμίσεις του συστήματος." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Χρήστες και ομάδες" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Πρόσβαση σε όλες τις υπηρεσίες και τις ρυθμίσεις συστήματος" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Ελέγξτε την καταχώρηση LDAP \"{search_item}\"" @@ -8021,18 +8030,18 @@ msgstr "Αλλαγή κωδικού πρόσβασης" msgid "Password changed successfully." msgstr "Ο κωδικός πρόσβασης άλλαξε με επιτυχία." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8390,7 +8399,7 @@ msgstr "Διαγραφή σύνδεσης" msgid "Server deleted." msgstr "Το μέρισμα διαγράφηκε." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8399,7 +8408,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8408,28 +8417,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Διεύθυνση" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8447,7 +8456,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8460,7 +8469,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8468,11 +8477,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -8508,23 +8517,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Γενικός" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Σφάλμα κατά την εγκατάσταση" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "Εγκαθίσταται" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "Λήψη" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "Αλλαγή μέσου" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "αρχείο ρυθμίσεων: {file}" @@ -8921,6 +8930,16 @@ msgstr "ολοκληρώθηκε το %(percentage)s%%" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Σφάλμα κατά τη ρύθμιση ονόματος διδαδικτύου: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Παρουσιάστηκε σφάλμα κατά τη ρύθμιση παραμέτρων." + #, fuzzy #~| msgid "Directory does not exist." #~ msgid "User does not exist" diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index 44d464a4c..932caac4d 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-03-12 13:03+0000\n" "Last-Translator: Fioddor Superconcentrado \n" "Language-Team: Spanish calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1064,15 +1065,15 @@ msgstr "" "Solo los usuarios del grupo calibre podrán acceder a la app. Todos " "los usuarios con acceso pueden usar todas las bibliotecas." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Usar bibliotecas Calibre" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "Calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "Biblioteca de libros electrónicos" @@ -1146,7 +1147,7 @@ msgstr "{name} eliminado." msgid "Could not delete {name}: {error}" msgstr "No se pudo eliminar {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1159,7 +1160,7 @@ msgstr "" "muchas funciones avanzadas que normalmente no requieren atención. También " "ofrece una terminal de consola basada en web." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1171,7 +1172,7 @@ msgstr "" "puertos específicos del firewall y opciones avanzadas de red como bonding, " "bridging y manejo de VLAN." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1180,7 +1181,7 @@ msgstr "" "Puede acceder cualquier usuario/a en {box_name} " "que pertenezca al grupo «admin»." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1188,12 +1189,12 @@ msgstr "" "Cockpit requiere acceso a través de un nombre de dominio. Si se usa una " "dirección IP como parte de la URL no funcionará." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Administración del servidor" @@ -1205,7 +1206,7 @@ msgstr "Acceso" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit solo funciona cuando se usan las siguientes URL." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1213,11 +1214,11 @@ msgstr "" "Opciones de configuración general como el nombre del host, el del dominio, " "la página de inicio del servidor web, etc." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Configuración general" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1226,7 +1227,7 @@ msgstr "Configuración general" msgid "Configure" msgstr "Configurar" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1358,7 +1359,7 @@ msgstr "Mostrando aplicaciones y funciones avanzadas" msgid "Hiding advanced apps and features" msgstr "Ocultando aplicaciones y funciones avanzadas" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1370,7 +1371,7 @@ msgstr "" "SIP y de otros tipos pueden usarlo para establecer llamadas entre partes que " "no tienen otra alternativa disponible." -#: plinth/modules/coturn/__init__.py:42 +#: 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-" @@ -1384,11 +1385,11 @@ msgstr "" "servidores como matrix-synapse tienen que configurarse con los detalles que " "se proporcionan aquí." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "Asistente VoIP" @@ -1406,7 +1407,7 @@ msgstr "Use las siguientes URL para configurar su servidor de comunicación:" msgid "Use the following shared authentication secret:" msgstr "Use la clave compartida siguiente:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1414,11 +1415,11 @@ msgstr "" "El servidor de tiempo de red (servicio NTP) mantiene sincronizada la hora " "del sistema con servidores de Internet." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Fecha y hora" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Hora sincronizada con el servidor NTP" @@ -1447,11 +1448,11 @@ msgstr "Error al definir zona horaria: {exception}" msgid "Time zone set" msgstr "Zona horaria asignada" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge es un cliente BitTorrent con interfaz web." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1459,17 +1460,17 @@ msgstr "" "La clave de acceso por defecto es 'deluge' pero es muy recomendable que nada " "más activar el servicio acceda al mismo y la cambie." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Descargar archivos usando aplicaciones BitTorrent" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "Cliente web de BitTorrent" @@ -1481,7 +1482,7 @@ msgstr "Directorio de descarga" msgid "Bittorrent client written in Python/PyGTK" msgstr "Cliente BitTorrent escrito en Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1489,53 +1490,53 @@ msgstr "" "El test de diagnóstico del sistema ejecuta una serie de comprobaciones para " "confirmar que las aplicaciones y servicios están funcionando como se espera." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Diagnósticos" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "ok." -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "Falló" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "error" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GiB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" "Habría que deshabilitar algunas apps para reducir el consumo de memoria." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Hay que evitar instalar más apps en este sistema." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1544,7 +1545,7 @@ msgstr "" "El sistema va justo de memoria: {percent_used}% usada, {memory_available} " "{memory_available_unit} libres. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Poca memoria libre" @@ -1597,7 +1598,7 @@ msgstr "Resultado" msgid "Diagnostic Test" msgstr "Test de diagnóstico" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1605,12 +1606,12 @@ msgstr "" "diaspora* es una red social descentralizada en la que puede controlar sus " "propios datos." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Red Social Federada" @@ -1671,7 +1672,7 @@ msgstr "Registro de usuarias/os activado" msgid "User registrations disabled" msgstr "Registro de usuarias/os desactivado" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1682,7 +1683,7 @@ msgstr "" "24h) será muy difícil para los demás encontrarle en Internet. Este servicio " "permitirá a otros encontrar los servicios que ofrece {box_name}." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1699,11 +1700,11 @@ msgstr "" "asigna su nombre DNS a esta nueva IP de forma que cualquiera que pida su " "nombre DNS obtendrá la dirección IP actualizada." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Cliente de DNS dinámico" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Nombre de dominio dinámico" @@ -1758,12 +1759,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Deje vacío este campo si quiere conservar su clave actual." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Valor opcional. Si su {box_name} no está conectado directamente a Internet " "(p.e. está conectado a un router NAT), esta URL se usará para obtener su " @@ -1846,12 +1852,18 @@ msgid "Please provide a password" msgstr "Por favor indique una clave de acceso" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Si necesita una cuenta libre de DNS dinámico, puede encontrar un servicio " "GnuDIP gratuito en web clientcliente XMPP. Cuando se activa, ejabberd está disponible " "para cualquier usuario con acceso a {box_name}." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, fuzzy, python-brace-format #| msgid "" #| "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install " @@ -1974,12 +1986,12 @@ msgstr "" "Instalar la app Coturn o configurar un servidor " "externo." -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Servidor de Chat" @@ -2091,34 +2103,28 @@ msgstr "" "será parecida a username@%(domainname)s. Puede configurar su dominio " "en la página de sistema Configurar." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Servidor de Chat" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Error al establecer nombre de dominio: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2155,54 +2161,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "No certificado" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid domain" msgstr "Indique un nombre de usuario válido." -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid destination" msgstr "Indique un nombre de usuario válido." -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Dominio" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Conexión principal" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "Administrar bibliotecas" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Activado" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2211,7 +2229,7 @@ msgid "Disabled" msgstr "Desactivado" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2231,7 +2249,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2264,49 +2282,32 @@ msgstr "Crear una copia de seguridad nueva" msgid "Add" msgstr "Añadir" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Dominios" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "Gestionar instantáneas" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Tipo de servicio" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Ha habido un error en la configuración." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Configuración sin cambio" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2317,7 +2318,7 @@ msgstr "" "de su {box_name}. Mantenerlo activado y correctamente configurado reduce el " "riesgo de amenazas de seguridad desde Internet." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Cortafuegos" @@ -2440,7 +2441,7 @@ msgstr "Iniciar configuración" msgid "Setup Complete" msgstr "Configuración completada" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2458,7 +2459,7 @@ msgstr "" "cliente Git de línea de comandos o múltiples clientes gráficos. Y puedes " "compartir tu código con gente de todo el mundo." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2466,15 +2467,15 @@ msgstr "" "Para aprender más acerca de cómo usar Git visita el tutorial de Git." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Acceso de lectura y escritura para repositorios Git" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Alojamiento simple para Git" @@ -2587,31 +2588,31 @@ msgstr "Repositorio editado." msgid "Edit repository" msgstr "Editar repositorio" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Documentación" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Manual" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Obtener ayuda" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Enviar Comentarios" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2904,7 +2905,7 @@ msgstr "Acerca de {box_name}" msgid "{box_name} Manual" msgstr "Manual de {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2916,7 +2917,7 @@ msgstr "" "anonimato al enviar trafico cifrado a través de una red mantenida por " "voluntarios alrededor del mundo." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2924,7 +2925,7 @@ msgstr "" "Para ampliar información sobre I2P visite el sitio web del proyecto." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2932,19 +2933,19 @@ msgstr "" "La primer visita a la interfaz web provista iniciará el proceso de " "configuración." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Administrar la aplicación I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Red anónima" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Proxy I2P" @@ -2990,7 +2991,7 @@ msgstr "" "red par-a-par. Descarga los archivos al agregar los torrents o crea un nuevo " "torrent para compartir un archivo." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3000,7 +3001,7 @@ msgstr "" "de marcado, Markdown incluido, y funcionalidades comunes de los blogs tal " "como comentarios o fuentes RSS." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3014,15 +3015,15 @@ msgstr "" "\"{users_url}\">configuración de usuarios puede modificar estos permisos " "o añadir nuevos usuarios." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki y Blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Aplicaciones wiki para ver y editar" @@ -3101,11 +3102,11 @@ msgstr "{title} eliminado." msgid "Could not delete {title}: {error}" msgstr "No se pudo eliminar {title}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted es un servidor para Gobby, un editor de texto colaborativo." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3117,11 +3118,11 @@ msgstr "" "seleccione \"Conectar al servidor\" e introduzca el nombre de dominio de su " "{box_name}." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Servidor Gobby" @@ -3142,7 +3143,7 @@ msgstr "" "Inicie Gobby, seleccione \"Conectar al servidor\" e introduzca el nombre de " "dominio de su {box_name}." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3150,11 +3151,11 @@ msgstr "" "JSXC es un cliente web para XMPP. Se usa habitualmente con un servidor XMPP " "local." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Cliente de Chat" @@ -3163,7 +3164,7 @@ msgstr "Cliente de Chat" msgid "JavaScript license information" msgstr "Información de licencia de JavaScript" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3178,7 +3179,7 @@ msgstr "" "mostrándose a sí mismo como propietario de un dominio a Let's Encrypt, " "autoridad de certificación (CA)." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3191,15 +3192,15 @@ msgstr "" "letsencrypt.org/repository/\">Acuerdo de suscripción de Let's Encrypt " "antes de usar este servicio." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Certificados" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3304,7 +3305,7 @@ msgstr "El certificado para el dominio {domain} ha sido eliminado con éxito" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Falló la eliminación del certificado para el dominio {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3321,7 +3322,7 @@ msgstr "" "funcionar. La federación de los servidores permite que las/os usuarias/os de " "un servidor Matrix contacten con los de otro servidor." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3331,7 +3332,7 @@ msgstr "" "Instalar la app Coturn o configurar un servidor " "externo." -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3428,7 +3429,7 @@ msgstr "" "TLS válido. Vaya a Let's Encrypt para " "obtener uno." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3440,7 +3441,7 @@ msgstr "" "colaboración. Puede usar MediaWiki para alojar un sitio tipo wiki, tomar " "notas o colaborar en proyectos con otras personas." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3454,7 +3455,7 @@ msgstr "" "MediaWiki en la página Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3462,12 +3463,12 @@ msgstr "" "Cualquiera con acceso a este wiki puede leerlo, pero solo quien se " "autentique en el sistema podrá modificar el contenido." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3560,7 +3561,7 @@ msgstr "Tema por defecto cambiado" msgid "Server URL updated" msgstr "URL de servidor actualizada" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3573,11 +3574,11 @@ msgstr "" "defecto (30000). Para acceder al servidor necesitará un Cliente Minetest." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Sandbox de bloques" @@ -3651,7 +3652,7 @@ msgstr "Configuración PVP actualizada" msgid "Damage configuration updated" msgstr "Configuración de daño actualizada" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3668,15 +3669,15 @@ msgstr "" "reproductores portátiles, teléfonos móviles, televisores, consolas como PS3 " "y Xbox o aplicaciones como Totem y Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Servidor de emisión multimedia" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Servidor multimedia básico" @@ -3720,7 +3721,7 @@ msgstr "La carpeta especificada no existe." msgid "Updated media directory" msgstr "Carpeta multimedia actualizada" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3730,7 +3731,7 @@ msgstr "" "para intercambiar archivos grandes. Puede participar en múltiples redes de " "pares, incluyendo eDonkey, Kademlia, Overnet, BitTorrent y DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3741,7 +3742,7 @@ msgstr "" "también a través de cualquiera de las interfaces externas para móvil o " "escritorio, o de una interfaz «telnet». Vea el manual." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3749,16 +3750,16 @@ msgstr "" "Los archivos descargados en {box_name} se encuentran en el directorio «/var/" "lib/mldonkey/»." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Descargar archivos usando aplicaciones para eDonkey" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Compartir archivos entre pares" @@ -3770,7 +3771,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3790,7 +3791,7 @@ msgstr "" "info/getting-started-ssh/\">Documentación de Monkeysphere SSH para más " "detalles." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3808,7 +3809,7 @@ msgstr "" "necesitará instalar el software disponible en Sitio Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3827,6 +3828,10 @@ msgstr "Cancelar" msgid "Service" msgstr "Servicio" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Dominios" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3932,7 +3937,7 @@ msgstr "Publicada la clave en el servidor de claves." msgid "Error occurred while publishing key." msgstr "Se ha producido un error al publicar la clave." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3940,7 +3945,7 @@ msgstr "" "Mumble es un software libre de gran calidad para chat de voz, de baja " "latencia y con cifrado." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3950,11 +3955,11 @@ msgstr "" "disponibles Clientes para conectar desde " "sus dispositivos de escritorio o Android." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Chat de voz" @@ -3982,7 +3987,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "Clave de administración cambiada con éxito." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3995,7 +4000,7 @@ msgstr "" "servicio de Tor onion. Para cada tipo de nombre se muestra si los servicios " "HTTP, HTTPS y SSH están activos o no para las conexiones entrantes." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Servicios de nombres" @@ -4011,7 +4016,7 @@ msgstr "Todas las apps web" msgid "Services" msgstr "Servicios" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4019,7 +4024,7 @@ msgstr "" "Configurar dispositivos de red. Conectar con Internet mediante Ethernet, Wi-" "Fi o PPPoE. Compartir esa conexión con otros dispositivos de la red." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4027,11 +4032,11 @@ msgstr "" "Los dispositivos administrados mediante otros métodos quizá no estén " "disponibles para configurarse aquí." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Redes" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC en uso sobre IPv{kind}" @@ -4579,7 +4584,7 @@ msgstr "Servidor DNS" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Por defecto" @@ -4592,7 +4597,7 @@ msgid "This connection is not active." msgstr "Esta conexión no está activa." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Protección" @@ -5077,7 +5082,7 @@ msgstr "genérica" msgid "TUN or TAP interface" msgstr "interfaz TUN o TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5168,7 +5173,7 @@ msgstr "Conexión {name} eliminada." msgid "Failed to delete connection: Connection not found." msgstr "Ha fallado la eliminación de la conexión: no se encontró." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5185,20 +5190,20 @@ msgstr "" "forma privada. También puede acceder a Internet a través de su {box_name} " "para añadir protección y anonimato." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "Conectar a servicios VPN" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Red privada virtual" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5280,7 +5285,7 @@ msgstr "" msgid "Download my profile" msgstr "Descargar mi perfil" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5293,18 +5298,18 @@ msgstr "" "servicios de su {box_name} no son accesibles desde Internet. Esto incluye " "las siguientes situaciones:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} está detrás de un firewall restringido." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} está conectado a un router (inalámbrico) que usted no controla." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5312,7 +5317,7 @@ msgstr "" "Su proveedor de servicio no le da una dirección IP externa y, por el " "contrario, le facilita conexión a Internet a través de un NAT." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5320,11 +5325,11 @@ msgstr "" "Su proveedor de servicios no le da una dirección IP estática por lo que su " "IP cambia cada vez que se conecta a Internet." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Su proveedor de servicios limita las conexiones entrantes." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5337,15 +5342,15 @@ msgstr "" "de servicios pagekite, por ejemplo pagekite." "net. En el futuro será posible usar su amigable {box_name} para esto." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Visibilidad pública" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "Dominio PageKite" @@ -5489,12 +5494,12 @@ msgstr "" "Vea las instrucciones para la configuración del cliente SSH" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Rendimiento" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5504,7 +5509,7 @@ msgstr "" "acerca del uso del hardware e identificar patrones de uso o si el hardware " "se sobrecarga de usuarios o servicios." -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5512,15 +5517,15 @@ msgstr "" "Las métricas de rendimiento las recolecta Performance Co-Pilot y se pueden " "ver empleando la app Cockpit." -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Monitorización del sistema" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Reiniciar o apagar el sistema." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Apagar / Reiniciar" @@ -5583,7 +5588,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Apagar ahora" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5594,7 +5599,7 @@ msgstr "" "cabeceras HTTP, controlar el acceso y eliminar publicidad y otra basura de " "Internet. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5609,20 +5614,20 @@ msgstr "" "documentación en http://config.privoxy." "org/ o http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Proxy Web" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Acceso a {url} con proxy {proxy} en tcp {kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5639,7 +5644,7 @@ msgstr "" "conectado de forma que distintos clientes Quassel pueden conectarse y " "desconectarse de este servidor desde un ordenador de escritorio o un móvil." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your escritorio y móvil." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "Cliente IRC" @@ -5663,7 +5668,7 @@ msgstr "Cliente IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5678,7 +5683,7 @@ msgstr "" "supported-clients\">aplicación cliente soportada. Cualquier persona " "autenticada en {box_name} puede acceder a Radicale." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5688,12 +5693,12 @@ msgstr "" "de nuevos calendarios y agendas. No soporta añadir eventos o contactos, que " "debe hacerse usando un cliente separado." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Calendario y Contactos" @@ -5774,7 +5779,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuración de derechos de acceso actualizada" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5786,7 +5791,7 @@ msgstr "" "un cliente de correo, incluyendo soporte MIME, agenda de contactos, " "organización de carpetas, búsqueda de mensajes y corrección ortográfica." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5800,7 +5805,7 @@ msgstr "" "sobre SSL (recomendado) rellene el campo del servidor como imaps://" "imap.ejemplo.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5816,11 +5821,11 @@ msgstr "" "google.com/settings/security/lesssecureapps\">https://www.google.com/" "settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "Cliente de correo" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5828,7 +5833,7 @@ msgstr "" "Samba permite compartir archivos y carpetas entre FreedomBox y otras " "computadoras en su red local." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5841,11 +5846,11 @@ msgstr "" "la dirección \\\\{hostname} (en Windows) o smb://{hostname}.local (en Linux " "y Mac). Puede elegir entre tres tipos para compartir: " -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "Compartir en abierto - accesible para todo el mundo en su red local." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5853,7 +5858,7 @@ msgstr "" "Compartir en grupo - accesible solo para las personas que estén en el grupo " "freedombox-share." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5861,15 +5866,15 @@ msgstr "" "Compartir en mi cuenta - todos los miembros del grupo freedombox-share " "disponen de un espacio privado propio." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Acceso a los elementos compartidos privados" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Sistema de archivos en red" @@ -5958,11 +5963,11 @@ msgstr "Acción" msgid "FreedomBox OS disk" msgstr "Disco de sistema de FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Compartir en abierto" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Compartir con grupo" @@ -5988,7 +5993,7 @@ msgstr "Compartición desactivada." msgid "Error disabling share: {error_message}" msgstr "Error al desactivar compartición: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5996,7 +6001,7 @@ msgstr "" "Searx es un motor de búsqueda en Internet que respeta la privacidad. Recoge " "y muestra los resultados de múltiples buscadores." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6004,15 +6009,15 @@ msgstr "" "Searx se puede usar para evitar el rastreo y la creación de perfiles que " "realizan los buscadores. Por defecto no almacena cookies." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Buscar en la web" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Buscador web" @@ -6194,11 +6199,11 @@ msgstr "Error al definir el acceso restringido: {exception}" msgid "Updated security configuration" msgstr "Configuración de seguridad actualizada" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli le permite guardar y compartir marcadores." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6206,15 +6211,15 @@ msgstr "" "Note que Shaarli solo soporta una cuenta de usuaria/o, que debe configurar " "en el primer acceso." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Marcadores" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6224,7 +6229,7 @@ msgstr "" "tráfico en Internet. Se puede usar para eludir el filtrado o la censura de " "Internet." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6237,7 +6242,7 @@ msgstr "" "Los dispositivos locales pueden conectarse a este proxy y la información se " "enviará cifrada a través del servidor Shadowsocks." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6245,11 +6250,11 @@ msgstr "" "Para usar Shadowsocks una vez configurado debe indicar la URL del proxy en " "su dispositivo, navegador o aplicación como http://freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Proxy Socks5" @@ -6278,7 +6283,7 @@ msgstr "Clave para cifrar los datos. Debe coincidir con la clave del servidor." msgid "Encryption method. Must match setting on server." msgstr "Método de cifrado. Debe coincidir con la configuración del servidor." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6388,7 +6393,7 @@ msgstr "Editar compartición" msgid "Share deleted." msgstr "Compartición eliminada." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6398,7 +6403,7 @@ msgstr "" "btrfs. Éstas pueden emplearse para recuperar el sistema a un estado anterior " "correcto en caso de cambios no deseados." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6410,7 +6415,7 @@ msgstr "" "instantáneas más antiguas se eliminarán automáticamente según la siguiente " "configuración." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for las copias de seguridad ya que se almacenan en la " "misma partición. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Instantáneas" @@ -6627,7 +6632,7 @@ msgstr "Debe reiniciar el sistema para completar la restauración." msgid "Rollback to Snapshot" msgstr "Restaurar a instantánea" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6639,7 +6644,7 @@ msgstr "" "realizar tareas de administración, copiar archivos o ejecutar otros " "servicios a través de esas conexiones." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Servidor de intérprete de órdenes seguro (SSH)" @@ -6685,7 +6690,7 @@ msgstr "Acceso SSH con clave desactivado." msgid "SSH authentication with password enabled." msgstr "Acceso SSH con clave activado." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Inicio de sesión único" @@ -6693,7 +6698,7 @@ msgstr "Inicio de sesión único" msgid "Login" msgstr "Inicio de sesión" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6704,106 +6709,106 @@ msgstr "" "{box_name}. Puede ver el medio de almacenamiento que está usando, montar y " "desmontar medios extraíbles, ampliar la partición raíz, etc." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Almacenamiento" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Falló la operación." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Se ha cancelado la operación." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "El dispositivo ya se está desmontando." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "No se soporta esta operación por falta de un driver o herramienta." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "La operación agotó el tiempo." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "La operación podría activar un disco que está en estado de reposo." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Tratando de desmontar un dispositivo ocupado." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "Ya se ha cancelado la operación." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "No tiene autorización para la operación solicitada." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "El dispositivo ya está montado." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "El dispositivo no está montado." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "La operación solicitada no está permitida." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "El dispositivo está ya montado por otro usuario." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Poco espacio en la partición del sistema: {percent_used}% usado, " "{free_space} libre." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Poco espacio en disco" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "Fallo de disco inminente" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6812,39 +6817,39 @@ msgstr "" "El disco {id} informa que es probable que falle en breve. Copie los datos " "mientras pueda y reemplace el disco." -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Nombre de carpeta no válido." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "La carpeta no existe." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "No es una carpeta." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "El usuario no tiene permiso de lectura en esta carpeta." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "El usuario no tiene permiso de escritura en esta carpeta." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Carpeta" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Subcarpeta (opcional)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Compartir" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Otra carpeta (especifique más abajo)" @@ -6928,7 +6933,7 @@ msgstr "El dispositivo ya se puede desconectar con seguridad." msgid "Error ejecting device: {error_message}" msgstr "Error al expulsar el dispositivo: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6940,7 +6945,7 @@ msgstr "" "modificación o borrado de archivos en uno de los dispositivos se replica " "automáticamente en todos los demás que también estén ejecutando Syncthing." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6959,20 +6964,20 @@ msgstr "" "interfaz web en {box_name} solo está disponible para quienes pertenezcan a " "los grupos \"admin\" o \"syncthing-access\"." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Administrar Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Sincronización de archivos" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6985,7 +6990,7 @@ msgstr "" "de los nodos fallara, sus archivos seguirían estando disponibles a través " "del resto de nodos." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6996,11 +7001,11 @@ msgstr "" "defecto. Se pueden añadir presentadores adicionales, los cuales presentarán " "este nodo a los otros nodos de almacenamiento." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Almacén de archivos distribuido" @@ -7039,7 +7044,7 @@ msgstr "Presentadores conectados" msgid "Remove" msgstr "Eliminar" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7053,40 +7058,40 @@ msgstr "" "download/download-easy.html.en\">Navegador Tor para tener la mejor " "protección cuando navega por la red." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Servicio Tor Onion" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Proxy Socks para Tor" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Puente de retransmisión Tor" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Puerto de servidor Tor disponible" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Transporte Obfs3 registrado" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Transporte Obfs4 registrado" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Acceso a URL {url} sobre tcp {kind} vía Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmar uso de Tor en {url} sobre tcp {kind}" @@ -7240,11 +7245,15 @@ msgstr "" "Un puerto SOCKS de Tor está disponible en su %(box_name)s en el puerto TCP " "9050." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Configuración sin cambio" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission es un cliente BitTorrent con interfaz web." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7252,17 +7261,17 @@ msgstr "" "BitTorrent es un protocolo para compartir archivos entre pares. Recuerde que " "BitTorrent no es anónimo." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" "Por favor, no cambie el puerto predeterminado para el servicio Transmission." -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7272,7 +7281,7 @@ msgstr "" "publicar desde cualquier lugar, a la vez que mantiene un aspecto de " "aplicación de escritorio en la medida de lo posible." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any persona con una cuenta de acceso en {box_name}." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7289,15 +7298,15 @@ msgstr "" "Cuando emplee una aplicación de móvil o de escritorio para Tiny Tiny RSS, " "use la URL /tt-rss-app para conectar." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Leer y suscribirse a nuevos agregadores" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Lector de noticias" @@ -7305,13 +7314,13 @@ msgstr "Lector de noticias" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Bifurcación)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Buscar y aplicar las últimas actualizaciones del software y de seguridad." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7325,7 +7334,7 @@ msgstr "" "tiempo. Si se decide retrasar el reinicio del sistema, éste se hará de forma " "automática a las 02:00 h." -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7554,7 +7563,7 @@ msgstr "No se ha podido iniciar la actualización." msgid "Frequent feature updates activated." msgstr "Las actualizaciones funcionales frecuentes están activadas." -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7565,7 +7574,7 @@ msgstr "" "requieren que además la cuenta de usuario conste en un grupo para " "autorizarles a acceder." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7577,15 +7586,15 @@ msgstr "" "sólo los usuarios del grupo admin pueden cambiar configuraciones de " "apps o del sistema." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Usuarias/os y grupos" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Acceso a todos los servicios y configuraciones del sistema" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Comprobar la entrada LDAP \"{search_item}\"" @@ -7831,11 +7840,11 @@ msgstr "Cambiar clave de acceso" msgid "Password changed successfully." msgstr "Clave de acceso cambiada con éxito." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WirGuard es un túnel VPN rápido, moderno y seguro." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7844,7 +7853,7 @@ msgstr "" "Se puede usar para conectar a un proveedor VPN que soporte WireGuard y " "dirigir el tráfico saliente de su {box_name} a través de una VPN." -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8164,7 +8173,7 @@ msgstr "Eliminar conexión al servidor" msgid "Server deleted." msgstr "Servidor eliminado." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8173,7 +8182,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8182,28 +8191,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Dirección" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8221,7 +8230,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8243,7 +8252,7 @@ msgstr "" "de mapa y calendario. Se pueden compartir fotos sueltas con otras personas " "enviándoles un enlace directo." -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8254,11 +8263,11 @@ msgstr "" "Para añadir más usuarios hay que crear cuentas con el mismo nombre tanto en " "Zoph como en {box_name} ." -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "Organizador de fotografías" @@ -8295,23 +8304,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Genérica" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Error durante la instalación" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "instalando" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "descargando" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "cambio de medio" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "archivo de configuración: {file}" @@ -8682,6 +8691,16 @@ msgstr "%(percentage)s%% completado" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Error al establecer nombre de dominio: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Ha habido un error en la configuración." + #, fuzzy #~| msgid "Directory does not exist." #~ msgid "User does not exist" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index aa8fcd02d..58f9c996b 100644 --- a/plinth/locale/fa/LC_MESSAGES/django.po +++ b/plinth/locale/fa/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-09-07 11:34+0000\n" "Last-Translator: Seyed mohammad ali Hosseinifard \n" "Language-Team: Persian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1155,7 +1156,7 @@ msgstr "{name} پاک شد." msgid "Could not delete {name}: {error}" msgstr "نشد که {name} پاک شود: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1164,7 +1165,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1172,25 +1173,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 #, fuzzy #| msgid "Administrator Account" msgid "Server Administration" @@ -1206,17 +1207,17 @@ msgstr "نقطهٔ دسترسی" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "پیکربندی عمومی" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1226,7 +1227,7 @@ msgstr "پیکربندی عمومی" msgid "Configure" msgstr "پیکربندی" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1354,7 +1355,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1362,7 +1363,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "اگر به دنبال یک حساب رایگان DNS متغیر هستید، می‌توانید سرویس رایگان GnuDIP " "را در gnudip." @@ -1906,7 +1918,7 @@ msgstr "" msgid "Last update" msgstr "آخرین به‌روزرسانی" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "درباره" @@ -1934,13 +1946,13 @@ msgstr "پیکربندی DNS متغیر" msgid "Dynamic DNS Status" msgstr "وضعیت DNS متغیر" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -2060,34 +2072,28 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Email Server" msgstr "سرور وب" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "خطا در هنگام تنظیم نام دامنه: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2124,54 +2130,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "بدون گواهی دیجیتال" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "نام کاربری معتبر نیست" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "نام کاربری معتبر نیست" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "دامنه" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Create Connection" msgid "Aliases" msgstr "ساختن اتصال" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "فعال" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2180,7 +2198,7 @@ msgid "Disabled" msgstr "غیرفعال" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2198,7 +2216,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Create Connection" msgid "Manage Aliases" @@ -2233,49 +2251,32 @@ msgstr "ساختن اتصال" msgid "Add" msgstr "نشانی" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "دامنه‌ها" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Delete %(name)s" msgid "Manage Spam" msgstr "پاک‌کردن %(name)s" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "نوع سرویس" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "Current Network Configuration" -msgid "Error updating configuration" -msgstr "پیکربندی فعلی شبکه" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2286,7 +2287,7 @@ msgstr "" "خروجی شبکه را در {box_name} شما کنترل می‌کند. فعال نگه‌داشتن فایروال و تنظیم " "درست آن خطر تهدیدهای امنیتی از طرف اینترنت را کم می‌کند." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "فایروال" @@ -2400,7 +2401,7 @@ msgstr "آغاز راه‌اندازی" msgid "Setup Complete" msgstr "راه‌اندازی کامل شد" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2411,21 +2412,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2562,11 +2563,11 @@ msgstr "" msgid "Edit repository" msgstr "ساختن اتصال" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "راهنما" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2574,21 +2575,21 @@ msgctxt "User guide" msgid "Manual" msgstr "کتاب راهنما" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2851,7 +2852,7 @@ msgstr "دربارهٔ {box_name}" msgid "{box_name} Manual" msgstr "کتاب راهنمای {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2859,7 +2860,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the ویکی %(box_name)s را ببینید." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 #, fuzzy msgid "Manage I2P application" msgstr "فعال‌سازی برنامه" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 #, fuzzy msgid "Anonymity Network" msgstr "رفتن به تنظیمات شبکه" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2928,7 +2929,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2945,7 +2946,7 @@ msgstr "" "پشتیبانی می‌کند. اگر این برنامه فعال باشد، وبلاگ‌ها و ویکی‌ها از نشانی /ikiwiki قابل دسترس خواهند بود." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2954,17 +2955,17 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 #, fuzzy #| msgid "Manage Wikis and Blogs" msgid "Wiki and Blog" msgstr "مدیریت ویکی‌ها و وبلاگ‌ها" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 #, fuzzy msgid "View and edit wiki applications" msgstr "سرویس‌ها و برنامه‌ها" @@ -3046,11 +3047,11 @@ msgstr "{name} پاک شد." msgid "Could not delete {title}: {error}" msgstr "نشد که {name} پاک شود: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3058,11 +3059,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -3083,17 +3084,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -3102,7 +3103,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, fuzzy, python-brace-format #| msgid "" #| "A digital certficate allows users of a web service to verify the identity " @@ -3123,7 +3124,7 @@ msgstr "" "برای این کار {box_name} به Let's Encrypt (که یک مرجع صدور گواهی دیجیتال است) " "اثبات می‌کند که مالک دامنه است." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 #, fuzzy #| msgid "" #| "Let's Encrypt is a free, automated, and open certificate authority, run " @@ -3143,19 +3144,19 @@ msgstr "" "\"https://letsencrypt.org/repository/\">قرارداد اشتراک Let's Encrypt " "بخوانید و آن را بپذیرید." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "گواهی دیجیتال (Let's Encrypt)" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "وضعیت گواهی دیجیتال" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3265,7 +3266,7 @@ msgstr "گواهی دامنهٔ {domain} با موفقیت باطل شد" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "باطل‌کردن گواهی دامنهٔ {domain} شکست خورد: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3275,14 +3276,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3354,7 +3355,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3362,7 +3363,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3371,18 +3372,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3479,7 +3480,7 @@ msgstr "" msgid "Server URL updated" msgstr "{name} پاک شد." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3492,11 +3493,11 @@ msgstr "" "برای اتصال به سرور به یک برنامهٔ ماین‌تست نیاز است." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 #, fuzzy msgid "Block Sandbox" msgstr "بازی مکعب‌ها (Minetest)" @@ -3576,7 +3577,7 @@ msgstr "پیکربندی به‌روز شد" msgid "Damage configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3587,15 +3588,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3635,37 +3636,37 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy msgid "MLDonkey" msgstr "مانکی‌اسفیر" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3679,7 +3680,7 @@ msgstr "مانکی‌اسفیر" msgid "AMLDonkey" msgstr "مانکی‌اسفیر" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3698,7 +3699,7 @@ msgstr "" "برای اطلاعات بیشتر راهنمای SSH مانکی‌اسفیر را بخوانید." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3715,7 +3716,7 @@ msgstr "" "در وبسایت مانکی‌اسفیر " "است نصب کند." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 #, fuzzy msgid "Monkeysphere" @@ -3735,6 +3736,10 @@ msgstr "انصراف" msgid "Service" msgstr "سرویس" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "دامنه‌ها" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3841,13 +3846,13 @@ msgstr "کلید در پایگاه کلیدها منتشر شد." msgid "Error occurred while publishing key." msgstr "هنگام انتشار کلید خطایی رخ داد." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "مامبل (Mumble) یک نرم‌افزار چت صوتی متن‌باز، کم‌تأخیر، و باکیفیت است." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3857,11 +3862,11 @@ msgstr "" "\"http://mumble.info\">نرم‌افزارهایی برای اتصال به سرور مامبل برای " "کامپیوتر رومیزی و دستگاه‌های اندروید در دسترس است." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -3891,7 +3896,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3900,7 +3905,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "سرویس نام‌ها" @@ -3918,23 +3923,23 @@ msgstr "" msgid "Services" msgstr "سرویس" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "شبکه‌ها" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "در حال استفاده از DNSSEC روی IPv{kind}" @@ -4434,7 +4439,7 @@ msgstr "دی‌ان‌اس" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "پیش‌فرض" @@ -4447,7 +4452,7 @@ msgid "This connection is not active." msgstr "این اتصال فعال نیست." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "امنیت" @@ -4941,7 +4946,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "واسط" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5038,7 +5043,7 @@ msgstr "اتصال {name} پاک شد." msgid "Failed to delete connection: Connection not found." msgstr "پاک‌کردن اتصال شکست خورد: اتصال پیدا نشد." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5049,24 +5054,24 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "نوع اتصال" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "باز" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5132,7 +5137,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5141,33 +5146,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5176,15 +5181,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 #, fuzzy #| msgid "Available Domains" msgid "PageKite Domain" @@ -5320,33 +5325,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -5399,14 +5404,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5416,20 +5421,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5440,7 +5445,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -5460,7 +5465,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5470,19 +5475,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5553,7 +5558,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5561,7 +5566,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5570,7 +5575,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5580,18 +5585,18 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 #, fuzzy msgid "Email Client" msgstr "برنامهٔ DNS متغیر (Dynamic DNS Client)" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5600,31 +5605,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Interface" msgid "Network File Storage" @@ -5714,13 +5719,13 @@ msgstr "کنش‌ها" msgid "FreedomBox OS disk" msgstr "FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 #, fuzzy #| msgid "Shared" msgid "Open Share" msgstr "مشترک" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 #, fuzzy #| msgid "Shared" msgid "Group Share" @@ -5756,27 +5761,27 @@ msgstr "مشترک" msgid "Error disabling share: {error_message}" msgstr "خطا هنگام نصب برنامه: {error}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Web Search" @@ -5948,32 +5953,32 @@ msgstr "خطا در هنگام تنظیم منطقهٔ زمانی: {exception}" msgid "Updated security configuration" msgstr "پیکربندی عمومی" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5982,17 +5987,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -6023,7 +6028,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6139,14 +6144,14 @@ msgstr "مشترک" msgid "Share deleted." msgstr "{name} پاک شد." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6154,14 +6159,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 #, fuzzy #| msgid "Delete %(name)s" msgid "Storage Snapshots" @@ -6373,7 +6378,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6381,7 +6386,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6428,7 +6433,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6436,7 +6441,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6444,153 +6449,153 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, fuzzy, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size} بایت" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 #, fuzzy #| msgid "The requested domain is already registered." msgid "The device is already mounted." msgstr "دامنهٔ درخواستی از قبل ثبت شده است." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "نام میزبان معتبر نیست" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "مشترک" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6674,7 +6679,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6682,7 +6687,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6694,20 +6699,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6715,7 +6720,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6723,11 +6728,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6764,7 +6769,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6773,40 +6778,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6934,54 +6939,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "دِلوگ (Transmission) یک برنامهٔ بیت‌تورنت با رابط کاربری تحت وب است." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6989,12 +6998,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7002,7 +7011,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7212,14 +7221,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7227,15 +7236,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7481,18 +7490,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7826,7 +7835,7 @@ msgstr "پاک‌کردن اتصال" msgid "Server deleted." msgstr "{name} پاک شد." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7835,7 +7844,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7844,28 +7853,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "نشانی" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Manage Wikis and Blogs" msgid "Website and Blog" @@ -7883,7 +7892,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7896,7 +7905,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7904,11 +7913,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7944,23 +7953,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -8306,6 +8315,16 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "خطا در هنگام تنظیم نام دامنه: {exception}" + +#, fuzzy +#~| msgid "Current Network Configuration" +#~ msgid "Error updating configuration" +#~ msgstr "پیکربندی فعلی شبکه" + #, fuzzy #~| msgid "Disabled" #~ msgid "Disable selected" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index c41887e83..a54a54cba 100644 --- a/plinth/locale/fake/LC_MESSAGES/django.po +++ b/plinth/locale/fake/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth 0.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1203,7 +1204,7 @@ msgstr "{name} DELETED." msgid "Could not delete {name}: {error}" msgstr "COULD NOT DELETE {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1212,7 +1213,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1220,7 +1221,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, the blogs and wikis will be available from /IKIWIKI." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 #, fuzzy #| msgid "Server domain" msgid "Server Administration" @@ -1257,17 +1258,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "GENERAL CONFIGURATION" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1276,7 +1277,7 @@ msgstr "GENERAL CONFIGURATION" msgid "Configure" msgstr "CONFIGURE" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1406,7 +1407,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1414,7 +1415,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as /DELUGE PATH ON THE WEB SERVER. THE DEFAULT PASSWORD IS 'DELUGE', BUT " "YOU SHOULD LOG IN AND CHANGE IT IMMEDIATELY AFTER ENABLING THIS SERVICE." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 #, fuzzy #| msgid "Enable Deluge" msgid "Deluge" msgstr "ENABLE DELUGE" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 #, fuzzy #| msgid "BitTorrent Web Client (Deluge)" msgid "BitTorrent Web Client" @@ -1538,7 +1539,7 @@ msgstr "DOWNLOAD DIRECTORY" msgid "Bittorrent client written in Python/PyGTK" msgstr "" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1546,61 +1547,61 @@ msgstr "" "THE SYSTEM DIAGNOSTIC TEST WILL RUN A NUMBER OF CHECKS ON YOUR SYSTEM TO " "CONFIRM THAT APPLICATIONS AND SERVICES ARE WORKING AS EXPECTED." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "DIAGNOSTICS" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 #, fuzzy #| msgid "Setup failed." msgid "failed" msgstr "SETUP FAILED." -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "" -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " "{memory_available_unit} free. {advice_message}" msgstr "" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "" @@ -1652,18 +1653,18 @@ msgstr "RESULT" msgid "Diagnostic Test" msgstr "DIAGNOSTIC TEST" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." msgstr "" -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "" @@ -1720,7 +1721,7 @@ msgstr "APPLICATIONS" msgid "User registrations disabled" msgstr "APPLICATIONS" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, fuzzy, python-brace-format #| msgid "" #| "If your internet provider changes your IP address periodic (i.e. every " @@ -1736,7 +1737,7 @@ msgstr "" "IT MAY BE HARD FOR OTHERS TO FIND YOU IN THE WEB. AND FOR THIS REASON NOBODY " "MAY FIND THE SERVICES WHICH ARE PROVIDED BY %(box_name)s, SUCH AS OWNCLOUD." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 #, fuzzy #| msgid "" #| "The solution is to assign a DNS name to your IP address and update the " @@ -1762,11 +1763,11 @@ msgstr "" "THE SERVER WILL ASSIGN YOUR DNS NAME WITH THE NEW IP AND IF SOMEONE FROM THE " "INTERNET ASKS FOR YOUR DNS NAME HE WILL GET YOUR CURRENT IP ANSWERED." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "DYNAMIC DNS CLIENT" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 #, fuzzy #| msgid "Domain Name" msgid "Dynamic Domain Name" @@ -1843,7 +1844,7 @@ 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "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 FIGURE OUT THE REAL " @@ -1945,10 +1946,9 @@ msgstr "PLEASE PROVIDE A PASSWORD" #| "target='_blank'> freedns.afraid.org." 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." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "IF YOU ARE LOOKING FOR A FREE DYNAMIC DNS ACCOUNT, YOU MAY FIND A FREE " "GNUDIP SERVICE AT web client " @@ -2073,19 +2073,19 @@ msgstr "" "ANY OTHER XMPP CLIENT." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -2187,34 +2187,28 @@ msgstr "" "LIKE USERNAME@%(domainname)s. YOU CAN SETUP YOUR DOMAIN ON THE SYSTEM " "CONFIGURE PAGE." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Email Server" msgstr "WEB SERVER" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "ERROR SETTING DOMAIN NAME: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2251,54 +2245,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "NO CERTFICATE" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "INVALID SERVER NAME" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "INVALID SERVER NAME" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "DOMAIN" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "PRIMARY CONNECTION" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Create User" msgid "Aliases" msgstr "CREATE USER" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "ENABLED" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2307,7 +2313,7 @@ msgid "Disabled" msgstr "DISABLED" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 #, fuzzy #| msgid "Enable Roundcube" @@ -2327,7 +2333,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Create User" msgid "Manage Aliases" @@ -2362,51 +2368,32 @@ msgstr "PAGEKITE ACCOUNT" msgid "Add" msgstr "ADDRESS" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -#, fuzzy -#| msgid "Domain" -msgid "Domains" -msgstr "DOMAIN" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Create User" msgid "Manage Spam" msgstr "CREATE USER" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service type" msgid "Service Alert" msgstr "SERVICE TYPE" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "AN ERROR OCCURRED DURING CONFIGURATION." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "SETTING UNCHANGED" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, fuzzy, python-brace-format #| msgid "" #| "Firewall is a security system that controls the incoming and outgoing " @@ -2421,7 +2408,7 @@ msgstr "" "NETWORK TRAFFIC ON YOUR %(box_name)s. KEEPING A FIREWALL ENABLED AND " "PROPERLY CONFIGURED REDUCES RISK OF SECURITY THREAT FROM THE INTERNET." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "FIREWALL" @@ -2539,7 +2526,7 @@ msgstr "START SETUP" msgid "Setup Complete" msgstr "SETUP COMPLETE" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2550,21 +2537,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2709,11 +2696,11 @@ msgstr "PACKAGES NOT FOUND" msgid "Edit repository" msgstr "CREATE USER" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "DOCUMENTATION" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2721,21 +2708,21 @@ msgctxt "User guide" msgid "Manual" msgstr "MANUAL" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -3007,7 +2994,7 @@ msgstr "ABOUT {box_name}" msgid "{box_name} Manual" msgstr "{box_name} MANUAL" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3015,7 +3002,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s WIKI." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 #, fuzzy #| msgid "Applications" msgid "Manage I2P application" msgstr "APPLICATIONS" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "TOR ANONYMITY NETWORK" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -3088,14 +3075,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3104,17 +3091,17 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 #, fuzzy #| msgid "wiki" msgid "ikiwiki" msgstr "WIKI" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "WIKI AND BLOG" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -3197,11 +3184,11 @@ msgstr "{name} DELETED." msgid "Could not delete {title}: {error}" msgstr "COULD NOT DELETE {name}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3209,11 +3196,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -3234,17 +3221,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 #, fuzzy #| msgid "IRC Client (Quassel)" msgid "Chat Client" @@ -3255,7 +3242,7 @@ msgstr "IRC CLIENT (QUASSEL)" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, fuzzy, python-brace-format #| msgid "" #| "A digital certficate allows users of a web service to verify the identity " @@ -3276,7 +3263,7 @@ msgstr "" "DOMAIN. IT DOES SO BY PROVING ITSELF TO BE THE OWNER OF A DOMAIN TO LET'S " "ENCRYPT, A CERTFICATE AUTHORITY (CA)." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 #, fuzzy #| msgid "" #| "Let's Encrypt is a free, automated, and open certificate authority, run " @@ -3295,19 +3282,19 @@ msgstr "" "READ AND AGREE WITH THE LET'S ENCRYPT SUBSCRIBER AGREEMENT BEFORE USING THIS SERVICE." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "CERTIFICATES (LET'S ENCRYPT)" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "CERTIFICATE STATUS" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3419,7 +3406,7 @@ msgstr "CERTIFICATE SUCCESSFULLY REVOKED FOR DOMAIN {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "FAILED TO REVOKE CERTIFICATE FOR DOMAIN {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3429,14 +3416,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 #, fuzzy #| msgid "Chat Server (XMPP)" msgid "Matrix Synapse" @@ -3518,7 +3505,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3526,7 +3513,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3535,18 +3522,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3652,7 +3639,7 @@ msgstr "SETTING UNCHANGED" msgid "Server URL updated" msgstr "{name} DELETED." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3661,11 +3648,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" @@ -3747,7 +3734,7 @@ msgstr "CONFIGURATION UPDATED" msgid "Damage configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3758,15 +3745,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" @@ -3808,38 +3795,38 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy #| msgid "Monkeysphere" msgid "MLDonkey" msgstr "MONKEYSPHERE" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 #, fuzzy #| msgid "Enable Shaarli" msgid "Peer-to-peer File Sharing" @@ -3857,7 +3844,7 @@ msgstr "MONKEYSPHERE" msgid "AMLDonkey" msgstr "MONKEYSPHERE" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 #, fuzzy #| msgid "" #| "With Monkeysphere, a PGP key can be generated for each configured domain " @@ -3887,7 +3874,7 @@ msgstr "" "getting-started-ssh/\\\"> MONKEYSPHERE SSH DOCUMENTATION FOR MORE " "DETAILS." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 #, fuzzy #| msgid "" #| "With Monkeysphere, a PGP key can be generated for each configured domain " @@ -3916,7 +3903,7 @@ msgstr "" "getting-started-ssh/\\\"> MONKEYSPHERE SSH DOCUMENTATION FOR MORE " "DETAILS." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "MONKEYSPHERE" @@ -3935,6 +3922,12 @@ msgstr "CANCEL" msgid "Service" msgstr "SERVICE" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +#, fuzzy +#| msgid "Domain" +msgid "Domains" +msgstr "DOMAIN" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 #, fuzzy @@ -4060,7 +4053,7 @@ msgstr "PUBLISHED KEY TO KEYSERVER." msgid "Error occurred while publishing key." msgstr "ERROR OCCURRED WHILE PUBLISHING KEY." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4068,7 +4061,7 @@ msgstr "" "MUMBLE IS AN OPEN SOURCE, LOW-LATENCY, ENCRYPTED, HIGH QUALITY VOICE CHAT " "SOFTWARE." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4078,11 +4071,11 @@ msgstr "" "href=\"http://mumble.info\">CLIENTS TO CONNECT TO MUMBLE FROM YOUR " "DESKTOP AND ANDROID DEVICES ARE AVAILABLE." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -4114,7 +4107,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "PASSWORD CHANGED SUCCESSFULLY." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -4123,7 +4116,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "NAME SERVICES" @@ -4141,23 +4134,23 @@ msgstr "" msgid "Services" msgstr "SERVICE" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "NETWORKS" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "USING DNSSEC ON IPV{kind}" @@ -4660,7 +4653,7 @@ msgstr "DNS SERVER" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "DEFAULT" @@ -4673,7 +4666,7 @@ msgid "This connection is not active." msgstr "THIS CONNECTION IS NOT ACTIVE." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "SECURITY" @@ -5172,7 +5165,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "INTERFACE" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5265,7 +5258,7 @@ msgstr "CONNECTION {name} DELETED." msgid "Failed to delete connection: Connection not found." msgstr "FAILED TO DELETE CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, fuzzy, python-brace-format #| msgid "" #| "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5289,26 +5282,26 @@ msgstr "" "YOU CAN ALSO ACCESS THE REST OF THE INTERNET VIA %(box_name)s FOR ADDED " "SECURITY AND ANONYMITY." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "CONNECTION TYPE" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "OpenVPN" msgid "OpenVPN" msgstr "OPENVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "VIRTUAL PRIVATE NETWORK (OPENVPN)" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5387,7 +5380,7 @@ msgstr "PROFILE IS SPECIFIC TO EACH USER OF %(box_name)s. KEEP IT A SECRET." msgid "Download my profile" msgstr "DOWNLOAD MY PROFILE" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, fuzzy, python-brace-format #| msgid "" #| "PageKite is a system for exposing %(box_name)s services when you don't " @@ -5405,13 +5398,13 @@ msgstr "" "SERVICES ARE UNREACHABLE FROM THE REST OF THE INTERNET. THIS INCLUDES THE " "FOLLOWING SITUATIONS:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, fuzzy, python-brace-format #| msgid "%(box_name)s is behind a restricted firewall." msgid "{box_name} is behind a restricted firewall." msgstr "%(box_name)s IS BEHIND A RESTRICTED FIREWALL." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "%(box_name)s is connected to a (wireless) router which you don't control." @@ -5419,7 +5412,7 @@ msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "%(box_name)s IS CONNECTED TO A (WIRELESS) ROUTER WHICH YOU DON'T CONTROL." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5427,7 +5420,7 @@ msgstr "" "YOUR ISP DOES NOT PROVIDE YOU AN EXTERNAL IP ADDRESS AND INSTEAD PROVIDES " "INTERNET CONNECTION THROUGH NAT." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 #, fuzzy #| msgid "" #| "Your ISP does not provide you a static IP address and your IP address " @@ -5439,11 +5432,11 @@ msgstr "" "YOUR ISP DOES NOT PROVIDE YOU A STATIC IP ADDRESS AND YOUR IP ADDRESS " "CHANGES EVERTIME YOU CONNECT TO INTERNET." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "YOUR ISP LIMITS INCOMING CONNECTIONS." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5462,19 +5455,19 @@ msgstr "" "PROVIDER, FOR EXAMPLE PAGEKITE.NET. IN " "FUTURE IT MIGHT BE POSSIBLE TO USE YOUR BUDDY'S %(box_name)s FOR THIS." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 #, fuzzy #| msgid "Pagekite" msgid "PageKite" msgstr "PAGEKITE" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 #, fuzzy #| msgid "Public Visibility (PageKite)" msgid "Public Visibility" msgstr "PUBLIC VISIBILITY (PAGEKITE)" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 #, fuzzy #| msgid "PageKite Account" msgid "PageKite Domain" @@ -5629,35 +5622,35 @@ msgstr "" "SEE SSH CLIENT SETUP INSTRUCTIONS" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" msgstr "SYSTEM CONFIGURATION" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "RESTART OR SHUT DOWN THE SYSTEM." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "POWER" @@ -5718,7 +5711,7 @@ msgstr "" msgid "Shut Down Now" msgstr "SHUT DOWN NOW" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 #, fuzzy #| msgid "" #| "Privoxy is a non-caching web proxy with advanced filtering capabilities " @@ -5733,7 +5726,7 @@ msgstr "" "ENHANCING PRIVACY, MODIFYING WEB PAGE DATA AND HTTP HEADERS, CONTROLLING " "ACCESS, AND REMOVING ADS AND OTHER OBNOXIOUS INTERNET JUNK." -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, fuzzy, python-brace-format #| msgid "" #| "You can use Privoxy by modifying your browser proxy settings to your " @@ -5754,24 +5747,24 @@ msgstr "" "config.privoxy.org\">HTTP://CONFIG.PRIVOXY.ORG/ OR HTTP://P.P.\"" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 #, fuzzy #| msgid "Enable Privoxy" msgid "Privoxy" msgstr "ENABLE PRIVOXY" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "PRIVOXY WEB PROXY" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "ACCESS {url} WITH PROXY {proxy} ON TCP{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, fuzzy, python-brace-format #| msgid "" #| "Quassel is an IRC application that is split into two parts, a \"core\" " @@ -5795,7 +5788,7 @@ msgstr "" "ONE OR MORE QUASSEL CLIENTS FROM A DESKTOP OR A MOBILE CAN BE USED TO " "CONNECT AND DISCONNECT FROM IT." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your DESKTOP AND MOBILE DEVICES ARE AVAILABLE." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" @@ -5821,7 +5814,7 @@ msgstr "QUASSEL IRC CLIENT" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5831,19 +5824,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5912,7 +5905,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5924,7 +5917,7 @@ msgstr "" "FROM AN EMAIL CLIENT, INCLUDING MIME SUPPORT, ADDRESS BOOK, FOLDER " "MANIPULATION, MESSAGE SEARCHING AND SPELL CHECKING." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -5945,7 +5938,7 @@ msgstr "" "IMAP.EXAMPLE.COM. FOR IMAP OVER SSL (RECOMMENDED), FILL THE " "SERVER FIELD LIKE IMAPS://IMAP.EXAMPLE.COM." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 #, fuzzy #| msgid "" #| "For Gmail, username will be your Gmail address, password will be your " @@ -5969,19 +5962,19 @@ msgstr "" "lesssecureapps\" >HTTPS://WWW.GOOGLE.COM/SETTINGS/SECURITY/LESSSECUREAPPS)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Email Client" msgstr "EMAIL CLIENT (ROUNDCUBE)" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5990,31 +5983,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -6106,13 +6099,13 @@ msgstr "ACTIONS" msgid "FreedomBox OS disk" msgstr "FREEDOMBOX" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "ADD SERVICE" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -6148,27 +6141,27 @@ msgstr "{name} DELETED." msgid "Error disabling share: {error_message}" msgstr "ERROR INSTALLING PACKAGES: {string} {details}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Web Search" @@ -6346,11 +6339,11 @@ msgstr "ERROR SETTING TIME ZONE: {exception}" msgid "Updated security configuration" msgstr "GENERAL CONFIGURATION" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "SHAARLI ALLOWS YOU TO SAVE AND SHARE BOOKMARKS." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6364,24 +6357,24 @@ msgstr "" "a> PATH ON THE WEB SERVER. NOTE THAT SHAARLI ONLY SUPPORTS A SINGLE USER " "ACCOUNT, WHICH YOU WILL NEED TO SETUP ON THE INITIAL VISIT." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "SHAARLI" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 #, fuzzy #| msgid "Bookmarks (Shaarli)" msgid "Bookmarks" msgstr "BOOKMARKS (SHAARLI)" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6390,17 +6383,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -6433,7 +6426,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6549,14 +6542,14 @@ msgstr "EDIT USER" msgid "Share deleted." msgstr "{name} DELETED." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6564,14 +6557,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 #, fuzzy #| msgid "Create User" msgid "Storage Snapshots" @@ -6787,7 +6780,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6795,7 +6788,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "SECURE SHELL (SSH) SERVER" @@ -6842,7 +6835,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6850,7 +6843,7 @@ msgstr "" msgid "Login" msgstr "LOGIN" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6858,159 +6851,159 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 #, fuzzy #| msgid "reStore" msgid "Storage" msgstr "RESTORE" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "REPRO SERVICE IS RUNNING" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "THIS SERVICE ALREADY EXISTS" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "REPRO SERVICE IS NOT RUNNING" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "INVALID HOSTNAME" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "DOWNLOAD DIRECTORY" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "DOWNLOAD DIRECTORY" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 #, fuzzy #| msgid "Add Service" msgid "Share" msgstr "ADD SERVICE" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -7090,7 +7083,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7098,7 +7091,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7110,22 +7103,22 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 #, fuzzy #| msgid "Installation" msgid "Administer Syncthing application" msgstr "INSTALLATION" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7133,7 +7126,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7141,11 +7134,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -7182,7 +7175,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 #, fuzzy #| msgid "" #| "Tor is an anonymous communication system. You can learn more about it " @@ -7203,42 +7196,42 @@ msgstr "" "THE " "TOR BROWSER." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "TOR HIDDEN SERVICE" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "TOR BRIDGE RELAY" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "TOR RELAY PORT AVAILABLE" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "OBFS3 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "OBFS4 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "ACCESS URL {url} ON TCP{kind} VIA TOR" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "CONFIRM TOR USAGE AT {url} ON TCP{kind}" @@ -7391,13 +7384,17 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "A TOR SOCKS PORT IS AVAILABLE ON YOUR %(box_name)s ON TCP PORT 9050." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "SETTING UNCHANGED" + +#: plinth/modules/transmission/__init__.py:24 #, fuzzy #| msgid "Deluge is a BitTorrent client that features a Web UI." msgid "Transmission is a BitTorrent client with a web interface." msgstr "DELUGE IS A BITTORRENT CLIENT THAT FEATURES A WEB UI." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7409,25 +7406,25 @@ msgstr "" "BITTORRENT IS A PEER-TO-PEER FILE SHARING PROTOCOL. TRANSMISSION DAEMON " "HANDLES BITORRENT FILE SHARING. NOTE THAT BITTORRENT IS NOT ANONYMOUS." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Transmission" msgstr "TRANSMISSION BITTORRENT" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, the blogs and wikis will be available from /IKIWIKI." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -7461,12 +7458,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7474,7 +7471,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7714,14 +7711,14 @@ msgstr "STARTING UPGRADE FAILED." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7729,15 +7726,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "USERS AND GROUPS" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "CHECK LDAP ENTRY \"{search_item}\"" @@ -7999,18 +7996,18 @@ msgstr "CHANGE PASSWORD" msgid "Password changed successfully." msgstr "PASSWORD CHANGED SUCCESSFULLY." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8356,7 +8353,7 @@ msgstr "DELETE CONNECTION" msgid "Server deleted." msgstr "{name} DELETED." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8365,7 +8362,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8374,28 +8371,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "ADDRESS" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8413,7 +8410,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8426,7 +8423,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8434,11 +8431,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -8474,27 +8471,27 @@ msgstr "PPPOE" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 #, fuzzy #| msgid "Installation" msgid "installing" msgstr "INSTALLATION" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "SETTING UNCHANGED" -#: plinth/package.py:193 +#: plinth/package.py:252 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -8877,6 +8874,16 @@ msgstr "%(percentage)s%% COMPLETE" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "ERROR SETTING DOMAIN NAME: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "AN ERROR OCCURRED DURING CONFIGURATION." + #, fuzzy #~| msgid "Disabled" #~ msgid "Disable selected" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 2b4d5730a..39260ac53 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-10-22 22:43+0000\n" "Last-Translator: Coucouf \n" "Language-Team: French calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1075,15 +1076,15 @@ msgstr "" "cette application. Les utilisateurs ayant cet accès pourront utiliser toutes " "les collections." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Utilisation des collections de livres électroniques calibre" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "Bibliothèque de livres numériques" @@ -1158,7 +1159,7 @@ msgstr "{name} supprimé." msgid "Could not delete {name}: {error}" msgstr "La suppression de {name} a échoué : {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1172,7 +1173,7 @@ msgstr "" "sont pas nécessaires dans la majorité des cas. Un terminal web est également " "fourni pour pouvoir réaliser des opérations d’administration via une console." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1186,7 +1187,7 @@ msgstr "" "l’agrégation de liens (« bonding »), la création de ponts (« bridging ») et " "la gestion de réseaux virtuels VLAN." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1195,7 +1196,7 @@ msgstr "" "L’accès est autorisé à tout utilisateur faisant " "partie du groupe admin sur la {box_name}." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1204,12 +1205,12 @@ msgstr "" "fonctionnera pas si vous tentez d’y accédez en utilisant une adresse IP dans " "son URL." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Administration du serveur" @@ -1221,7 +1222,7 @@ msgstr "Accès" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit ne fonctionnera qu’en y accédant depuis les URL suivantes." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1229,11 +1230,11 @@ msgstr "" "Cette page vous permet de modifier certains paramètres généraux comme le nom " "de machine, le nom de domaine, la page d’accueil du serveur web, etc." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Configuration générale" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1242,7 +1243,7 @@ msgstr "Configuration générale" msgid "Configure" msgstr "Configurer" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1378,7 +1379,7 @@ msgstr "Les applications et fonctionnalités avancées seront affichées" msgid "Hiding advanced apps and features" msgstr "Les applications et les fonctionnalités avancées seront masquées" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1391,7 +1392,7 @@ msgstr "" "peuvent l’utiliser afin de mettre en relation des participants pour qui cela " "aurait été impossible autrement." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as ejabberd qui peuvent l’utiliser en reportant les détails " "fournis ici dans leur configuration." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "Assistant de VoIP" @@ -1425,7 +1426,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Veuillez utiliser les secrets d’authentification partagés suivants :" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1433,11 +1434,11 @@ msgstr "" "Le serveur de temps réseau est un programme permettant de maintenir l’heure " "du système synchronisée avec les serveurs Internet." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Date et heure" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Heure synchronisée avec le serveur de temps NTP" @@ -1466,11 +1467,11 @@ msgstr "Erreur lors de la modification du fuseau horaire : {exception}" msgid "Time zone set" msgstr "Fuseau horaire modifié" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge est un client BitTorrent avec une interface utilisateur web." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1479,17 +1480,17 @@ msgstr "" "il est fortement recommandé de le modifier immédiatement après l’activation " "du service." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Téléchargement de fichiers avec les applications BitTorrent" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "Client web pour BitTorrent" @@ -1501,7 +1502,7 @@ msgstr "Répertoire de téléchargement" msgid "Bittorrent client written in Python/PyGTK" msgstr "Client BitTorrent écrit en Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1510,54 +1511,54 @@ msgstr "" "sur votre système pour confirmer que les applications et les services " "fonctionnent comme prévu." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Diagnostics" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: 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:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: 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:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "erreur" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "avertissement" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "Mio" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "Gio" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" "Vous devriez désactiver certaines application pour libérer de la mémoire." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "" "Il est déconseillé d’installer de nouvelles applications sur ce système." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1566,7 +1567,7 @@ msgstr "" "Le système est bientôt à court de mémoire : {percent_used}% utilisés, " "{memory_available} {memory_available_unit} libres. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Mémoire disponible faible" @@ -1619,7 +1620,7 @@ msgstr "Résultat" msgid "Diagnostic Test" msgstr "Test de diagnostic" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1627,12 +1628,12 @@ msgstr "" "diaspora* est un réseau social décentralisé avec lequel vous pouvez vous-" "même stocker et contrôler vos donnés personnelles." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Réseau social fédéré" @@ -1694,7 +1695,7 @@ msgstr "L’inscription d’utilisateurs est activée" msgid "User registrations disabled" msgstr "L’inscription d’utilisateurs est désactivée" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1706,7 +1707,7 @@ msgstr "" "Et ceci empêchera d’autres utilisateurs de découvrir les services proposés " "par cette {box_name}." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1724,11 +1725,11 @@ msgstr "" "d’assigner votre nom DNS à la nouvelle IP, de sorte que si quelqu’un sur " "Internet demande votre nom DNS, il obtiendra bien votre adresse IP courante." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Client DNS dynamique" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Nom de domaine dynamique" @@ -1787,12 +1788,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Laissez ce champ vide pour conserver le mot de passe précédent." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Paramètre optionnel. Entrer l’URL d’un service qui détecte automatiquement " "votre adresse IP publique réelle et la retourne en réponse (par exemple : " @@ -1876,12 +1882,18 @@ msgid "Please provide a password" msgstr "Veuillez saisir un mot de passe" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Si vous cherchez un compte DNS dynamique gratuit, vous pourrez sans doute " "trouver un service compatible GnuDIP sur Git tutorial." @@ -2485,15 +2488,15 @@ msgstr "" "Pour en apprendre plus sur l’utilisation de Git, consultez ce tutoriel Git." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Accès aux dépôts Git en lecture et en écriture" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Hébergement Git simple" @@ -2606,31 +2609,31 @@ msgstr "Dépôt modifié." msgid "Edit repository" msgstr "Modifier le dépôt" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Documentation" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Manuel utilisateur" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Obtenir de l’aide" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Partager vos impressions" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2938,7 +2941,7 @@ msgstr "À propos de la {box_name}" msgid "{box_name} Manual" msgstr "Manuel {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2950,7 +2953,7 @@ msgstr "" "fournit de l’anonymat en envoyant du trafic chiffré sur un réseau distribué " "actionné par des volontaires partout sur la planète." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2958,7 +2961,7 @@ msgstr "" "Vous trouverez plus d’informations à propos d’I2P sur le site web de leur projet." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2966,19 +2969,19 @@ msgstr "" "L’interface web fournie vous guidera dans les étapes de configuration lors " "de votre première visite." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Gestion de l’application I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Réseau d'anonymisation" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Serveur mandataire I2P" @@ -3024,7 +3027,7 @@ msgstr "" "un réseau de pair à pair. Téléchargez des fichiers en ajoutant des torrents " "ou en créant un nouveau torrent pour partager un fichier." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3035,7 +3038,7 @@ msgstr "" "fonctionnalités de blogue habituelles telles que les commentaires et les " "flux RSS." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3050,15 +3053,15 @@ msgstr "" "utilisateurs dans la configuration des utilisateurs." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki et blogue" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Consultation et modification des applications de wiki" @@ -3138,11 +3141,11 @@ msgstr "{title} supprimé." msgid "Could not delete {title}: {error}" msgstr "La suppression de {title} n'a pas abouti : {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted est un serveur pour Gobby, un éditeur de texte collaboratif." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3153,11 +3156,11 @@ msgstr "" "Gobby et installez-le. Lancez ensuite Gobby, sélectionnez « Connect to " "Server » et saisissez le nom de domaine de la {box_name}." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Serveur Gobby" @@ -3178,7 +3181,7 @@ msgstr "" "Lancez Gobby, sélectionnez « Connect to Server » et saisissez le nom de " "domaine de la {box_name}." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3186,11 +3189,11 @@ msgstr "" "JSXC est un client web pour XMPP. Il s’utilise typiquement avec un serveur " "XMPP tournant sur la même machine." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Client de discussion" @@ -3199,7 +3202,7 @@ msgstr "Client de discussion" msgid "JavaScript license information" msgstr "Information de licence JavaScript" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3215,7 +3218,7 @@ msgstr "" "est propriétaire du domaine auprès de l’autorité de certification « Let’s " "Encrypt »." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3228,15 +3231,15 @@ msgstr "" "repository/\">conditions d’utilisation de Let’s Encrypt avant d’utiliser " "ce service." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Certificats" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "Test impossible : aucun domaine n’est configuré." @@ -3343,7 +3346,7 @@ msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" "Échec de la suppression du certificat pour le domaine {domain} : {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3361,7 +3364,7 @@ msgstr "" "un serveur Matrix donné peuvent converser avec des utilisateurs sur tous les " "autres serveurs Matrix grâce la fédération." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3371,7 +3374,7 @@ msgstr "" "Installez pour cela l’application Coturn ou " "bien configurez un serveur externe." -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3468,7 +3471,7 @@ msgstr "" "valide. Rendez-vous sur Let’s Encrypt " "pour en obtenir un." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3482,7 +3485,7 @@ msgstr "" "web de type wiki, pour prendre des notes ou pour collaborer sur des projets " "entre amis." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3497,7 +3500,7 @@ msgstr "" "vous rendant sur la page Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3505,12 +3508,12 @@ msgstr "" "Toute personne ayant le lien vers ce wiki peut le consulter. Seuls les " "utilisateurs connectés avec leur compte peuvent y apporter des modifications." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3603,7 +3606,7 @@ msgstr "Thème par défaut modifié" msgid "Server URL updated" msgstr "URL du Serveur mise à jour" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3616,11 +3619,11 @@ msgstr "" "au serveur, vous devez disposer d'un client Minetest." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Bac à sable cubique" @@ -3695,7 +3698,7 @@ msgstr "Configuration PVP mise à jour" msgid "Damage configuration updated" msgstr "Configuration des blessures mise à jour" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3713,15 +3716,15 @@ msgstr "" "portables, les smartphones, les télévisions et les systèmes de jeu (comme la " "PS3 ou la Xbox 360) ainsi que les applications telles que Totem ou Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Serveur de streaming de médias" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Serveur de médias simple" @@ -3767,7 +3770,7 @@ msgstr "Le répertoire indiqué n’existe pas." msgid "Updated media directory" msgstr "Répertoire multimédia mis à jour" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3777,7 +3780,7 @@ msgstr "" "pour s'échanger de gros fichiers. Elle peut participer à de nombreux réseaux " "de pair à pair dont eDonkey, Kademlia, Overnet, BitTorrent et DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3788,7 +3791,7 @@ msgstr "" "également l’utiliser depuis n’importe quel client sur téléphone ou " "ordinateur, ou depuis une interface telnet. Consultez le manuel." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3796,16 +3799,16 @@ msgstr "" "Sur la {box_name}, les fichiers sont téléchargés dans le répertoire /var/lib/" "mldonkey/." -#: plinth/modules/mldonkey/__init__.py:55 +#: 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:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Partage de fichiers de pair à pair" @@ -3817,7 +3820,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3839,7 +3842,7 @@ msgstr "" "référez-vous à la documentation SSH de Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3858,7 +3861,7 @@ msgstr "" "série de logiciels comme expliqué sur le site Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3877,6 +3880,10 @@ msgstr "Annuler" msgid "Service" msgstr "Service" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domaines" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3983,7 +3990,7 @@ msgstr "Clef publiée sur le serveur de clefs." msgid "Error occurred while publishing key." msgstr "Une erreur est survenue lors de la publication de la clef." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3991,7 +3998,7 @@ msgstr "" "Mumble est un logiciel de tchat vocal de haute qualité, open source, crypté " "et à faible temps de latence." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4002,11 +4009,11 @@ msgstr "" "permettant de se connecter à Mumble depuis votre ordinateur ou votre " "appareil Android." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Tchat vocal" @@ -4035,7 +4042,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "Le mot de passe du super utilisateur a été mis à jour." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -4049,7 +4056,7 @@ msgstr "" "les services HTTP, HTTPS et SSH sont activés ou pas pour les connexions " "entrantes via le nom en question." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Services de nommage" @@ -4065,7 +4072,7 @@ msgstr "Toutes les applications web" msgid "Services" msgstr "Services" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4074,7 +4081,7 @@ msgstr "" "le Wi-Fi ou le protocole PPPoE. Partage de cette connexion avec d’autres " "appareils du réseau local." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4082,11 +4089,11 @@ msgstr "" "Les périphériques gérés par d’autres méthodes pourraient ne pas être " "disponibles pour être configurés ici." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Réseau" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilise DNSSEC sur IPv{kind}" @@ -4648,7 +4655,7 @@ msgstr "Serveur DNS" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Défaut" @@ -4661,7 +4668,7 @@ msgid "This connection is not active." msgstr "Cette connexion n'est pas active." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Sécurité" @@ -5158,7 +5165,7 @@ msgstr "générique" msgid "TUN or TAP interface" msgstr "Interface TUN ou TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5251,7 +5258,7 @@ msgstr "Connexion {name} supprimée." msgid "Failed to delete connection: Connection not found." msgstr "Échec de suppression de la connexion : connexion introuvable." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5269,20 +5276,20 @@ msgstr "" "d’accéder au reste d’Internet au travers de la {box_name} pour une sécurité " "et un anonymat accrus." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "Connexion aux services VPN" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Réseau privé virtuel" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5371,7 +5378,7 @@ msgstr "" msgid "Download my profile" msgstr "Télécharger mon profil" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5385,18 +5392,18 @@ msgstr "" "reste de l'Internet. Cela se produit en général dans les situations " "suivantes :" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "La {box_name} est derrière un pare-feu restrictif." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "La {box_name} est connectée à un réseau (sans fil) que vous ne contrôlez pas." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5404,7 +5411,7 @@ msgstr "" "Votre FAI ne vous fournit pas d’adresse IP externe, mais une connexion " "Internet via une translation d’adresse réseau (NAT)." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5412,11 +5419,11 @@ msgstr "" "Votre FAI ne vous fournit pas une adresse IP statique, elle change à chaque " "fois que vous vous connectez à Internet." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Votre FAI limite les connexions entrantes." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5432,15 +5439,15 @@ msgstr "" "a>. Il se pourrait que dans le futur, l’utilisation de la {box_name} d’un " "ami pour cela soit également proposée." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Visibilité publique" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "Domaine PageKite" @@ -5584,12 +5591,12 @@ msgstr "" "Regardez comment configurer un client SSH sur le wiki PageKite (en anglais)" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Performance" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5600,7 +5607,7 @@ msgstr "" "des tendances d’utilisation et vérifier si la machine est surchargée par " "certains utilisateurs ou certains services." -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5608,15 +5615,15 @@ msgstr "" "Les métriques de performance sont collectées par le Co-Pilote " "« Performance » et visualisables dans l’appli Cockpit." -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Surveillance du système" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Redémarrer ou éteindre le système." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Alimentation" @@ -5679,7 +5686,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Éteindre immédiatement" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5691,7 +5698,7 @@ msgstr "" "accès et de retirer les publicités et autres éléments nuisibles de " "l’Internet. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5707,20 +5714,20 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ ou http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Serveur mandataire web" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accéder à l'URL {url} avec le mandataire {proxy} sur tcp{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5738,7 +5745,7 @@ msgstr "" "ordinateur ou sur mobile peuvent ensuite se connecter ou se déconnecter du " "« cœur »." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile sont disponibles pour " "téléchargement." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "Client IRC" @@ -5763,7 +5770,7 @@ msgstr "Client IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5780,7 +5787,7 @@ msgstr "" "cliente compatible. Tous les utilisateur disposant d’un compte sur la " "{box_name} ont accès à Radicale." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5791,12 +5798,12 @@ msgstr "" "charge l’ajout d’événements ou de contacts, opérations qui doivent être " "réalisées avec un client dédié." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Agenda et carnet d’adresses" @@ -5880,7 +5887,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuration des droits d’accès mise à jour" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5894,7 +5901,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:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5909,7 +5916,7 @@ msgstr "" "(recommandé), remplissez le champ serveur avec une adresse du type " "imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5925,11 +5932,11 @@ msgstr "" "settings/security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "Client de courriel" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5937,7 +5944,7 @@ msgstr "" "Samba permet de partager des fichiers et des répertoires entre la FreedomBox " "et d’autres machines de votre réseau local." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5951,11 +5958,11 @@ msgstr "" "smb://{hostname}.local (sur Linux et Mac). Vous pourrez choisir parmi trois " "types de partages : " -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "Partage ouvert : accessible par tout le monde dans votre réseau local." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5963,7 +5970,7 @@ msgstr "" "Partage de groupe : accessible uniquement aux utilisateurs de la FreedomBox " "qui sont membres du groupe freedombox-share." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5971,15 +5978,15 @@ msgstr "" "Partage de dossier personnel : chaque utilisateur du groupe freedombox-share " "a son propre espace privé." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Accès aux partages privés" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Stockage de fichiers réseau" @@ -6068,11 +6075,11 @@ msgstr "Action" msgid "FreedomBox OS disk" msgstr "Disque du système FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Ouvrir un partage" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Partage de groupe" @@ -6098,7 +6105,7 @@ msgstr "Partage désactivé." msgid "Error disabling share: {error_message}" msgstr "Erreur lors de la désactivation du partage : {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6107,7 +6114,7 @@ msgstr "" "privée. Il rassemble et affiche les résultats de plusieurs moteurs de " "recherche." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6115,15 +6122,15 @@ msgstr "" "Searx peut être utilisé pour éviter le pistage et le profilage fait par les " "moteurs de recherche. Par défaut il ne stocke aucun cookie." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Recherches sur le Web" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Recherche web" @@ -6311,11 +6318,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:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli permet de sauvegarder et de partager vos signets." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6323,15 +6330,15 @@ msgstr "" "Notez que Shaarli ne sait gérer qu’un unique compte utilisateur, que vous " "devrez configurer lors de votre première visite." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Signets" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6341,7 +6348,7 @@ msgstr "" "votre trafic Internet. Il peut être utilisé pour contourner les problèmes de " "filtrage ou de censure d’Internet." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6355,7 +6362,7 @@ msgstr "" "mandataire, et leurs flux de données seront chiffrés et transmis vers " "l’extérieur au travers du serveur Shadowsocks." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6364,11 +6371,11 @@ msgstr "" "l’URL de mandataire SOCKS5 sur votre appareil, navigateur ou application " "avec l’URL http://adresse_freedombox:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Mandataire Socks5" @@ -6401,7 +6408,7 @@ msgstr "" "Méthode de chiffrement. Doit correspondre à celle qui a été configurée sur " "le serveur." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6510,7 +6517,7 @@ msgstr "Modifier le partage" msgid "Share deleted." msgstr "Partage supprimé." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6521,7 +6528,7 @@ msgstr "" "utilisés pour ramener le système à un état précédent connu pour être " "fonctionnel, dans le cas ou des changements non désirés ont été appliqués." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6533,7 +6540,7 @@ msgstr "" "instantanés plus anciens seront supprimés automatiquement en fonction du " "paramétrage qui suit." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for sauvegardes car ils sont forcément conservés sur la même partition. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Instantanés de disque" @@ -6751,7 +6758,7 @@ msgstr "Le système doit être redémarré pour terminer le retour en arrière." msgid "Rollback to Snapshot" msgstr "Revenir à l'instantané" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6763,7 +6770,7 @@ msgstr "" "effectuer des tâches d'administration, copier des fichiers ou bien faire " "fonctionner d’autres services en utilisant de telles connexions." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Serveur Secure Shell (SSH)" @@ -6809,7 +6816,7 @@ msgstr "Authentification SSH par mot de passe désactivée." msgid "SSH authentication with password enabled." msgstr "Authentification SSH par mot de passe activée." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Authentification unique" @@ -6817,7 +6824,7 @@ msgstr "Authentification unique" msgid "Login" msgstr "S’identifier" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6829,109 +6836,109 @@ msgstr "" "d’utilisation, monter et démonter des médias amovibles, étendre la partition " "racine, etc." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Stockage" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} octets" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} Kio" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Mio" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Gio" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Tio" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "L'opération a échoué." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "L'opération a été annulée." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Le périphérique est déjà en train d’être démonté." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "L’opération n’est pas disponible par manque d’un pilote ou d’un outil adapté." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "L'opération ne s'est pas terminée." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "L'opération devrait réveiller un disque qui se trouve dans un état " "d'endormissement profond." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Tentative de démontage d’un périphérique en cours d’utilisation." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "L'opération a déjà été annulée." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "Vous n'êtes pas autorisé à effectuer l'opération demandée." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Le périphérique est déjà monté." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Le périphérique n’est pas monté." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "Vous n'êtes pas autorisé à utiliser l'option demandée." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Le périphérique est monté par un autre utilisateur." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Espace disque faible sur la partition système : {percent_used}% utilisés, " "{free_space} libres." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Espace disque faible" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "Erreur disque imminente" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6940,39 +6947,39 @@ msgstr "" "Le disque {id} reporte qu'il risque de ne pas marcher bientôt. Veuillez " "copier toute donnée tant que vous le pouvez et remplacez le disque." -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Nom de répertoire invalide." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Le répertoire n’existe pas." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Le chemin n’est pas un répertoire." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "Le répertoire n’est pas lisible par l’utilisateur." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "L’utilisateur ne peut pas écrire dans le répertoire." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Répertoire" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Sous-répertoire (optionnel)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Partage" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Autre répertoire (indiquer ci-dessous)" @@ -7057,7 +7064,7 @@ msgstr "Le périphérique peut être débranché en toute sécurité." msgid "Error ejecting device: {error_message}" msgstr "Erreur lors de l’éjection du périphérique : {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7070,7 +7077,7 @@ msgstr "" "seront automatiquement répliquées aux autres appareils qui utilisent " "Syncthing." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7090,20 +7097,20 @@ msgstr "" "accessible uniquement aux utilisateurs membres des groupes « admin » ou " "« syncthing-access »." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Administration de l’application Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Synchronisation de fichiers" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7117,7 +7124,7 @@ msgstr "" "indisponibles, vos fichiers pourront être récupérés depuis les nœuds " "restants." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7128,11 +7135,11 @@ msgstr "" "Des introducteurs supplémentaires peuvent être ajoutés, afin de faire " "découvrir ce nœud aux autres nœuds de stockage." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Stockage de fichiers distribué" @@ -7172,7 +7179,7 @@ msgstr "Introducteurs connectés" msgid "Remove" msgstr "Supprimer" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7186,40 +7193,40 @@ msgstr "" "recommande l’utilisation du Navigateur Tor." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Service onion Tor" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Mandataire Socks Tor" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Relais Tor de type pont (« bridge relay »)" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Le port du relais Tor est disponible" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Abonné au transport obfs3" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Abonné au transport obfs4" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Accédez à l'URL {url} sur tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmez l'utilisation de Tor pour {url} sur tcp{kind}" @@ -7373,12 +7380,16 @@ msgstr "" "Un port SOCKS pour Tor est accessible sur votre %(box_name)s sur le port TCP " "9050." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Paramètre inchangé" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission est un client BitTorrent avec une interface utilisateur web." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7386,16 +7397,16 @@ msgstr "" "BitTorrent est un protocole de partage de fichiers de pair à pair. Notez que " "l’utilisation de BitTorrent n’est pas anonyme." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "Veuillez ne pas changer le port par défaut du démon de Transmission." -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7406,7 +7417,7 @@ msgstr "" "n’importe quel appareil tout en restant au plus près du design d’une " "application de bureau complète." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any utilisateur disposant d’un compte sur la {box_name}." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7424,15 +7435,15 @@ msgstr "" "ordinateur, saisissez l’URL tt-rss-app pour " "vous connecter." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Lecture et abonnement à des flux d’actualités" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Lecteur de flux d'informations" @@ -7440,14 +7451,14 @@ msgstr "Lecteur de flux d'informations" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Rechercher et installer les dernières mises à jour logicielles et les " "correctifs de sécurité." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7461,7 +7472,7 @@ msgstr "" "nécessaire, il est effectué à 2h00, rendant indisponible l’ensemble des " "applications pour une courte période." -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7695,7 +7706,7 @@ msgstr "Le lancement de la mise à niveau a échoué." msgid "Frequent feature updates activated." msgstr "Mise à jour régulière des fonctionnalités activée." -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7706,7 +7717,7 @@ msgstr "" "Certaines applis nécessitent également qu’un compte fasse partie d’un groupe " "spécifique pour que l’utilisateur puisse accéder à l'application." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7718,15 +7729,15 @@ msgstr "" "principale. En revanche, seuls les utilisateurs membres du groupe admin peuvent modifier les applications ou changer les paramètres système." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Utilisateurs et groupes" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Accès à tous les services et à la configuration du système" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Vérification de l’entrée LDAP « {search_item} »" @@ -7979,11 +7990,11 @@ msgstr "Changer Mot de Passe" msgid "Password changed successfully." msgstr "Le mot de passe a été changé." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard est un tunnel VPN rapide, moderne et sécurisé." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7993,7 +8004,7 @@ msgstr "" "virtuel VPN proposant un service WireGuard, pour router tout le trafic " "sortant de la {box_name} à travers ce VPN." -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8318,7 +8329,7 @@ msgstr "Supprimer la connexion à un serveur" msgid "Server deleted." msgstr "Serveur supprimé." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8333,7 +8344,7 @@ msgstr "" "thèmes. L’interface d’administration et les pages Web produites sont " "compatibles avec les appareils mobiles." -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8348,7 +8359,7 @@ msgstr "" "l’interface d’administration pour améliorer les URL de vos pages et de vos " "billets de blogue." -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " @@ -8359,7 +8370,7 @@ msgstr "" "href=\"/wordpress/wp-admin/\">page d’administration à vos favoris pour y " "accéder ultérieurement." -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " @@ -8370,12 +8381,12 @@ msgstr "" "la mise à jour de modules additionnels et de thèmes se fait à vos risques et " "périls." -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "Site web et blogue" @@ -8393,7 +8404,7 @@ msgstr "" "WordPress. N’activez cette option qu’après avoir réalisé la configuration " "initiale de WordPress." -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8416,7 +8427,7 @@ msgstr "" "recherche, de carte et de calendrier. Les photos peuvent être partagées " "unitairement avec d’autres en leur envoyant un lien direct." -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8427,11 +8438,11 @@ msgstr "" "l’administrateur Zoph. Pour ajouter des utilisateurs ceux-ci doivent être " "créés à la fois sur la {box_name} et dans Zoph avec le même identifiant." -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "Photothèque" @@ -8470,23 +8481,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Générique" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Erreur pendant l’installation" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "installation en cours" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "téléchargement en cours" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "changement de support" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "fichier de configuration : {file}" @@ -8866,6 +8877,14 @@ msgstr "%(percentage)s%% effectué" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Postfix domain name config" +#~ msgstr "Configuration du nom de domaine Postfix" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Une erreur est survenue pendant la configuration." + #~ msgid "The alias was taken" #~ msgstr "Cet alias est déjà pris" diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index 3a0d847b3..d5764af2a 100644 --- a/plinth/locale/gl/LC_MESSAGES/django.po +++ b/plinth/locale/gl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Galician calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1052,7 +1053,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1061,7 +1062,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1069,25 +1070,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1099,17 +1100,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1118,7 +1119,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1232,7 +1233,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1240,7 +1241,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1707,7 +1707,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Acerca de" @@ -1734,13 +1734,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1852,32 +1852,28 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Email Server" msgstr "Servidor web" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1910,46 +1906,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1958,7 +1964,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1976,7 +1982,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -2001,45 +2007,30 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Discovery" msgid "Service Alert" msgstr "Descubrimento de servizo" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2047,7 +2038,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2154,7 +2145,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2165,21 +2156,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2291,11 +2282,11 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2303,21 +2294,21 @@ msgctxt "User guide" msgid "Manual" msgstr "Manual" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2542,7 +2533,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2550,31 +2541,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2611,14 +2602,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2627,15 +2618,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2712,11 +2703,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2724,11 +2715,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2747,17 +2738,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2766,7 +2757,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2776,7 +2767,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2784,15 +2775,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2893,7 +2884,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2903,14 +2894,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -2981,7 +2972,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2989,7 +2980,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2998,18 +2989,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3093,7 +3084,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3102,11 +3093,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3172,7 +3163,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3183,15 +3174,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3231,36 +3222,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3272,7 +3263,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3284,7 +3275,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3295,7 +3286,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3314,6 +3305,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3417,24 +3412,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3460,7 +3455,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3469,7 +3464,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3487,23 +3482,23 @@ msgstr "" msgid "Services" msgstr "Descubrimento de servizo" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3971,7 +3966,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -3984,7 +3979,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4427,7 +4422,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4516,7 +4511,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4527,20 +4522,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4604,7 +4599,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4613,33 +4608,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4648,15 +4643,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4790,33 +4785,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4869,14 +4864,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4886,20 +4881,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4910,7 +4905,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4930,7 +4925,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4940,19 +4935,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5019,7 +5014,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5027,7 +5022,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5036,7 +5031,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 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,17 +5041,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5065,31 +5060,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5169,11 +5164,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5201,27 +5196,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "Produciuse un erro ao instalar o aplicativo: {error}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5376,32 +5371,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5410,17 +5405,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5449,7 +5444,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5549,14 +5544,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5564,14 +5559,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5763,7 +5758,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5771,7 +5766,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5812,7 +5807,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5820,7 +5815,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5828,143 +5823,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6039,7 +6034,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6047,7 +6042,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6059,20 +6054,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6080,7 +6075,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6088,11 +6083,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6127,7 +6122,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6136,40 +6131,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6295,54 +6290,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6350,12 +6349,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6363,7 +6362,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6567,14 +6566,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6582,15 +6581,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6816,18 +6815,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7123,7 +7122,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7132,7 +7131,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7141,26 +7140,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7174,7 +7173,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7187,7 +7186,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7195,11 +7194,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7233,23 +7232,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index e11187700..512acb354 100644 --- a/plinth/locale/gu/LC_MESSAGES/django.po +++ b/plinth/locale/gu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Gujarati calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1110,7 +1111,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1122,7 +1123,7 @@ msgstr "" "બનાવે છે. {box_name} પર, નિયંત્રણો ઘણા અદ્યતન વિધેયો માટે ઉપલબ્ધ છે જે સામાન્ય રીતે " "આવશ્યક નથી. કન્સોલ કામગીરી માટે વેબ આધારિત ટર્મિનલ પણ ઉપલબ્ધ છે." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1130,7 +1131,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, fuzzy, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1141,18 +1142,18 @@ msgstr "" "સાથે{box_name} લૉગિન દ્વારા ઍક્સેસ કરી શકાય છે. સંવેદનશીલ માહિતી અને વ્યવસ્થાપનની " "ક્ષમતાઓ એડમિન ગ્રૂપના વપરાશકર્તાઓ માટે મર્યાદિત છે." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "કોકપિટ" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "સર્વર સંચાલન" @@ -1164,17 +1165,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "સામાન્ય ગોઠવણી" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1183,7 +1184,7 @@ msgstr "સામાન્ય ગોઠવણી" msgid "Configure" msgstr "ગોઠવો" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1308,7 +1309,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1316,7 +1317,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as થી ઉપલબ્ધ થશે. તેનો પહેલાથી નક્કી પાસવર્ડ 'deluge' છે, પરંતુ આ સેવા સક્રિય " "કાર્ય બાદ તુરંત જ આપે લોગ ઇન કરી ને તેને બદલી નાખવો જોઈએ." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "BitTorrent કાર્યક્રમોનો ઉપયોગ કરીને ફાઇલો ડાઉનલોડ કરો" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "અનરાધાર" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "બીટ ટોરેન્ટ વેબ ક્લાયન્ટ" @@ -1426,7 +1427,7 @@ msgstr "" msgid "Bittorrent client written in Python/PyGTK" msgstr "પાયથોન/PyGTK માં લખાયેલ Bittorrent ક્લાયંટ" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1434,59 +1435,59 @@ msgstr "" "સીસ્ટમ તપાસ પરિક્ષણ આપની એપ્લીકેશન અને સેવાઓ નિર્ધારિત રીતે કામ કરે છે કે નહિ, તે ચકાસવા " "આપની સીસ્ટમ પર અમુક પરીક્ષણો કરશે." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "તપાસ" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: 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:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "" -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " "{memory_available_unit} free. {advice_message}" msgstr "" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "" @@ -1538,7 +1539,7 @@ msgstr "પરિણામ" msgid "Diagnostic Test" msgstr "તપાસકીય પરિક્ષણ" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1546,12 +1547,12 @@ msgstr "" "પ્રવાસી* એક વિકેન્દ્રિત સામાજીક નેટવર્ક છે જ્યાં આપ આપની માહિતીનો સંગ્રહ અને નિયોજન કરી " "શકો છો." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "પ્રવાસી*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "સંઘબદ્ધિત સામાજીક નેટવર્ક" @@ -1610,7 +1611,7 @@ msgstr "વપરાશકર્તા રજીસ્ટ્રેશન સક msgid "User registrations disabled" msgstr "વપરાશકર્તા રજીસ્ટ્રેશન અક્ષમ છે" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, fuzzy, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1621,7 +1622,7 @@ msgstr "" "અન્ય લોકો માટે તમને ઇન્ટરનેટ પર શોધવા માટે મુશ્કેલ હોઈ શકે છે. આ અન્ય લોકો જે આ દ્વારા " "પ્રદાન કરવામાં આવે છે તે સેવાઓ શોધવાનું અટકાવશે {box_name}" -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1638,11 +1639,11 @@ msgstr "" "પર સોંપી દેશે, અને જો ઇન્ટરનેટમાંથી કોઈ વ્યક્તિ તમારા DNS નામ માટે પૂછે, તેઓને તમારા " "વર્તમાન IP સરનામા સાથે પ્રતિસાદ મળશે." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "ડાયનેમિક DNS ક્લાયન્ટ" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 #, fuzzy #| msgid "Domain Name" msgid "Dynamic Domain Name" @@ -1697,12 +1698,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "જો તમે તમારા વર્તમાન પાસવર્ડને રાખવા માંગતા હો તો આ ક્ષેત્ર ખાલી રાખો." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "વૈકલ્પિક મૂલ્ય. જો તમારું {box_name} ઇન્ટરનેટ સાથે સીધું જ કનેક્ટેડ નથી (એટલે કે એનએટી રાઉટર " "સાથે જોડાયેલું છે) તો આ URL વાસ્તવિક IP એડ્રેસને નક્કી કરવા માટે વપરાય છે. URL IP ને જ્યાં " @@ -1784,12 +1790,18 @@ 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "જો તમે મફત ગતિશીલ DNS એકાઉન્ટ શોધી રહ્યા છો, તમને અહીં મફત GnuDIP સેવા મળી શકે છે gnudip.datasystems24." @@ -1848,7 +1860,7 @@ msgstr "" msgid "Last update" msgstr "છેલ્લો સુધારો" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "વિશે" @@ -1875,7 +1887,7 @@ msgstr "ડાયનેમિક DNS રૂપરેખાંકિત કરો msgid "Dynamic DNS Status" msgstr "ડાયનેમિક DNS સ્થિતિ" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1883,7 +1895,7 @@ msgstr "" "XMPP એક ખુલ્લું અને પ્રમાણિત સંચાર પ્રોટોકોલ છે. અહીં તમે તમારા XMPP સર્વરને ચલાવો અને " "ગોઠવી શકો છો, જેને ઈઝબેબર્ડે કહેવાય છે." -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the XMPP ક્લાયન્ટ. જ્યારે સક્ષમ કરેલ હોય, ઈઝબેબર્ડ ઍક્સેસ કરી શકાય છે " "કોઇપણ દ્વારા વપરાશકર્તાઓ સાથે{box_name}પ્રવેશ." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ઈઝબેબર્ડ" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "ચેટ સર્વર" @@ -2022,34 +2034,28 @@ msgstr "" "દેખાશે username@%(domainname)s. તમે સિસ્ટમ પર તમારા ડોમેન સેટ કરી શકો છો રૂપરેખાંકિત કરો પાનું." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "ચેટ સર્વર" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "ક્ષેત્રીય નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2084,52 +2090,62 @@ msgstr "" msgid "Has a TLS certificate" msgstr "બધા SSL પ્રમાણપત્રો સ્વીકારો" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "અમાન્ય સર્વર નામ" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "અમાન્ય સર્વર નામ" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Documentation" msgid "Aliases" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "સક્ષમ કરેલું" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2138,7 +2154,7 @@ msgid "Disabled" msgstr "અક્ષમ કરેલું" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2156,7 +2172,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Documentation" msgid "Manage Aliases" @@ -2187,49 +2203,32 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Documentation" msgid "Manage Spam" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "સેવા પ્રકાર" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "General Configuration" -msgid "Error updating configuration" -msgstr "સામાન્ય ગોઠવણી" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "સેટિંગ યથાવત" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2240,7 +2239,7 @@ msgstr "" "છે {box_name}. ફાયરવૉલ સક્ષમ અને યોગ્ય રીતે રૂપરેખાંકિત રાખીને ઇન્ટરનેટથી સુરક્ષાના ભયને " "ઘટાડે છે." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "ફાયરવોલ" @@ -2355,7 +2354,7 @@ msgstr "સેટઅપ પ્રારંભ કરો" msgid "Setup Complete" msgstr "સેટઅપ પૂર્ણ" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2366,21 +2365,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2508,11 +2507,11 @@ msgstr "" msgid "Edit repository" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2520,21 +2519,21 @@ msgctxt "User guide" msgid "Manual" msgstr "માર્ગદર્શિકા" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2761,7 +2760,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2769,33 +2768,33 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "એપ્લીકેશનને પ્રસ્થાપિત કરો" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2832,14 +2831,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2848,15 +2847,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2933,11 +2932,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2945,11 +2944,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2968,17 +2967,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2987,7 +2986,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2997,7 +2996,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3005,15 +3004,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3114,7 +3113,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3124,14 +3123,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3204,7 +3203,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3212,7 +3211,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3221,18 +3220,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3328,7 +3327,7 @@ msgstr "સેટિંગ યથાવત" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3337,11 +3336,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3407,7 +3406,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3418,15 +3417,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3466,38 +3465,38 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" msgstr "BitTorrent કાર્યક્રમોનો ઉપયોગ કરીને ફાઇલો ડાઉનલોડ કરો" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3509,7 +3508,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3521,7 +3520,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3532,7 +3531,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3551,6 +3550,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3654,24 +3657,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3699,7 +3702,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3708,7 +3711,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3726,23 +3729,23 @@ msgstr "" msgid "Services" msgstr "સેવા પ્રકાર" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4213,7 +4216,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4226,7 +4229,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4684,7 +4687,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4773,7 +4776,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4784,22 +4787,22 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Conversations" msgid "Connect to VPN services" msgstr "વાતચીત" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4863,7 +4866,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4872,33 +4875,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4907,15 +4910,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -5049,35 +5052,35 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" msgstr "સિસ્ટમ રૂપરેખાંકન" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -5130,14 +5133,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5147,20 +5150,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5171,7 +5174,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -5191,7 +5194,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5201,19 +5204,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5280,7 +5283,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5288,7 +5291,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5297,7 +5300,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5307,17 +5310,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5326,31 +5329,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5430,11 +5433,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "ફ્રિડમબોક્ષ" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5464,27 +5467,27 @@ msgstr "એપ્લિકેશન અક્ષમ છે" msgid "Error disabling share: {error_message}" msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5639,32 +5642,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5673,17 +5676,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5712,7 +5715,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5812,14 +5815,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5827,14 +5830,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -6027,7 +6030,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6035,7 +6038,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6080,7 +6083,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6088,7 +6091,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6096,145 +6099,145 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "અમાન્ય હોસ્ટનું નામ" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6309,7 +6312,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6317,7 +6320,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6329,20 +6332,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6350,7 +6353,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6358,11 +6361,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6397,7 +6400,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6406,40 +6409,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6567,33 +6570,37 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "સેટિંગ યથાવત" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission બીટ ટોરેન્ટ ક્લાયન્ટ છે જે વેબ UI ધરાવે છે." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, fuzzy, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6626,12 +6633,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6639,7 +6646,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6853,14 +6860,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6868,15 +6875,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7106,18 +7113,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7435,7 +7442,7 @@ msgstr "ઇન્ટરનેટ સાથે સીધો જોડાણ." msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7444,7 +7451,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7453,26 +7460,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7486,7 +7493,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7499,7 +7506,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7507,11 +7514,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7547,23 +7554,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7915,6 +7922,16 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "ક્ષેત્રીય નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" + +#, fuzzy +#~| msgid "General Configuration" +#~ msgid "Error updating configuration" +#~ msgstr "સામાન્ય ગોઠવણી" + #, fuzzy #~| msgid "Disabled" #~ msgid "Disable selected" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index 8b8337fd6..1ea41f749 100644 --- a/plinth/locale/hi/LC_MESSAGES/django.po +++ b/plinth/locale/hi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Hindi %(service_name)s चल रहा है." -#: plinth/daemon.py:131 +#: plinth/daemon.py:158 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "{kind} में सुन कर पोर्ट {listen_address} :{port}" -#: plinth/daemon.py:135 +#: plinth/daemon.py:162 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "{kind} में सुन कर पोर्ट{port}" -#: plinth/daemon.py:203 +#: plinth/daemon.py:230 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "{host}:{port} से जुड़े" -#: plinth/daemon.py:205 +#: plinth/daemon.py:232 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "{host}:{port} से नहीं जोड़ सखता" @@ -90,33 +90,33 @@ msgstr "इस वेब इंटरफेस में इसतेमाल msgid "Use the language preference set in the browser" msgstr "जो भाषा ब्राउज़र में हैं, वो भाषा उपयोग करें" -#: plinth/middleware.py:36 plinth/templates/setup.html:18 +#: plinth/middleware.py:38 plinth/templates/setup.html:18 msgid "Application installed." msgstr "एप्लिकेशन इंस्टॉल हो गया." -#: plinth/middleware.py:41 +#: plinth/middleware.py:43 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "एप्लिकेशन नहीं इंस्टॉल जा सकता : {string} {details}" -#: plinth/middleware.py:45 +#: plinth/middleware.py:47 #, python-brace-format msgid "Error installing application: {error}" msgstr "एप्लिकेशन नहीं इंस्टॉल जा सकता: {error}" -#: plinth/modules/apache/__init__.py:42 +#: plinth/modules/apache/__init__.py:33 #, fuzzy #| msgid "Chat Server" msgid "Apache HTTP Server" msgstr "चाट सर्वर" -#: plinth/modules/apache/__init__.py:48 +#: plinth/modules/apache/__init__.py:41 #: plinth/modules/monkeysphere/templates/monkeysphere.html:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:46 msgid "Web Server" msgstr "वेब सर्वर" -#: plinth/modules/apache/__init__.py:54 +#: plinth/modules/apache/__init__.py:47 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} वेब इंटरफेस (प्लिंथ)" @@ -131,7 +131,7 @@ msgstr "इस यूआरएल का अपयोग करें {url} ट msgid "Access URL {url}" msgstr "इस यूआरएल का अपयोग करें {url}" -#: plinth/modules/avahi/__init__.py:36 +#: plinth/modules/avahi/__init__.py:26 #, python-brace-format msgid "" "Service discovery allows other devices on the network to discover your " @@ -147,49 +147,49 @@ msgstr "" "सुरक्षा के लिये, ख़ास तौर पर एक अनजान नेटवर्क से जोड़ करके समय, सर्विस डिस्कोवरि बंद कर " "सकते हैं." -#: plinth/modules/avahi/__init__.py:60 +#: plinth/modules/avahi/__init__.py:51 msgid "Service Discovery" msgstr "सर्विस डिस्कोवरि" -#: plinth/modules/avahi/__init__.py:73 +#: plinth/modules/avahi/__init__.py:64 msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:35 +#: plinth/modules/backups/__init__.py:27 msgid "Backups allows creating and managing backup archives." msgstr "बैकअपस पुरालेखागार बनाने और प्रबंधित करने की अनुमति देता है." -#: plinth/modules/backups/__init__.py:56 plinth/modules/backups/__init__.py:208 -#: plinth/modules/backups/__init__.py:253 +#: plinth/modules/backups/__init__.py:50 plinth/modules/backups/__init__.py:202 +#: plinth/modules/backups/__init__.py:247 msgid "Backups" msgstr "बैकअप" -#: plinth/modules/backups/__init__.py:205 +#: plinth/modules/backups/__init__.py:199 msgid "" "Enable an automatic backup schedule for data safety. Prefer an encrypted " "remote backup location or an extra attached disk." msgstr "" -#: plinth/modules/backups/__init__.py:211 +#: plinth/modules/backups/__init__.py:205 msgid "Enable a Backup Schedule" msgstr "" -#: plinth/modules/backups/__init__.py:215 -#: plinth/modules/backups/__init__.py:262 -#: plinth/modules/storage/__init__.py:331 +#: 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}" msgid "Go to {app_name}" msgstr "{box_name} के बारे में" -#: plinth/modules/backups/__init__.py:250 +#: plinth/modules/backups/__init__.py:244 #, python-brace-format msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " "succeed. The latest error is: {error_message}" msgstr "" -#: plinth/modules/backups/__init__.py:258 +#: plinth/modules/backups/__init__.py:252 #, fuzzy #| msgid "Existing custom services" msgid "Error During Backup" @@ -777,7 +777,7 @@ msgstr "" msgid "Mounting failed" msgstr "ऑपरेशन अनुत्तीर्ण हो गया." -#: plinth/modules/bepasty/__init__.py:25 +#: plinth/modules/bepasty/__init__.py:21 msgid "" "bepasty is a web application that allows large files to be uploaded and " "shared. Text and code snippets can also be pasted and shared. Text, image, " @@ -785,7 +785,7 @@ msgid "" "can be set to expire after a time period." msgstr "" -#: plinth/modules/bepasty/__init__.py:29 +#: plinth/modules/bepasty/__init__.py:25 msgid "" "bepasty does not use usernames for login. It only uses passwords. For each " "password, a set of permissions can be selected. Once you have created a " @@ -793,7 +793,7 @@ msgid "" "permissions." msgstr "" -#: plinth/modules/bepasty/__init__.py:33 +#: plinth/modules/bepasty/__init__.py:29 msgid "" "You can also create multiple passwords with the same set of privileges, and " "distribute them to different people or groups. This will allow you to later " @@ -801,43 +801,43 @@ msgid "" "the list." msgstr "" -#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +#: plinth/modules/bepasty/__init__.py:38 plinth/modules/bepasty/__init__.py:47 msgid "Read a file, if a web link to the file is available" msgstr "" -#: plinth/modules/bepasty/__init__.py:43 +#: plinth/modules/bepasty/__init__.py:39 #, fuzzy #| msgid "Download my profile" msgid "Create or upload files" msgstr "मेरी प्रोफ़ाइल डाउनलोड करें" -#: plinth/modules/bepasty/__init__.py:44 +#: plinth/modules/bepasty/__init__.py:40 msgid "List all files and their web links" msgstr "" -#: plinth/modules/bepasty/__init__.py:45 +#: plinth/modules/bepasty/__init__.py:41 #, fuzzy #| msgid "Delete User" msgid "Delete files" msgstr "यूसर हटाइये" -#: plinth/modules/bepasty/__init__.py:46 +#: plinth/modules/bepasty/__init__.py:42 msgid "Administer files: lock/unlock files" msgstr "" -#: plinth/modules/bepasty/__init__.py:50 +#: plinth/modules/bepasty/__init__.py:46 msgid "None, password is always required" msgstr "" -#: plinth/modules/bepasty/__init__.py:52 +#: plinth/modules/bepasty/__init__.py:48 msgid "List and read all files" msgstr "" -#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:6 +#: plinth/modules/bepasty/__init__.py:63 plinth/modules/bepasty/manifest.py:6 msgid "bepasty" msgstr "" -#: plinth/modules/bepasty/__init__.py:67 +#: plinth/modules/bepasty/__init__.py:65 #, fuzzy #| msgid "File Sharing" msgid "File & Snippet Sharing" @@ -944,9 +944,10 @@ msgstr "" msgid "Configuration updated." msgstr "कॉन्फ़िगरेशन अपडेट किया." -#: plinth/modules/bepasty/views.py:93 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 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: 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 msgid "An error occurred during configuration." msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." @@ -968,7 +969,7 @@ msgstr "पासवर्ड" msgid "Password deleted." msgstr "पासवर्ड अपडेट" -#: plinth/modules/bind/__init__.py:31 +#: plinth/modules/bind/__init__.py:25 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." @@ -976,7 +977,7 @@ msgstr "" "बाइंड सक्षम कर अाप अपने डॉमेन नैम सिस्टम (डीएनएस) इंटरनेट पर प्रकाशित कर सकते हैं, ओर " "अपने नेटवर्क पर चलते हुए यूसर डिवाइससॅ में डीएनएस सवालो कि जवाब मिल सकते हैं." -#: plinth/modules/bind/__init__.py:35 +#: plinth/modules/bind/__init__.py:29 #, python-brace-format msgid "" "Currently, on {box_name}, BIND is only used to resolve DNS queries for other " @@ -987,11 +988,11 @@ msgstr "" "सवालों कि जवाब खोजने के लिए इस्तेमाल किया जा रहा है. यह {box_name} से इंटरनेट शेयरइं के " "सात भी नहीं असंगत है." -#: plinth/modules/bind/__init__.py:80 +#: plinth/modules/bind/__init__.py:76 msgid "BIND" msgstr "बाइंड" -#: plinth/modules/bind/__init__.py:81 +#: plinth/modules/bind/__init__.py:77 msgid "Domain Name Server" msgstr "डोमेन नाम" @@ -1052,7 +1053,7 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:214 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 #: 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 @@ -1061,7 +1062,7 @@ msgstr "" msgid "Configuration updated" msgstr "कॉन्फ़िगरेशन अपडेट करें" -#: plinth/modules/calibre/__init__.py:32 +#: plinth/modules/calibre/__init__.py:26 #, python-brace-format msgid "" "calibre server provides online access to your e-book collection. You can " @@ -1069,7 +1070,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/calibre/__init__.py:35 +#: plinth/modules/calibre/__init__.py:29 msgid "" "You can organize your e-books, extract and edit their metadata, and perform " "advanced search. calibre can import, export, or convert across a wide range " @@ -1078,21 +1079,21 @@ msgid "" "highlighted text. Content distribution using OPDS is currently not supported." msgstr "" -#: plinth/modules/calibre/__init__.py:41 +#: plinth/modules/calibre/__init__.py:35 msgid "" "Only users belonging to calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1180,7 +1181,7 @@ msgstr "{name} हटा गया है." msgid "Could not delete {name}: {error}" msgstr "{name} नहीं हटा गया है: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1192,7 +1193,7 @@ msgstr "" "प्रशासित कर सकते है. {box_name} पर बहुत उन्नत फ़ंक्शन के नियंत्रण है लेकिन यह सब आमताैर पर " "ज़रूरत नहीं है. कंट्रोल संचालन के लिये वेब आधारित कंसोल भी माैजूद है." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1200,7 +1201,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -1216,18 +1217,18 @@ msgstr "" "माैजूद होते है. यह कोई से एक {box_name} के सात पहुंच " "सकते हैं. निजी जानकारी आैर सिस्टम बदलने का योग्यता सिर्फ व्यवस्थापक लोग के पास है." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "कॉकपिट" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "सर्वर एडमिनिस्ट्रेशन" @@ -1241,17 +1242,17 @@ msgstr "अभिगम केंद्र" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "सामान्य कॉन्फ़िगरेशन" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1260,7 +1261,7 @@ msgstr "सामान्य कॉन्फ़िगरेशन" msgid "Configure" msgstr "कॉन्फ़िगर करें" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1399,7 +1400,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1407,7 +1408,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "अबर आप एक मुक्त डायनेमिक डिएनएस अकाउंट के ढूंढ़ रहे है, शायद आपको एक मुक्त जीएनयूडीआईपी " "सर्विस यहाँ मिलें web " @@ -1995,19 +2007,19 @@ msgstr "" "ग्राहक. सक्षम होने पर एजाबेरड कोई यूसर एक {box_name} " "लोगिन से उपयोग कर सकते हैं." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "एजाबेरड" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "चाट सर्वर" @@ -2111,34 +2123,28 @@ msgstr "" "दिखेगा username@%(domainname)s. आपका डोमेन सिसटेम पर सेटअप कर सकता है कॉन्फ़िगर पेजॅ." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "चाट सर्वर" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "{exception}: डोमेन नाम सेट करने में एरर" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2175,54 +2181,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "कोई प्रमाणपत्र नहीं" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "सर्वर नाम अमान्य है" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "सर्वर नाम अमान्य है" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "डोमेन" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Create User" msgid "Aliases" msgstr "यूसर बनाये" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "सक्षम किया गया है" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2231,7 +2249,7 @@ msgid "Disabled" msgstr "अक्षम किया गया है" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "राउंडक्यूब" @@ -2251,7 +2269,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Create User" msgid "Manage Aliases" @@ -2284,49 +2302,32 @@ msgstr "अकाउंट बनाएँ" msgid "Add" msgstr "जोड़ें" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "डोमेन्स" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "स्नैपशॉटस प्रबंधित करें" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "सेवा टाइप" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "सेटिंग स्थिर है" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2337,7 +2338,7 @@ msgstr "" "को नियंत्रित करता है. फ़ायरवॉल सक्षम और ठीक से कॉंफ़िगर रखते हुए इंटरनेट से सुरक्षा खतरे का " "जोखिम कम कर देता है." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "फ़ायरवॉल" @@ -2459,7 +2460,7 @@ msgstr "सटअप शुरु करें" msgid "Setup Complete" msgstr "सेटअप पूरा हो गया" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2470,21 +2471,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2629,11 +2630,11 @@ msgstr "" msgid "Edit repository" msgstr "यूसर बनाये" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "प्रलेखन" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2641,21 +2642,21 @@ msgctxt "User guide" msgid "Manual" msgstr "मैन्युअल" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2917,7 +2918,7 @@ msgstr "{box_name} के बारे में" msgid "{box_name} Manual" msgstr "{box_name} मैनुअल" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2925,7 +2926,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Wiki." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "एप्लिकेशन सक्षम करें" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "गुमनामी नेटवर्क" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy #| msgid "Web Proxy" msgid "I2P Proxy" @@ -2996,7 +2997,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -3014,7 +3015,7 @@ msgstr "" "होने पर, ब्लॉग्स और विकि /इकिविकि/ (एक बार बनाए गए) पर " "उपलब्ध होंगे." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3027,15 +3028,15 @@ msgstr "" "विकी संपादितकर सकते है. वह युज़र कॉन्फ़िगरेशन पर " "आपको यह अनुमति बदल सकता और नया युज़रसॅ को जोडं सकता है." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "इकिविकि" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "विकि और ब्लॉग" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "विकी एप्लिकेशन को देखें और संपादित करें" @@ -3116,11 +3117,11 @@ msgstr "{name} हटा गया है." msgid "Could not delete {title}: {error}" msgstr "{name} नहीं हटा गया है: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "इन्फिनोटेड़ गोबी के एक सर्वर है, एक सहयोगी टेक्स्ट संपादक." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3131,11 +3132,11 @@ msgstr "" "डाउनलोड और इंस्टॉल करें. फिर गोबी शुरु करें, \"सर्वर से कनेक्ट\" चुनें और {box_name} " "कर डोमेन नाम दर्ज करें." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "इन्फिनोटेड़" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "गोबी सर्वर" @@ -3154,7 +3155,7 @@ msgid "" "domain name." msgstr "गोबी शुरू करें और \"सर्वर से कनेक्ट\" चुनिये और {box_name} का डोमेन नाम दर्ज करें." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3162,11 +3163,11 @@ msgstr "" "जेएसएक्ससि, एक्सएमपिपि को एक वेब क्लाइंट है. अाम तौर पर यह एक्सएमपिपि के सात उपयोग " "किया जाता है." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "जेएसएक्ससि" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "चैट क्लाइंट" @@ -3175,7 +3176,7 @@ msgstr "चैट क्लाइंट" msgid "JavaScript license information" msgstr "जावास्क्रिप्ट लाइसेंस जानकारी" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3189,7 +3190,7 @@ msgstr "" "प्रमाणपत्र सेटअप प्राप्त कर सकता है. {box_name} यह लेटस एंक्रिप्ट का डोमेन का एकमात्र " "मालिक सताबित करके एेसा करता है." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3201,15 +3202,15 @@ msgstr "" "\"https://letsencrypt.org/repository/\"> लेटस एंक्रिप्ट ग्राहक समझौते इस " "सिरविस उपयोग करने से पहले." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "लेटस एंक्रिप्ट" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "प्रमाण पत्र" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3317,7 +3318,7 @@ msgstr "डोमेन के लिए प्रमाणपत्र का msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "डोमेन के लिए प्रमाणपत्र नहीं हटाया गया {domain}:{error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3332,14 +3333,14 @@ msgstr "" "मल्टीपल डिवाइस सिंक्रनाइज़इज़ाशिन और काम करने के लिए फोन नंबर की ज़रुरत नहीं है. मैट्रिक्स " "सर्वर पर यूसरसॅ सारे मैट्रिक्स सर्वर के लेग से बात कर सकते है फ़ेडरेशिन उपयोग कर." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "मैट्रिक्स सिनापसॅ" @@ -3425,7 +3426,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3437,7 +3438,7 @@ msgstr "" "से-तरह वेबसाइट होस्ट करने के लिये, नोट्स लेने के लिये या दोस्तों के साथ प्रोजेक्ट्स पर कास कर " "सकते है." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3450,7 +3451,7 @@ msgstr "" "उपयोग करके. फिर और यूसर अकाउंट मीडियाविकी खुद ही से बना सकते है यहां जा कर Special:CreateAccountपेज." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3458,12 +3459,12 @@ msgstr "" "किसी के साथ लिंक है, वह इस विकी पढ़ सकते हैं. सिर्फ लॉगइन किए गए यूसरसॅ ही सामग्री में " "परिवर्तन कर सकते हैं." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "मीडियाविकी" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "विकी" @@ -3557,7 +3558,7 @@ msgstr "सेटिंग स्थिर है" msgid "Server URL updated" msgstr "शेयर हटाया गया." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3569,11 +3570,11 @@ msgstr "" "{box_name} पर चल सकवाते है, डिफ़ॉल्ट पोर्ट (३००००) पर. सर्वर से कनेक्ट करने के लिए, एक " "मैइनटेस्ट क्लायंटकी आवश्यकता है." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "मैइनटेस्ट" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "ब्लॉक सेंडबोक्स" @@ -3641,7 +3642,7 @@ msgstr "पिवीपि कॉन्फ़िगरेशन अपडेट msgid "Damage configuration updated" msgstr "क्षति कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3652,15 +3653,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3700,40 +3701,40 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" msgstr "बिटटोरेंट एप्लिकेशन उपयोग कर फ़ाइल डाउनलोड करें" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy #| msgid "Monkeysphere" msgid "MLDonkey" msgstr "मंकीसफीर" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 #, fuzzy #| msgid "File Sharing" msgid "Peer-to-peer File Sharing" @@ -3751,7 +3752,7 @@ msgstr "मंकीसफीर" msgid "AMLDonkey" msgstr "मंकीसफीर" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3770,7 +3771,7 @@ msgstr "" "है. Monkeysphere SSH documentation देखिये और जानकारी के लिये." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3787,7 +3788,7 @@ msgstr "" "जो Monkeysphere website पर उपलब्ध है." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "मंकीसफीर" @@ -3806,6 +3807,10 @@ msgstr "कैंसिल" msgid "Service" msgstr "सर्विस" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "डोमेन्स" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3911,13 +3916,13 @@ msgstr "चाबी किसर्वर पर प्रकाशित क msgid "Error occurred while publishing key." msgstr "चाबी प्रकाशित करते समय एरर हो गया." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "ममबल एक खुला सोरस, कम विलंबता, एन्क्रिप्टेड अच्छा गुणवत्ता आवाज चैट सॉफ्टवेयर है." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3927,11 +3932,11 @@ msgstr "" "mumble.info\">Clients अापके डेस्कटॉप और एंड्रॉयड डिवाइस से ममबल से कनेक्ट होने के " "लिए उपलब्ध हैं." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "ममबल" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "वॉयस चैट" @@ -3961,7 +3966,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "पासवर्ड सफलतापूर्वक बदल गया." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3970,7 +3975,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "नाम सरविस" @@ -3988,23 +3993,23 @@ msgstr "" msgid "Services" msgstr "सर्विस" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "नेटवर्क्‍स" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC आईपीवी पर उपयोग कर रहा है{kind}" @@ -4495,7 +4500,7 @@ msgstr "डीएनएस सर्वर" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "डिफ़ॉल्ट" @@ -4508,7 +4513,7 @@ msgid "This connection is not active." msgstr "यह कनेक्शन सक्रिय नहीं है." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "सुरक्षा" @@ -5009,7 +5014,7 @@ msgstr "जेनेरिक" msgid "TUN or TAP interface" msgstr "इंटरफ़ेस" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5106,7 +5111,7 @@ msgstr "कनेक्शन {name} हटाया गया." msgid "Failed to delete connection: Connection not found." msgstr "कनेक्शन हटाने में विफल: कनेक्शन नहीं मिला." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5122,22 +5127,22 @@ msgstr "" "आंतरिक सर्विसस उपयोग करने के लिये. आप बाकी सब इंटरनेट {box_name} के जरिए उपयोग कर " "सकते हैं अगर अापको और सुरक्षा और गुमनामी चाहिये." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "कनेक्शन टाइप" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "ओपन वीपीएन" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "वर्चुअल प्राइवेट नेटवर्क" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5216,7 +5221,7 @@ msgstr "प्रोफ़ाइल हर %(box_name)s यूसर के ल msgid "Download my profile" msgstr "मेरी प्रोफ़ाइल डाउनलोड करें" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5228,17 +5233,17 @@ msgstr "" "सीधा कनेक्शन नहीं है. इसके जरूरत है सिर्फ आपके {box_name} के सर्विसस बाकी इंटरनेट से पहुँच " "योग्य नहीं. इसमें इन स्थितियों को शामिल किया गया है:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} एक प्रतिबंधित फ़ायरवॉल के पीछे है." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{box_name} एक (वायरलेस) रूटर से कनेक्टेड है जिसे आप नियंत्रित नहीं करते हैं." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5246,7 +5251,7 @@ msgstr "" "आपका ISP आपको एक बाहरी IP एड्रेस नहीं दता लेकिन NAT के माध्यम से इंटरनेट कनेक्शन प्रदान " "करता है." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5254,11 +5259,11 @@ msgstr "" "आपके ISP आपको एक स्थिर IP एड्रेस प्रदान नहीं करता है और आपके IP एड्रेस बदलाएग जब आप " "इंटरनेट से कनेक्ट होते हैं." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "आपके ISP आने वाले कनेक्शंसस को सीमित करता है." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5277,15 +5282,15 @@ msgstr "" "pagekite.net. भविष्य में अापका दोस्त का " "{box_name} इसके लिये उपयोग कर सकते हैं." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "पेजकइट" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "सार्वजनिक विसिबिलिटी" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 #, fuzzy #| msgid "PageKite Account" msgid "PageKite Domain" @@ -5439,33 +5444,33 @@ msgstr "" "SSH ग्राहक सेटअप देखें instructions" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "सिस्टम को रीस्टार्ट करें या शट डाउन करें ." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "पावर" @@ -5529,7 +5534,7 @@ msgstr "" msgid "Shut Down Now" msgstr "अब शट डाउन करें" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5539,7 +5544,7 @@ msgstr "" "लिए, वेब पेज डेटा और HTTP हेडर को मोडिफाई करने के लिए, ऐकसेस को नियंत्रित करने के लिए " "और एड या दुसरा इंटरनेट का जंक हटाने के लिए. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5553,20 +5558,20 @@ msgstr "" "कॉन्फ़िगरेशन विवरण और प्रलेखन यहां देख सकते हैं http://config.privoxy.org/ या http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "प्रिवोक्सी" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "वेब प्रॉक्सी" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "{url} ऐकसेस करें प्रॉक्सी लेकर {proxy} टीसीपी पर{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5582,7 +5587,7 @@ msgstr "" "ताकि आप हमेशा ऑनलाइन रखते हुए और एक या अधिक क्वासेल क्लाइंट डेस्कटॉप या मोबाइल से इसेसे " "कनेक्ट और डिस्कनेक्ट करने के लिए उपयोग किया जा सकता है." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your मोबाइल से कनेक्ट होने के लिए क्लाइंट्स उपलब्ध " "हैं." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "क्वासेल" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "आईआरसी क्लाइंट" @@ -5606,7 +5611,7 @@ msgstr "आईआरसी क्लाइंट" msgid "Quasseldroid" msgstr "क्वासेलड्रोइड" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5625,19 +5630,19 @@ msgstr "" "org/clients/\">समर्थित क्लाइंट एप्लिकेशन कि जरुरत है. राडिकैल किसी {box_name} " "यूसर पहुंचा जा सकता है एक लॉगिन के साथ." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "राडिकैल" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "कैलेंडर और पता पुस्तिका" @@ -5727,7 +5732,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "ऐकसेस अधिकार कॉंफ़िगरेशन अपडेट किया गया" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5738,7 +5743,7 @@ msgstr "" "साथ. यह पूरा कार्यक्षमता देता है, सहित MIME समर्थन, पता पुस्तिका, फ़ोल्डर हेरफेर, संदेश " "खोज और स्पेल जाँच." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -5759,7 +5764,7 @@ msgstr "" "SSL पर IMAP के लिए (अनुशंसित), imaps://imap.example.com जैसे सर्वर " "फ़ील्ड भरें." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5774,17 +5779,17 @@ msgstr "" "security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "ईमेल क्लाइंट" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5793,31 +5798,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Distributed File Storage" msgid "Network File Storage" @@ -5911,13 +5916,13 @@ msgstr "एक्सआयन" msgid "FreedomBox OS disk" msgstr "फ्रीडमबोएक्स" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "शेयर जोड़ें" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -5953,7 +5958,7 @@ msgstr "शेयर संपादित किया गया." msgid "Error disabling share: {error_message}" msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5961,7 +5966,7 @@ msgstr "" "सिरएक्स एक गोपनीयता संमान इंटरनेट मेटा खोज इंजन है. यह विभिन्न खोज यन्त्र से परिणाम " "इकट्ठा और प्रदर्शन करता है." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -5969,15 +5974,15 @@ msgstr "" "सिरएक्स खोज इंजन द्वारा ट्रैकिंग और प्रोफाइलिंग से बचने के लिए इस्तेमाल किया जा सकता है. " "यह डिफ़ॉल्ट से कोई कुकीज़ स्टोर नहीं करता है." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "वेब सरच किजिये" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "सिरएक्स" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "वेब खोज" @@ -6152,11 +6157,11 @@ msgstr "त्रुटि सेटिंग एक्सेस प्रति msgid "Updated security configuration" msgstr "सुरक्षा कॉंफ़िगरेशन अपडेट किया गया" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "शारली आप को बुकमार्क्स बचाने और साझा करने के लिए अनुमति देता है." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6170,15 +6175,15 @@ msgstr "" "होगा. नोट करिये शारली सिर्फ एकल यूसर अकाउंट का समर्थन करता है जो आपको प्रारंभिक " "यात्रा पर सेटअप करने की जरुरत होगा." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "शारली" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "बुकमार्क्स" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6187,7 +6192,7 @@ msgstr "" "शैडोवॉक्स एक हल्के और सुरक्षित सॉक्स 5 प्रॉक्सी है, आपके इंटरनेट यातायात रक्षा करने के लिये. " "यह इंटरनेट फ़िल्टरिंग और सेंसरशिप बाईपास करने के लिए इस्तेमाल किया जा सकता है." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6199,7 +6204,7 @@ msgstr "" "है. यह एक सॉक्स 5 प्रॉक्सी भी चला जाएगा. स्थानीय डिवाइसस इस प्रॉक्सी से कनेक्ट कर सकते " "हैं, और उनके डेटा एंक्रिप्टेड और शैडोवॉक्स सर्वर के माध्यम से प्रॉक्सी हो जाएगा." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6207,11 +6212,11 @@ msgstr "" "सेटअप के बाद शैडोवॉक्स का उपयोग करने के लिए,अपने डिवाइस, ब्राउज़र या एप्लिकेशन में सॉक्स5 " "प्रॉक्सी यूआरएल पर सेट करें http://freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "शाडोसोक्स" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "सोक्स5 प्रॉक्सी" @@ -6241,7 +6246,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "एंक्रिप्शन मेथोड. सर्वर सेटिंग पर मेल खाना चाहिए." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6353,7 +6358,7 @@ msgstr "शेयर संपादित करें" msgid "Share deleted." msgstr "शेयर हटाया गया." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6363,7 +6368,7 @@ msgstr "" "को वापस रोल करने के लिए इस्तेमाल किया जा सकता है, एक पहले अच्छी स्थिति ज्ञात है अगर " "सिस्टम पर अवांछित बदलाव किया गया." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6371,7 +6376,7 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 #, fuzzy #| msgid "" #| "Snapshots work on btrfs file systems only and on the root partition only. " @@ -6385,7 +6390,7 @@ msgstr "" "स्नैपशॉट्स सिर्फ btrfs फाइल सिस्टम और रूट पार्टीशन पर काम करते हैं. स्नैपशॉट बैकअप के लिए " "प्रतिस्थापन नहीं है क्योंकि वे उसी पार्टीशन पर संग्रहित होते हैं. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "स्टोरेज स्नैपशॉटस" @@ -6584,7 +6589,7 @@ msgstr "रोलबैक शुरु करने के लिए सिस msgid "Rollback to Snapshot" msgstr "स्नैपशॉट को रोलबैक करें" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6595,7 +6600,7 @@ msgstr "" "स्वीकार करने के लिये. एक अधिकार दिया गया रिमोट कंप्यूटर प्रशासन कार्य निष्पादित कर " "सकता है, फ़ाइलों की कॉपी कर सकता है या ऐसे कनेक्शंस का उपयोग करके अंय सर्विसस चलाएे." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "सुरक्षित शैल (SSH) सर्वर" @@ -6642,7 +6647,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "एकल साइन-ऑन" @@ -6650,7 +6655,7 @@ msgstr "एकल साइन-ऑन" msgid "Login" msgstr "लॉगिन" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6658,91 +6663,91 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "स्टोरेज" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} बाइट्स" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} किब" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} मेब" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} जिब" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} टीब" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "ऑपरेशन अनुत्तीर्ण हो गया." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "ऑपरेशन रद्द किया गया." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "यह डिवाइस पहले से अनमाउट किया जा रहा है." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "यह ऑपरेशन अनुपलब्ध है क्यैकि ड्राइवर/उपकरण टूल समर्थित नहीं है." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "ऑपरेशन टाइम आउट हो गया." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "यह ऑपरेशन गहरी नींद की स्थिति का डिस्क को जाग जाएगा." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "व्यस्त डिवाइस को अनमाउंट करने का प्रयास कर रहा है." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "ऑपरेशन पहले से रद्द किया गया." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "अनुरोधित ऑपरेशन करने के लिए अधिकृत नहीं है." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "यह डिवाइस पहले से माउंट किया गया." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "यह डिवाइस नहीं माउंट किया गया." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "अनुरोधित विकल्प का उपयोग करने की अनुमति नहीं है." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -6752,64 +6757,64 @@ msgstr "" "वार्निंग: सिस्टम पार्टीशन पर कम जगह ({percent_used}% उपयोग किया गया, " "{free_space} free)." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "अमान्य होस्टनाम" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "डायरेक्टरी डाउनलोड करें" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 #, fuzzy #| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "डायरेक्टरी डाउनलोड करें" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "साझा किया गया" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6891,7 +6896,7 @@ msgstr "डिवाइस सुरक्षित रूप से अनप msgid "Error ejecting device: {error_message}" msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6902,7 +6907,7 @@ msgstr "" "सिंक्रनाइज़ करने के लिए एक एप्लिकेशन है. सिंकतिन्ग चलते हए डिवाइसस पर किसी एक डिवाइस में " "फ़ाइलों का निर्माण, संशोधन, या हटाना ऑटोमेटिक दोहरा किया गया." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, fuzzy, python-brace-format #| msgid "" #| "Running Syncthing on {box_name} provides an extra synchronization point " @@ -6926,20 +6931,20 @@ msgstr "" "सेट एक फ़ोल्डर्स का एक अलग सेट का उपयोग करके सिंक्रनाइज़ किया जा सकता है. {box_name} " "पर वेब इंटरफेस सिर्फ \"एडमिन\" समूह के यूसकस के लिए उपलब्ध है." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "सिंकतिन्ग एप्लिकेशन का प्रशासन करें" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "सिंकतिन्ग" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "फ़ाइल सिंक्रनाइज़ेशन" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6950,7 +6955,7 @@ msgstr "" "नेटवर्क पर फ़ाइलें स्टोर करने के लिये स्वतंत्र सुरक्षा का उपयोग करता है. अगर कुछ नोड्स विफल " "होगा, आपकी फ़ाइलें शेष नोड्स से पुनर्प्राप्त किया जा सकता है." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6960,11 +6965,11 @@ msgstr "" "यह {box_name} एक स्टोरेज नोड आैर इंट्रोड्यूसर डिफ़ॉल्ट से होस्ट करता है. अतिरिक्त " "इंट्रोड्यूसरस जोड़ा जा सकता है, जो इस नोड को अन्य स्टोरेज नोड्स में पेश करेगा." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "टाहो-एलएएफएस" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "फ़ाइल स्टोरेज वितरित" @@ -7003,7 +7008,7 @@ msgstr "कनेक्टेड इंट्रोड्यूसरस" msgid "Remove" msgstr "निकालें" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7016,42 +7021,42 @@ msgstr "" "टो प्रोजेक्ट सिफारिश की है कि आप टो ब्राउज़र उपयोग करें." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "टोर" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "टोर हिडन सर्विस" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "टोर सोक्स प्रॉक्सी" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "टो ब्रिज रीले" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "टोर रीले पोर्ट उपलब्ध है" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "यूआरएल एक्सेस करें {url} टीसीपी पर {kind} टोर के माध्यम से" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "टोर उपयोग की पुष्टि करें {url} पर टीसीपी पर {kind}" @@ -7204,13 +7209,17 @@ msgstr "सॉक्स" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "एक टोर सॉक्स पोर्ट आपका %(box_name)s र उपलब्ध है, TCP पोर्ट ९०५० पर." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "सेटिंग स्थिर है" + +#: plinth/modules/transmission/__init__.py:24 #, fuzzy #| msgid "Deluge is a BitTorrent client that features a Web UI." msgid "Transmission is a BitTorrent client with a web interface." msgstr "डेलूज एक बिटटोरेंट ग्राहक है जिसमे वेब युआई है." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7222,16 +7231,16 @@ msgstr "" "बिटटोरेंट एक पीअर-टू-पीअर फ़ाइल साझा प्रोटोकॉल है. ट्रांसमिशन डेमॉन बिटटोरेंट फ़ाइल साझा " "संभालती है. नोट-बिटटोरेंट अनाम नहीं है." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "हस्तांतरण" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7241,7 +7250,7 @@ msgstr "" "से समाचार पढ़ने की अनुमति देने के लिए डिज़ाइन किया गया है, एक असली डेस्कटॉप एप्लिकेशन के " "जैसे." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -7255,7 +7264,7 @@ msgstr "" "माैजूद होते है. यह किसी एक {box_name} के सात लॉग इन " "कर सकता है." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -7267,15 +7276,15 @@ msgstr "" "टैनी टैनी आरएसएस का मोबाइल या डेस्कटॉप एप्लिकेशन उपयोग करते समय, यह यूआरएल/tt-rss-app कनेक्ट करने के लिए उपयोग करें." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "समाचार फ़ीड्स पढ़ें और सब्सक्राइब करें" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "टिनी टिनी आरएसएस" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "समाचार फ़ीड रीडर" @@ -7283,12 +7292,12 @@ msgstr "समाचार फ़ीड रीडर" msgid "Tiny Tiny RSS (Fork)" msgstr "टैनी टैनी आरएसएस (फोर्क)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7296,7 +7305,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7534,14 +7543,14 @@ msgstr "अपग्रेड प्रारंभ करना विफल msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7549,15 +7558,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "यूसरस और समूह" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "सब सर्विसस और सिस्टम सेटिंग्स तक पहुंच" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "एलडीएपी प्रविष्टि चेक करें \"{search_item}\"" @@ -7819,18 +7828,18 @@ msgstr "पासवर्ड बदलिये" msgid "Password changed successfully." msgstr "पासवर्ड सफलतापूर्वक बदल गया." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8183,7 +8192,7 @@ msgstr "कनेक्शन हटाएँ" msgid "Server deleted." msgstr "शेयर हटाया गया." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8192,7 +8201,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8201,28 +8210,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "ऍड्रेस" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8240,7 +8249,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8253,7 +8262,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8261,11 +8270,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -8301,23 +8310,23 @@ msgstr "पीपीपीअोइ" msgid "Generic" msgstr "जेनेरिक" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "इंस्टालेशन करते समय पर त्रुटि" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "इंस्टॉलिंग" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "डाउनलोडिंग" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "मीडिया बदलाव" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "कॉंफ़िगरेशन फ़ाइल: {file}" @@ -8694,6 +8703,16 @@ msgstr "%(percentage)s%% पूर्ण" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "{exception}: डोमेन नाम सेट करने में एरर" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." + #, fuzzy #~| msgid "Disabled" #~ msgid "Disable selected" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index a9b022506..71c196d1d 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-04-22 21:32+0000\n" "Last-Translator: Benedek Nagy \n" "Language-Team: Hungarian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1060,15 +1061,15 @@ msgstr "" "alkalmazáshoz. Minden hozzáféréssel rendelkező felhasználó használhatja az " "összes könyvtárat." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "calibre e-könyv könyvtárak használata" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "E-könyv könyvtár" @@ -1142,7 +1143,7 @@ msgstr "{name} törölve." msgid "Could not delete {name}: {error}" msgstr "{name} nem törölhető: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1155,7 +1156,7 @@ msgstr "" "ritkábban használt fejlett funkcióhoz érhetők el vezérlők. Egy web alapú " "terminál szintén elérhető a konzolos műveletekhez." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1167,7 +1168,7 @@ msgstr "" "nyitására és olyan fejlett hálózati funkciókhoz mint az aggregált " "interfészek, hidalás és VLAN kezelés." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1176,7 +1177,7 @@ msgstr "" "Használhatja majd a {box_name} eszköz bármely adminisztrátori csoportba " "tartozó felhasználója." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1184,12 +1185,12 @@ msgstr "" "A Cockpit megköveteli, hogy a domain néven keresztül érd el. Nem fog működni " "ha az URL részeként az IP címmel érik el." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Kiszolgáló adminisztráció" @@ -1203,7 +1204,7 @@ msgstr "" "A Cockpit csak akkor fog működni, ha az alábbi URL-ek valamelyikével " "történik a hozzáférés." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1211,11 +1212,11 @@ msgstr "" "Itt beállíthatsz néhány általános konfigurációs beállítást, például " "gazdagépnév, domain név, webszerver kezdőoldala stb." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Általános beállítások" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1224,7 +1225,7 @@ msgstr "Általános beállítások" msgid "Configure" msgstr "Beállítások" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1355,7 +1356,7 @@ msgstr "Haladó szintű alkalmazások és funkciók megjelenítése" msgid "Hiding advanced apps and features" msgstr "Haladó szintű alkalmazások és funkciók elrejtése" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1368,7 +1369,7 @@ msgstr "" "felépíteni olyan felek között, akik egyébként nem tudnak csatlakozni " "egymáshoz." -#: plinth/modules/coturn/__init__.py:42 +#: 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-" @@ -1382,11 +1383,11 @@ msgstr "" "kiszolgálók, mint a matrix-synapse, az itt megadott részletekkel kell " "konfigurálni." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "VoIP Segéd" @@ -1403,7 +1404,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Használja az alábbi megosztott hitelesítési titkos kulcsot:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1411,11 +1412,11 @@ msgstr "" "A hálózati időkiszolgáló egy olyan program, amely karbantartja a rendszeridő " "szinkronizációját az Interneten lévő kiszolgálókéval." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Dátum és idő" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Az idő szinkronizálva van az NTP kiszolgálóhoz" @@ -1444,11 +1445,11 @@ msgstr "Hiba az időzóna beállítása során: {exception}" msgid "Time zone set" msgstr "Időzóna beállítva" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge egy webes felülettel rendelkező BitTorrent kliens." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1456,17 +1457,17 @@ msgstr "" "Az alapértelmezett jelszó 'deluge', de a szolgáltatás engedélyezése után " "jelentkezz be és azonnal változtasd meg." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Fájlok letöltése BitTorrent alkalmazások használatával" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "Webes BitTorrent kliens" @@ -1478,7 +1479,7 @@ msgstr "Letöltési könyvtár" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent kliens amit Python/PyGTK programozási nyelven írtak" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1487,52 +1488,52 @@ msgstr "" "annak megerősítésére, hogy az alkalmazások és a szolgáltatások az elvárt " "módon működnek." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Hibaellenőrzés" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "sikerült" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "sikertelen" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "hiba" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "figyelmeztetés" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GiB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "A memóriahasználat csökkentése érdekében tilts le néhány alkalmazást." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Ne telepíts további alkalmazásokat erre a rendszerre." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1541,7 +1542,7 @@ msgstr "" "A rendszerben kevés a memória: {percent_used}% használt, " "{memory_available} {memory_available_unit} szabad. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Kevés a memória" @@ -1594,7 +1595,7 @@ msgstr "Eredmény" msgid "Diagnostic Test" msgstr "Ellenőrző tesz" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1602,12 +1603,12 @@ msgstr "" "A diaspora* egy decentralizált közösségi háló, ahol a saját adataidat te " "tárolhatod és te felügyelheted." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Egyesített közösségi háló" @@ -1668,7 +1669,7 @@ msgstr "Felhasználók regisztrációja engedélyezve" msgid "User registrations disabled" msgstr "Felhasználók regisztrációja letiltva" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1680,7 +1681,7 @@ msgstr "" "Ez megakadályozza azt, hogy mások megtalálják ezen {box_name} eszköz által " "biztosított szolgáltatásokat." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1699,11 +1700,11 @@ msgstr "" "az Interneten lekérdezi a DNS neved, válaszként az aktuális IP címedet fogja " "megkapni." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Dinamikus DNS ügyfél" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Dinamikus Domain név" @@ -1762,12 +1763,17 @@ msgstr "" "Hagyd ezt a mezőt üresen, ha szeretnéd megtartani a jelenlegi jelszavad." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Opcionális. Ha a te {box_name} eszközöd nem közvetlenül kapcsolódik az " "Internethez (pl. NAT-útválasztóhoz van kapcsolódva), ennek az URL-nek a " @@ -1849,12 +1855,18 @@ msgid "Please provide a password" msgstr "Kérlek add meg a jelszót" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Ha ingyenes dinamikus DNS fiókot keresel, találhatsz ingyenes GnuDIP " "szolgáltatást a web client felhasználó számára {box_name} " "felhasználónéven." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn alkalmazást vagy " "állíts be egy külső kiszolgálót." -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Chat szerver" @@ -2089,34 +2101,28 @@ msgstr "" "így fognak kinézni: username@%(domainname)s. Beállíthatod a " "rendszered domain nevét a Beállítások lapon." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Chat szerver" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Hiba a domain név beállítása közben: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2153,54 +2159,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Nincs tanúsítvány" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid domain" msgstr "Adjon meg egy érvényes felhasználónevet." -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid destination" msgstr "Adjon meg egy érvényes felhasználónevet." -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domain" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Elsődleges kapcsolat" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "Könyvtárak kezelése" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Engedélyezve" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2209,7 +2227,7 @@ msgid "Disabled" msgstr "Letiltva" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2229,7 +2247,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2262,49 +2280,32 @@ msgstr "Új biztonsági másolat létrehozása" msgid "Add" msgstr "Hozzáadás" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domainek" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "Pillanatképek kezelése" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Szolgáltatás típusa" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Hiba történt a beállítás közben." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "A beállítás változatlan" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2315,7 +2316,7 @@ msgstr "" "hálózati forgalmát felügyeli. A folyamatosan aktív és megfelelően beállított " "tűzfal csökkenti az internetről leselkedő biztonsági fenyegetések kockázatát." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Tűzfal" @@ -2437,7 +2438,7 @@ msgstr "Beállítás elkezdése" msgid "Setup Complete" msgstr "Beállítás kész" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2455,7 +2456,7 @@ msgstr "" "parancssoros Git klienssel vagy a többféle grafikus kliensek valamelyikével. " "És megoszthatod a kódodat az emberekkel szerte a világon." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2464,15 +2465,15 @@ msgstr "" "href=\"https://git-scm.com/docs/gittutorial\">Git gyorstalpalót (angolul)." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Olvasási-írási hozzáférés a Git tárolókhoz" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Egyszerű Git hoszting" @@ -2587,31 +2588,31 @@ msgstr "Tároló szerkesztve." msgid "Edit repository" msgstr "Tároló szerkesztése" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Dokumentáció" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Kézikönyv" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Támogatás kérése" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Visszajelzés küldése" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2907,7 +2908,7 @@ msgstr "A {box_name} projektről" msgid "{box_name} Manual" msgstr "{box_name} kézikönyv" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2919,7 +2920,7 @@ msgstr "" "biztosít anonimitást, hogy a titkosított adatforgalmat világszerte " "önkéntesek által üzemeltetett hálózatán küldi keresztül." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2927,7 +2928,7 @@ msgstr "" "További információt találhat az I2P-ről a projekt weboldalán." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2935,19 +2936,19 @@ msgstr "" "Az első látogatás a megadott webes felületen elindítja a konfigurálási " "folyamatot." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "I2P alkalmazás kezelése" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Anonim hálózat" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P proxy" @@ -2992,7 +2993,7 @@ msgstr "" "Tölts le fájlokat torrentek hozzáadásával vagy készíts új torrentet fájl " "megosztásához." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3002,7 +3003,7 @@ msgstr "" "leírónyelvet támogat, beleértve a Markdown-t és olyan általános bloggolási " "funkciókat, mint például a kommentek és az RSS-hírcsatornák." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3016,15 +3017,15 @@ msgstr "" "A Felhasználók beállítása oldalon tudod " "módosítani ezeket a jogosultságokat vagy hozzáadhatsz új felhasználókat." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki és blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Wiki alkalmazások megtekintése és szerkesztése" @@ -3103,12 +3104,12 @@ msgstr "{title} törölve." msgid "Could not delete {title}: {error}" msgstr "{title} nem törölhető: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted egy kiszolgáló a Gobby-hoz, a kollaboratív szövegszerkesztőhöz." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3120,11 +3121,11 @@ msgstr "" "\"Csatlakozás a kiszolgálóhoz\"-t (\"Connect to Server\") és írd be a " "{box_name} eszközöd domain nevét." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Gobby kiszolgáló" @@ -3145,7 +3146,7 @@ msgstr "" "Indítsd el a Gobby-t majd válaszd a \"Csatlakozás a kiszolgálóhoz\"-t " "(\"Connect to Server\") és írd be a {box_name} eszközöd domain nevét." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3153,11 +3154,11 @@ msgstr "" "JSXC egy webes kliens XMPP-hez. Általában helyileg futtatott XMPP " "kiszolgálóval használják." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Chat kliens" @@ -3166,7 +3167,7 @@ msgstr "Chat kliens" msgid "JavaScript license information" msgstr "JavaScript licencinformáció" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3182,7 +3183,7 @@ msgstr "" "Teszi ezt oly módon, hogy bizonyítja a Let's Encrypt hitelesítésszolgáltató " "(CA) számára a domain tulajdonjogát." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3195,15 +3196,15 @@ msgstr "" "letsencrypt.org/repository/\">Let's Encrypt Előfizetői Szerződést " "mielőtt használnád ezt a szolgáltatást." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Tanúsítványok" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "Sikertelen tesztelés: Nincsenek konfigurált domainek." @@ -3308,7 +3309,7 @@ msgstr "{domain} domain-on a tanúsítvány sikeresen törölve" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} domain-on nem sikerült kitörölni a tanúsítványt: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3326,14 +3327,14 @@ msgstr "" "beszélgetni az összes többi Matrix kiszolgáló felhasználóival a szövetségen " "keresztül." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3428,7 +3429,7 @@ msgstr "" "szükséged. Kérlek, látogasd meg a Let's " "Encrypt weboldalát ahhoz, hogy beszerezz egyet." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3441,7 +3442,7 @@ msgstr "" "helyet adj egy wiki-szerű weboldalnak, feljegyzéseket írj vagy hogy " "projekteken együttműködj barátaiddal." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3455,7 +3456,7 @@ msgstr "" "további felhasználói fiókokat a MediaWiki Special:CreateAccount oldalán." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3463,12 +3464,12 @@ msgstr "" "Bárki, aki ismeri a hivatkozást erre a wiki-re az el is tudja olvasni annak " "tartalmát. Azt módosítani viszont csak a bejelentkezett felhasználók tudják." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3561,7 +3562,7 @@ msgstr "Az alapértelmezett felszín megváltozott" msgid "Server URL updated" msgstr "Kiszolgáló URL frissítve" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3575,11 +3576,11 @@ msgstr "" "kiszolgálóra egy Minetest " "kliensre is szükséged lesz." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Blokk sandbox" @@ -3650,7 +3651,7 @@ msgstr "PVP beállítás frissítve" msgid "Damage configuration updated" msgstr "Sérülés beállítás frissítve" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3668,15 +3669,15 @@ msgstr "" "médialejátszók, okostelefonok, televíziók és játékkonzolok (például PS3 és " "Xbox 360), vagy olyan alkalmazásokkal mint a totem és a Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Médiaközvetítő (streaming) kiszolgáló" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Egyszerű médiaszerver" @@ -3721,7 +3722,7 @@ msgstr "A megadott könyvtár nem létezik." msgid "Updated media directory" msgstr "Médiakönyvtár frissítve" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3731,7 +3732,7 @@ msgstr "" "cseréjéhez használnak. Részt tud venni többféle P2P hálózatban is, beleértve " "az eDonkey-t, Kademlia-t, Overnet-et, BitTorrent-et és a DirectConnect-et." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3742,7 +3743,7 @@ msgstr "" "bármely, külön mobil vagy asztali kezelőfelületen vagy telnet interfészen " "keresztül. További részletek a kézikönyvben." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3750,16 +3751,16 @@ msgstr "" "{box_name} eszközön a letöltött fájlok a /var/lib/mldonkey/ könyvtárban " "találhatóak meg." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Fájlok letöltése eDonkey alkalmazások használatával" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "P2P Fájlmegosztás" @@ -3771,7 +3772,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3792,7 +3793,7 @@ msgstr "" "Tekintsd meg a Monkeysphere SSH dokumentációt további részletekért." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3811,7 +3812,7 @@ msgstr "" "telepítésére, amelyek elérhetők a Monkeysphere weboldalon." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3830,6 +3831,10 @@ msgstr "Mégse" msgid "Service" msgstr "Szolgáltatás" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domainek" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3936,7 +3941,7 @@ msgstr "Kulcs közzétéve a kulcskiszolgálónak." msgid "Error occurred while publishing key." msgstr "Hiba történt a kulcs közzététele során." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3944,7 +3949,7 @@ msgstr "" "A Mumble egy nyílt forráskódú, alacsony késéssel működő, titkosított, magas " "hangminőségű audiokonferencia szoftver." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3954,11 +3959,11 @@ msgstr "" "kapcsolódhatsz. Mumble kliensek " "elérhetőek az asztali és Android eszközökhöz." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Audiókonferencia" @@ -3987,7 +3992,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "A SuperUser jelszava sikeresen frissítve." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -4001,7 +4006,7 @@ msgstr "" "HTTPS és az SSH szolgáltatások engedélyezettek-e vagy le vannak tiltva a " "bejövő kapcsolatok számára az adott néven." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Névszolgáltatások" @@ -4017,7 +4022,7 @@ msgstr "Összes webalkalmazás" msgid "Services" msgstr "Szolgáltatások" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4026,7 +4031,7 @@ msgstr "" "Fi-n vagy PPPoE-n keresztül. Ossza meg azt a kapcsolatot a hálózaton lévő " "többi eszközzel." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4034,11 +4039,11 @@ msgstr "" "Előfordulhat, hogy más módszerekkel felügyelt eszközök itt nem lesznek a " "konfiguráláshoz elérhetők." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Hálózatok" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC használata IPv{kind} felett" @@ -4594,7 +4599,7 @@ msgstr "DNS szerver" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Alapértelmezett" @@ -4607,7 +4612,7 @@ msgid "This connection is not active." msgstr "Ez a kapcsolat nem aktív." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Biztonság" @@ -5060,7 +5065,7 @@ msgstr "általános" msgid "TUN or TAP interface" msgstr "TUN vagy TAP interfész" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5151,7 +5156,7 @@ msgstr "Kapcsolat törölve: {name}." msgid "Failed to delete connection: Connection not found." msgstr "A kapcsolat törlése sikertelen, mivel az nem található." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5169,20 +5174,20 @@ msgstr "" "eszközödön keresztül az Internetet is további biztonság és anonimitás " "érdekében." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "Csatlakozás VPN-szolgáltatásokhoz" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuális magánhálózat" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5254,7 +5259,7 @@ msgstr "" msgid "Download my profile" msgstr "Saját profilom letöltése" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5268,19 +5273,19 @@ msgstr "" "szolgáltatásai nem érhetőek el az internet felől. Ez magában foglalja az " "alábbi eseteket:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} eszközöd egy korlátozott tűzfal mögött van." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} eszközöd egy olyan (vezetéknélküli) router-hez kapcsolódik, " "amelyet te nem állíthatsz be." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5288,7 +5293,7 @@ msgstr "" "Az internetszolgáltatód nem biztosít neked külső IP címet, ehelyett hálózati " "címfordításon (NAT) keresztül tudod elérni az Internetet." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5296,11 +5301,11 @@ msgstr "" "Az internetszolgáltatód nem biztosít neked statikus IP címet és az IP címed " "mindig megváltozik, amikor az Internetre csatlakozol." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Az internetszolgáltatód korlátozza a bejövő kapcsolatokat." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5314,15 +5319,15 @@ msgstr "" "net. A jövőben talán a barátod {box_name} eszközét is lehetőséged lesz " "használni erre a célra." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Nyilvános láthatóság" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "PageKite domain" @@ -5465,33 +5470,33 @@ msgstr "" "Tekintsd meg az SSH kliens beállítási instrukciókat" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Rendszerfigyelés" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Újraindítás vagy leállítás." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Leállítás" @@ -5554,7 +5559,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Leállítás most" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5565,7 +5570,7 @@ msgstr "" "Módosítja a weboldal adatait és HTTP fejléceket, szabályozza a hozzáférést, " "eltávolítja a hirdetéseket és az egyéb nem kívánt internetes szemetet. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5580,21 +5585,21 @@ msgstr "" "a címeken: http://config.privoxy.org/ és http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Web proxy" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" "Hozzáférés a {url} URL-hez {proxy} proxy használatával tcp{kind}-on keresztül" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5611,7 +5616,7 @@ msgstr "" "szolgáltatását, aminek segítségével mindig online lehetsz és egy, vagy több " "Quassel klienssel kapcsolódhatsz hozzá a mobilodról vagy az asztali gépedről." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your asztali és mobil " "eszközökhöz is." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "IRC kliens" @@ -5635,7 +5640,7 @@ msgstr "IRC kliens" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5651,7 +5656,7 @@ msgstr "" "alkalmazásra is. A Radicale elérhető bármely felhasználó számára " "„{box_name}” felhasználónév használatával." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5662,12 +5667,12 @@ msgstr "" "eseményeket vagy kapcsolatokat, ezeket egy külön kliens használatával " "teheted meg." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Naptár és címjegyzék" @@ -5748,7 +5753,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Hozzáférési jogok beállításai frissítve" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5760,7 +5765,7 @@ msgstr "" "teljes funkcionalitást biztosítja, beleértve a MIME támogatást, " "címjegyzéket, mappa kezelést, üzenet keresést és helyesírás-ellenőrzést." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5774,7 +5779,7 @@ msgstr "" "hoz (ez az ajánlott), töltsd ki a kiszolgáló mezőt ezen minta alapján: " "imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5790,17 +5795,17 @@ msgstr "" "href=\"https://www.google.com/settings/security/lesssecureapps\">https://www." "google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "E-mail kliens" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5809,31 +5814,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Hálózati fájltároló" @@ -5911,11 +5916,11 @@ msgstr "Művelet" msgid "FreedomBox OS disk" msgstr "FreedomBox OS lemez" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Nyílt megosztás" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Csoport megosztás" @@ -5941,7 +5946,7 @@ msgstr "Megosztás letiltva." msgid "Error disabling share: {error_message}" msgstr "Hiba történt a megosztás letiltásakor: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5949,7 +5954,7 @@ msgstr "" "A Searx egy magánszférát tiszteletben tartó internetes metakereső. Több " "keresőmotor eredményeit gyűjti össze és jeleníti meg." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -5957,15 +5962,15 @@ msgstr "" "A Searx segítségével elkerülhető, hogy a keresőmotorok nyomon kövessék és " "profilozzák a felhasználót. Sütiket eleve nem tárol." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Keresés a weben" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Webes keresés" @@ -6135,11 +6140,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:21 +#: plinth/modules/shaarli/__init__.py:17 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:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6147,15 +6152,15 @@ msgstr "" "Vedd figyelembe, hogy a Shaarli csak egy felhasználói fiókot támogat, melyet " "az első látogatás során be kell állítani." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Könyvjelzők" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6165,7 +6170,7 @@ msgstr "" "internetes forgalmad védelmére terveztek. Felhasználható az internetes " "szűrők és cenzúra megkerülésére." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6178,7 +6183,7 @@ msgstr "" "eszközeiddel csatlakozhatsz erre a proxyra, és az adataik titkosítva és " "proxizva lesznek a Shadowsocks kiszolgálón keresztül." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6187,11 +6192,11 @@ msgstr "" "SOCKS5 proxy URL-jét az eszközeiden, böngésződben vagy alkalmazásaidban így: " "http://freedombox_eszkozod_cime:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Socks5 Proxy" @@ -6223,7 +6228,7 @@ msgid "Encryption method. Must match setting on server." msgstr "" "Titkosítási módszer. A kiszolgáló beállításával meg kell hogy egyezzen." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6336,7 +6341,7 @@ msgstr "Megosztás szerkesztése" msgid "Share deleted." msgstr "Megosztás törölve." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6347,7 +6352,7 @@ msgstr "" "működő állapotába való visszaállítására abban az esetben, ha nem kívánt " "változtatások történtek a rendszerben." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6359,7 +6364,7 @@ msgstr "" "pillanatképek automatikusan ki lesznek takarítva az alábbi beállítások " "szerint." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for Biztonsági mentést, mivel a pillanatképek csak ugyanazon a " "partíción tárolhatók amikről készülnek. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Háttértár-pillanatképek" @@ -6576,7 +6581,7 @@ msgstr "A visszaállítás befejezéséhez a rendszert újra kell indítani." msgid "Rollback to Snapshot" msgstr "Visszaállítás pillanatképre" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6588,7 +6593,7 @@ msgstr "" "számítógép felügyeleti feladatokat hajthat végre, fájlokat másolhat vagy " "egyéb szolgáltatásokat futtathat ilyen kapcsolat használatával." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Biztonságos parancsértelmező (SSH) kiszolgáló" @@ -6629,7 +6634,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "SSH jelszavas hitelesítés engedélyezve." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Egyszeri bejelentkezés" @@ -6637,7 +6642,7 @@ msgstr "Egyszeri bejelentkezés" msgid "Login" msgstr "Bejelentkezés" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6649,148 +6654,148 @@ msgstr "" "fel- és lecsatolhatsz cserélhető adathordozókat, kibővítheted a root " "partíciót, stb." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Háttértár" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "A művelet sikertelen." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "A művelet meg lett szakítva." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Az eszköz leválasztása már folyamatban van." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "A művelet nem támogatott hiányzó eszközvezérlő/segédeszköz támogatás miatt." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "A művelet túllépte az időkorlátot." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "A művelet fel fogja ébreszteni a lemezt, amely mély-alvó állapotban van." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" "Megpróbáltál leválasztani egy eszközt, amely jelenleg is használatban van." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "A művelet már meg lett szakítva." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "Nem jogosult végrehajtani a kért műveletet." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Az eszköz már fel lett csatolva." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Az eszköz nincs felcsatolva." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "Nem használhatja a kért lehetőséget." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Az eszközt egy másik felhasználó felcsatolva." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Kevés a szabad hely a rendszerpartíción: {percent_used}% felhasználva, " "{free_space} szabad." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Érvénytelen könyvtárnév." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Az elérési út nem könyvtár." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "A könyvtár nem olvasható a felhasználó által." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Könyvtár" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Megosztás" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6871,7 +6876,7 @@ msgstr "Az eszköz biztonságosan kivehető." msgid "Error ejecting device: {error_message}" msgstr "Hiba történt az eszköz kiadása során: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6883,7 +6888,7 @@ msgstr "" "eszköz fájljain végzett módosítások a többi eszközön is automatikusan " "jelentkeznek, amennyiben azokra telepítve van a szolgáltatás." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6903,20 +6908,20 @@ msgstr "" "felület csak az \"admin\" vagy a \"syncthing-access\" csoporthoz tartozó " "felhasználók számára hozzáférhető." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "A Syncthing alkalmazás beállítása" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Fájlszinkronizáció" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6928,7 +6933,7 @@ msgstr "" "elosztott hálózatán keresztül. Még ha néhány csomópont meg is hibásodik, a " "fájljaidat le tudod tölteni a fennmaradó csomópontokról." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6939,11 +6944,11 @@ msgstr "" "csomópontnak is otthont ad. További bevezető csomópontok is hozzáadhatók, " "melyek majd bemutatják ezt a csomópontot a többi adattároló csomópontnak." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Elosztott fájltároló" @@ -6983,7 +6988,7 @@ msgstr "Csatlakozott bevezetők" msgid "Remove" msgstr "Eltávolít" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6997,40 +7002,40 @@ msgstr "" "torproject.org/download/download-easy.html.en\">Tor böngésző használatát " "javasolja." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Tor Onion szolgáltatás" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Tor híd relay" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Tor relay port elérhető" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Hozzáférés a {url} URL-hez tcp{kind}-on Tor használatával" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Hagyd jóvá a Tor használatát {url} célcímhez tcp{kind} protokollon" @@ -7182,11 +7187,15 @@ msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" "Egy Tor SOCKS port elérhető a te %(box_name)s eszközöd 9050-es TCP portján." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "A beállítás változatlan" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "A Transmission egy webes felülettel rendelkező BitTorrent kliens." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7194,16 +7203,16 @@ msgstr "" "A BitTorrent egy peer-to-peer fájlmegosztó protokoll. Vedd figyelembe, hogy " "a BitTorrent nem biztosít névtelenséget." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7213,7 +7222,7 @@ msgstr "" "tervezve, hogy elérhetővé tegye a hírolvasást bárhonnan, miközben igyekszik " "egy valódi asztali alkalmazás érzetét kelteni." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any bármely felhasználó számára {box_name} felhasználónévvel." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7231,15 +7240,15 @@ msgstr "" "hez, használd a /tt-rss-app URL-t a " "csatlakozáshoz." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Hírcsatornákra való feliratkozás / olvasás" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Hírcsatorna-olvasó" @@ -7247,13 +7256,13 @@ msgstr "Hírcsatorna-olvasó" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "A legfrissebb szoftver- és biztonsági frissítések ellenőrzése és alkalmazása." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7261,7 +7270,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7470,14 +7479,14 @@ msgstr "A frissítést nem sikerült elindítani." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7485,15 +7494,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Felhasználók és csoportok" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Hozzáférés az összes szolgáltatáshoz és rendszerbeállításhoz" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP bejegyzés ellenőrzése: \"{search_item}\"" @@ -7737,18 +7746,18 @@ msgstr "Jelszómódosítás" msgid "Password changed successfully." msgstr "A jelszó módosítása sikeres." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8042,7 +8051,7 @@ msgstr "Kapcsolat törlése a kiszolgálóval" msgid "Server deleted." msgstr "Kiszolgáló törölve." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8051,7 +8060,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8060,28 +8069,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Cím" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8099,7 +8108,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8112,7 +8121,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8120,11 +8129,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -8160,23 +8169,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Általános" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Hiba lépett fel a telepítés során" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "telepítés" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "letöltés" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "adathordozó csere" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurációs fájl: {file}" @@ -8545,6 +8554,16 @@ msgstr "befejezettségi szint: %(percentage)s%%" msgid "Gujarati" msgstr "Gudzsaráti" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Hiba a domain név beállítása közben: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Hiba történt a beállítás közben." + #, fuzzy #~| msgid "Specified directory does not exist." #~ msgid "User does not exist" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index 092ef1a9c..db1122ad2 100644 --- a/plinth/locale/id/LC_MESSAGES/django.po +++ b/plinth/locale/id/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (FreedomBox)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-06-24 00:42+0000\n" "Last-Translator: Reza Almanda \n" "Language-Team: Indonesian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1042,15 +1043,15 @@ msgstr "" "mengakses aplikasi. Semua pengguna dengan akses dapat menggunakan semua " "perpustakaan." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Gunakan perpustakaan e-book Calibre" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "kaliber" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "Perpustakaan e-book" @@ -1124,7 +1125,7 @@ msgstr "{name} dihapus." msgid "Could not delete {name}: {error}" msgstr "Tidak dapat menghapus {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1137,7 +1138,7 @@ msgstr "" "banyak fungsi lanjutan yang biasanya tidak diperlukan. Terminal berbasis web " "untuk operasi konsol juga tersedia ." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1149,7 +1150,7 @@ msgstr "" "port firewall kustom dan jaringan canggih seperti manajemen ikatan, bridging " "dan VLAN." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1158,7 +1159,7 @@ msgstr "" "Itu dapat diakses oleh pengguna apa pun pada " "{box_name} milik kelompok admin." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1166,12 +1167,12 @@ msgstr "" "Kokpit mengharuskan Anda mengaksesnya melalui nama domain. Itu tidak akan " "berfungsi ketika diakses menggunakan alamat IP sebagai bagian dari URL." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Kokpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Administrasi Server" @@ -1183,7 +1184,7 @@ msgstr "Mengakses" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Kokpit hanya akan bekerja ketika diakses menggunakan URL berikut." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1191,11 +1192,11 @@ msgstr "" "Di sini Anda dapat mengatur beberapa opsi konfigurasi umum seperti nama " "host, nama domain, halaman beranda server web dll." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Konfigurasi Umum" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1204,7 +1205,7 @@ msgstr "Konfigurasi Umum" msgid "Configure" msgstr "Konfigurasi" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1336,7 +1337,7 @@ msgstr "Menampilkan aplikasi dan fitur canggih" msgid "Hiding advanced apps and features" msgstr "Menyembunyikan aplikasi dan fitur canggih" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1348,7 +1349,7 @@ msgstr "" "dan server komunikasi lainnya dapat menggunakannya untuk menetapkan " "panggilan antar pihak yang tidak dapat terhubung satu sama lain." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as ejabberd memerlukan dikonfigurasi dengan rincian yang " "disediakan disini." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "Helper VoIP" @@ -1380,7 +1381,7 @@ msgstr "Gunakan URL berikut untuk mengkonfigurasi server komunikasi Anda:" msgid "Use the following shared authentication secret:" msgstr "Gunakan rahasia otentikasi bersama berikut:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1388,11 +1389,11 @@ msgstr "" "Network Time Server adalah program yang memelihara waktu sistem dalam " "sinkronisasi dengan server di Internet." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Tanggal & Hari" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Waktu disinkronkan ke server NTP" @@ -1421,11 +1422,11 @@ msgstr "Kesalahan pengaturan zona waktu: {exception}" msgid "Time zone set" msgstr "Set zona waktu" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge adalah klien BitTorrent yang menampilkan UI Web." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1433,17 +1434,17 @@ msgstr "" "Kata sandi default adalah 'Deluge', tetapi Anda harus masuk dan mengubahnya " "segera setelah mengaktifkan layanan ini." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Unduh file menggunakan aplikasi BitTorrent" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Membanjiri" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "Klien Web BitTorrent" @@ -1455,7 +1456,7 @@ msgstr "Unduh Direktori" msgid "Bittorrent client written in Python/PyGTK" msgstr "Klien BitTorrent ditulis dalam Python / Pygtk" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1463,54 +1464,54 @@ msgstr "" "Tes diagnostik sistem akan menjalankan sejumlah cek pada sistem Anda untuk " "mengonfirmasi bahwa aplikasi dan layanan berfungsi seperti yang diharapkan." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Diagnosa" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "LULUS" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "gagal" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "kesalahan" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "peringatan" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MIB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GIB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" "Anda harus menonaktifkan beberapa aplikasi untuk mengurangi penggunaan " "memori." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Kamu seharusnya tidak menginstal aplikasi baru di sistem ini." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1519,7 +1520,7 @@ msgstr "" "Sistem rendah pada memori: {percent_used}% digunakan, {memory_available} " "{memory_available_unit} gratis. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Memori rendah" @@ -1572,7 +1573,7 @@ msgstr "Hasil" msgid "Diagnostic Test" msgstr "Tes Diagnostik" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1580,12 +1581,12 @@ msgstr "" "Diaspora * adalah jejaring sosial yang terdesentralisasi di mana Anda dapat " "menyimpan dan mengontrol data Anda sendiri." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "Diaspora *" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Jejaring Sosial Federasi" @@ -1646,7 +1647,7 @@ msgstr "Pendaftaran Pengguna Diaktifkan" msgid "User registrations disabled" msgstr "Pendaftaran Pengguna dinonaktifkan" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1658,7 +1659,7 @@ msgstr "" "internet. Ini akan mencegah orang lain menemukan layanan yang disediakan " "oleh {box_name} ini." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1676,11 +1677,11 @@ msgstr "" "jika seseorang dari Internet meminta nama DNS Anda, mereka akan mendapatkan " "Tanggapan dengan alamat IP Anda saat ini." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Klien DNS Dinamis" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Nama Domain Dinamis" @@ -1738,12 +1739,17 @@ msgstr "" "Biarkan bidang ini kosong jika Anda ingin menyimpan kata sandi Anda saat ini." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Nilai opsional. Jika {box_name} Anda tidak terhubung langsung ke Internet " "(yaitu terhubung ke router NAT) URL ini digunakan untuk menentukan alamat IP " @@ -1824,12 +1830,18 @@ msgid "Please provide a password" msgstr "Harap berikan kata sandi" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Jika Anda mencari akun DNS dinamis gratis, Anda dapat menemukan layanan " "GnuDIP gratis di web clientKlien XMPP. Saat diaktifkan, ejabberd dapat diakses " "oleh pengguna dengan sebuah {box_name} login." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn atau konfigurasikan server " "eksternal." -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "Ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Server obrolan" @@ -2060,34 +2072,28 @@ msgstr "" "terlihat seperti nama pengguna @%(domainname)s. Anda dapat mengatur " "domain Anda pada sistem Konfigurasi halaman." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Server obrolan" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Kesalahan pengaturan nama domain: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2124,54 +2130,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Tidak sertifikat" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid domain" msgstr "Masukkan sebuah nama pengguna yang valid." -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid destination" msgstr "Masukkan sebuah nama pengguna yang valid." -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domain" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Koneksi utama" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "Kelola Perpustakaan" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktifkan" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2180,7 +2198,7 @@ msgid "Disabled" msgstr "Non-Aktifkan" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2200,7 +2218,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2233,49 +2251,32 @@ msgstr "Buat cadangan baru" msgid "Add" msgstr "Tambah" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domain" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "Kelola Snapshot" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Tipe Layanan" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Terjadi kesalahan selama konfigurasi." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2286,7 +2287,7 @@ msgstr "" "masuk dan keluar pada {box_name} Anda. Menjaga firewall diaktifkan dan " "dikonfigurasi dengan benar mengurangi risiko ancaman keamanan dari Internet." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Firewall" @@ -2408,7 +2409,7 @@ msgstr "Jalankan Pengaturan" msgid "Setup Complete" msgstr "Pengaturan Selesai" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2426,7 +2427,7 @@ msgstr "" "beberapa klien grafis yang tersedia. Dan Anda dapat membagikan kode Anda " "dengan orang-orang di seluruh dunia." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2434,15 +2435,15 @@ msgstr "" "Untuk mempelajari lebih lanjut tentang cara menggunakan git kunjungi tutorial git ." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Akses baca-tulis ke repositori git" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Hosting Git Sederhana" @@ -2554,31 +2555,31 @@ msgstr "Diedit repositori." msgid "Edit repository" msgstr "Edit Repositori" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Dokumentasi" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Manual" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Dapatkan Dukungan" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Berikan umpan balik" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2869,7 +2870,7 @@ msgstr "Tentang {box_name}" msgid "{box_name} Manual" msgstr "Panduan {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2881,7 +2882,7 @@ msgstr "" "memberikan anonimitas dengan mengirimkan lalu lintas terenkripsi melalui " "jaringan yang dikelola sukarela yang didistribusikan di seluruh dunia." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2889,7 +2890,7 @@ msgstr "" "Temukan informasi lebih lanjut tentang i2p pada proyek mereka, Halaman Beranda." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2897,19 +2898,19 @@ msgstr "" "Kunjungan pertama ke antarmuka web yang disediakan akan memulai proses " "konfigurasi." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Kelola aplikasi I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2p" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Jaringan Anonimitas" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2p proxy" @@ -2954,7 +2955,7 @@ msgstr "" "to-peer. Unduh file dengan menambahkan torrents atau buat torrent baru untuk " "berbagi file." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2964,7 +2965,7 @@ msgstr "" "bahasa markup ringan, termasuk Markdown, dan fungsionalitas blogging umum " "seperti komentar dan umpan RSS." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2978,15 +2979,15 @@ msgstr "" "\"{users_url}\">Konfigurasi Pengguna, Anda dapat mengubah izin ini atau " "menambahkan pengguna baru." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "Ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki dan Blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Lihat dan edit aplikasi Wiki" @@ -3065,11 +3066,11 @@ msgstr "{title} dihapus." msgid "Could not delete {title}: {error}" msgstr "Tidak dapat menghapus {title}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "Infinoted adalah server untuk gobby, editor teks kolaboratif." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3080,11 +3081,11 @@ msgstr "" "a>, desktop client dan instal. Kemudian mulai gobby dan pilih \"Hubungkan ke " "Server\" dan masukkan nama domain {box_name}." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "Menginfisi" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Server Gobby" @@ -3105,7 +3106,7 @@ msgstr "" "Mulai gobby dan pilih \"Hubungkan ke Server\" dan masukkan nama domain " "{box_name} Anda." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3113,11 +3114,11 @@ msgstr "" "JSXC adalah klien web untuk XMPP. Biasanya digunakan dengan server XMPP yang " "berjalan secara lokal." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "Jsxc" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Obrolan Klien" @@ -3126,7 +3127,7 @@ msgstr "Obrolan Klien" msgid "JavaScript license information" msgstr "Informasi Lisensi JavaScript" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3142,7 +3143,7 @@ msgstr "" "pengguna adalah pemilik sebuah domain ke Let's Encrypt, sebuah otoritas " "sertifikat (CA)." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3155,15 +3156,15 @@ msgstr "" "repository/\">Perjanjian Pelanggan Let's Encrypt sebelum menggunakan " "layanan ini." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Sertifikat" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "Tidak dapat menguji: Tidak ada domain yang dikonfigurasi." @@ -3268,7 +3269,7 @@ msgstr "Sertifikat berhasil dihapus untuk domain {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Gagal menghapus sertifikat untuk domain {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3285,7 +3286,7 @@ msgstr "" "Pengguna pada server matriks tertentu dapat berkomunikasi dengan pengguna di " "semua server matriks lainnya melalui Federation." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3295,7 +3296,7 @@ msgstr "" "Pasang aplikasi Coturn atau konfigurasikan " "server eksternal." -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Sinaps Matrix" @@ -3372,7 +3373,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3380,7 +3381,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3389,18 +3390,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3482,7 +3483,7 @@ msgstr "" msgid "Server URL updated" msgstr "URL Server diperbarui" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3491,11 +3492,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3561,7 +3562,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3572,15 +3573,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3620,36 +3621,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3661,7 +3662,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3673,7 +3674,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3684,7 +3685,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3703,6 +3704,10 @@ msgstr "Batal" msgid "Service" msgstr "Layanan" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domain" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3806,24 +3811,24 @@ msgstr "Publikasikan kunci ke keyserver." msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Pesan Suara" @@ -3849,7 +3854,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3858,7 +3863,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Nama Layanan" @@ -3874,23 +3879,23 @@ msgstr "Semua aplikasi web" msgid "Services" msgstr "Layanan" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Jaringan" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gunakan DNSSEC pada IPv{kind}" @@ -4358,7 +4363,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4371,7 +4376,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4812,7 +4817,7 @@ msgstr "generik" msgid "TUN or TAP interface" msgstr "Antarmuka TUN atau TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -4901,7 +4906,7 @@ msgstr "Koneksi {name} dihapus." msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4912,20 +4917,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "Sambungkan ke layanan VPN" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Jaringan Privat Virtual" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4989,7 +4994,7 @@ msgstr "" msgid "Download my profile" msgstr "Unduh profil saya" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4998,33 +5003,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "ISP Anda membatasi koneksi masuk." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5033,15 +5038,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Visibilitas Publik" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "Domain PageKite" @@ -5177,35 +5182,35 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Performa" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" msgstr "Pengaturan Sistem" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Jalankan ulang atau matikan sistem." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Nyalakan" @@ -5258,14 +5263,14 @@ msgstr "" msgid "Shut Down Now" msgstr "Matikan Sekarang" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5275,20 +5280,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Proksi Web" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Akses {url} dengan proksi {proxy} pada tcp{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5299,7 +5304,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "Klien IRC" @@ -5319,7 +5324,7 @@ msgstr "Klien IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5329,19 +5334,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5408,7 +5413,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5416,7 +5421,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5425,7 +5430,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5435,17 +5440,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "Klien Email" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5454,31 +5459,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Penyimpanan Berkas Jaringan" @@ -5562,13 +5567,13 @@ msgstr "Aksi" msgid "FreedomBox OS disk" msgstr "FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "Tambah Layanan" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5598,27 +5603,27 @@ msgstr "Bagikan dinonaktifkan." msgid "Error disabling share: {error_message}" msgstr "Kesalahan pemasangan aplikasi: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Jelajahi web" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Pencarian Web" @@ -5773,11 +5778,11 @@ msgstr "" msgid "Updated security configuration" msgstr "Konfigurasi keamanan diperbarui" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli memungkinkan Anda untuk menyimpan dan berbagi bookmark." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5785,22 +5790,22 @@ msgstr "" "Catatan Shaarli hanya mendukung satu akun pengguna, yang perlu Anda siapkan " "pada kunjungan awal." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Bookmark" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5809,17 +5814,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Proksi Socks5" @@ -5850,7 +5855,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "Metode enkripsi. Harus mencocokkan setelan pada peladen." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5950,14 +5955,14 @@ msgstr "Sunting Bagikan" msgid "Share deleted." msgstr "Bagikan dihapus." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5965,14 +5970,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Penyimpanan Snapshot" @@ -6168,7 +6173,7 @@ msgstr "Sistem harus dimulai ulang untuk menyelesaikan rollback." msgid "Rollback to Snapshot" msgstr "Rollback ke Snapshot" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6176,7 +6181,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Server Secure Shell (SSH)" @@ -6221,7 +6226,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6229,7 +6234,7 @@ msgstr "" msgid "Login" msgstr "Masuk" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6237,143 +6242,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Penyimpanan" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Operasi gagal." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Operasi telah dibatalkan." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Perangkat belum terpasang." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Nama direktori tidak valid." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Direktori ini tidak ada." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Direktori" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Subdirektori (opsional)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Bagikan" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Direktori lainnya (silakan tulis)" @@ -6448,7 +6453,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6456,7 +6461,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6468,20 +6473,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6489,7 +6494,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6497,11 +6502,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6538,7 +6543,7 @@ msgstr "" msgid "Remove" msgstr "Hapus" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6547,40 +6552,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6710,54 +6715,58 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6766,12 +6775,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6779,7 +6788,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6991,14 +7000,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7006,15 +7015,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7246,18 +7255,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7569,7 +7578,7 @@ msgstr "Hapus Koneksi" msgid "Server deleted." msgstr "{name} dihapus." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7578,7 +7587,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7587,28 +7596,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Address" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -7626,7 +7635,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7639,7 +7648,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7647,11 +7656,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7685,23 +7694,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Galat saat pemasangan" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "memasang" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "mengunduh" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -8047,6 +8056,16 @@ msgstr "%(percentage)s %% selesai" msgid "Gujarati" msgstr "Bahasa Gujarat" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Kesalahan pengaturan nama domain: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Terjadi kesalahan selama konfigurasi." + #, fuzzy #~| msgid "Directory does not exist." #~ msgid "User does not exist" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index 6ae3b09d4..3b5715a8d 100644 --- a/plinth/locale/it/LC_MESSAGES/django.po +++ b/plinth/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-09-21 20:38+0000\n" "Last-Translator: Dietmar \n" "Language-Team: Italian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1118,7 +1119,7 @@ msgstr "{name} cancellato." msgid "Could not delete {name}: {error}" msgstr "Non è stato possibile cancellare {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1132,7 +1133,7 @@ msgstr "" "richieste. É disponibile inoltre un terminale web per le operazioni da " "console." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1140,7 +1141,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1149,7 +1150,7 @@ msgstr "" "È accessibile da qualsiasi utente su {box_name} " "appartenente al gruppo admin." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1157,12 +1158,12 @@ msgstr "" "Cockpit richiede l'accesso attraverso un nome di dominio. Non funzionerà " "quando si accede utilizzando un indirizzo IP come parte dell'URL." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Amministrazione Server" @@ -1174,7 +1175,7 @@ msgstr "Accesso" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit funzionerà solo quando si accede utilizzando i seguenti URL." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1182,11 +1183,11 @@ msgstr "" "Qui si possono impostare alcune opzioni di configurazione generali come " "hostname, nome di dominio, home page del webserver ecc." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Configurazione Generale" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1195,7 +1196,7 @@ msgstr "Configurazione Generale" msgid "Configure" msgstr "Configura" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1335,7 +1336,7 @@ msgstr "Visualizzazione di applicazioni e funzionalità avanzate" msgid "Hiding advanced apps and features" msgstr "Nascondere applicazioni e funzionalità avanzate" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1343,7 +1344,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Se stai cercando un profilo DNS dinamico gratuito, puoi trovare un servizio " "GnuDIP gratuito su web client da ogni utente con un login " "{box_name} ." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Server Chat" @@ -2055,30 +2067,26 @@ msgstr "" "impostare il tuo dominio nel sistema . Configura " "la pagina ." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "Server e-mail" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "Configurazione del nome di dominio di Postfix" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2111,53 +2119,65 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Ha un certificato TLS" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid domain" msgstr "Inserisci un nome utente valido." -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid destination" msgstr "Inserisci un nome utente valido." -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy msgid "domain" msgstr "Dominio" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Connessione primaria" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "Gestire le librerie" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Abilitato" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2166,7 +2186,7 @@ msgid "Disabled" msgstr "Disabilitato" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2184,7 +2204,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2215,47 +2235,30 @@ msgstr "Creare un nuovo alias e-mail" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domini" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Spam" msgstr "Gestire le librerie" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "Avviso di servizio" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Si è verificato un errore durante la configurazione." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Impostazioni invariate" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2267,7 +2270,7 @@ msgstr "" "adeguatamente configurato riduce i rischi di attacchi informatici dalla rete " "Internet." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Firewall" @@ -2387,7 +2390,7 @@ msgstr "Avvia Configurazione" msgid "Setup Complete" msgstr "Configurazione Completata" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2406,7 +2409,7 @@ msgstr "" "grafici disponibili. E puoi condividere il tuo codice con persone in tutto " "il mondo." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2414,15 +2417,15 @@ msgstr "" "Per saperne di più su come usare Git visita Git tutorial." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Accesso in lettura e scrittura ai repository Git" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Semplice Git Hosting" @@ -2538,11 +2541,11 @@ msgstr "Repository modificato." msgid "Edit repository" msgstr "Modifica repository" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Documentazione" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2550,21 +2553,21 @@ msgctxt "User guide" msgid "Manual" msgstr "Manuale" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Richiedi assistenza" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Invia feedback" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2864,7 +2867,7 @@ msgstr "Sul {box_name}" msgid "{box_name} Manual" msgstr "Manuale {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 #, fuzzy msgid "" "The Invisible Internet Project is an anonymous network layer intended to " @@ -2877,7 +2880,7 @@ msgstr "" "l'anonimato inviando traffico criptato attraverso una rete di volontari " "distribuiti in tutto il mondo." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2885,7 +2888,7 @@ msgstr "" "Si possono trovare maggiori informazioni su I2P sul sito web del loro progetto." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 #, fuzzy msgid "" "The first visit to the provided web interface will initiate the " @@ -2894,20 +2897,20 @@ msgstr "" "La prima visita all'interfaccia web fornita inizierà il processo di " "configurazione." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Gestione dell'applicazione I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 #, fuzzy msgid "Anonymity Network" msgstr "Rete di anonimato" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Proxy I2P" @@ -2955,7 +2958,7 @@ msgstr "" "peer-to-peer. Scaricate i file aggiungendo torrenti o create un nuovo " "torrent per condividere un file." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2965,7 +2968,7 @@ msgstr "" "markup di linguaggio leggeri, incluso Markdown, e comuni funzionalità di " "blogging come commenti e feed RSS." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2979,15 +2982,15 @@ msgstr "" "\"{users_url}\">Configurazione Utente è possibile cambiare questi " "permessi o aggiungere nuovi utenti." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki e Blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Vedi e modifica le applicazioni wiki" @@ -3066,12 +3069,12 @@ msgstr "{title} cancellato." msgid "Could not delete {title}: {error}" msgstr "Non è stato possibile cancellare {title}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 #, fuzzy msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted è un server per Gobby, un editore testuale comunitario." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, fuzzy, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3082,11 +3085,11 @@ msgstr "" "desktop e installarlo. Dopo avviare Hobby e seleziona \"Connect to Server\" " "e entrare nel tuo nome di dominio {box_name}." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Gobby Server" @@ -3107,7 +3110,7 @@ msgstr "" "Avvia Bobby e selezione \"Connect to Server\", e entra nel nome di dominio " "del tuo {box_name}." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3115,11 +3118,11 @@ msgstr "" "JSXC è un client web per XMPP. Tipicamente viene usato con un server XMPP in " "esecuzione nella rete locale." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Client" @@ -3128,7 +3131,7 @@ msgstr "Client" msgid "JavaScript license information" msgstr "Informazioni sulla licenza JavaScript" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3143,7 +3146,7 @@ msgstr "" "disposizione. Ci riesce provando esso stesso di essere il proprietario del " "dominio a Let's Encrypt, un'autorità di certificazione (CA)." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3156,15 +3159,15 @@ msgstr "" "letsencrypt.org/repository/\"> i termini dell'accordo dell'abbonato Let's " "Encrypt prima utilizzare questo servizio." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Certificati" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3270,7 +3273,7 @@ msgstr "Certificato cancellato correttamente per il dominio {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Cancellazione certificato fallita per il dominio {domain}:{error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3287,14 +3290,14 @@ msgstr "" "Gli utenti di un certo server Matrix possono comunicare con gli altri utenti " "attestati su tutti gli altri server Matrix tramite federazione." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3386,7 +3389,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3399,7 +3402,7 @@ msgstr "" "stile wiki, per prendere note o per collaborare con degli amici su dei " "progetti." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3414,7 +3417,7 @@ msgstr "" "MediaWiki, andando nella pagina Speciale:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3422,12 +3425,12 @@ msgstr "" "Chiunque con un collegamento a questo wiki può leggerlo. Solo gli utenti " "autenticati possono apportare modifiche ai contenuti." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3522,7 +3525,7 @@ msgstr "Tema predefinito modificato" msgid "Server URL updated" msgstr "URL del server aggiornato" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3535,11 +3538,11 @@ msgstr "" "porta predefinita (30000). Per connettersi al server, è necessario un client Minetest." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Block Sandbox" @@ -3615,7 +3618,7 @@ msgstr "Configurazione PVP aggiornata" msgid "Damage configuration updated" msgstr "Configurazione \"danni\" abilitata" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3626,15 +3629,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3674,36 +3677,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Scarica file usando applicazioni eDonkey" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 #, fuzzy msgid "Peer-to-peer File Sharing" msgstr "Condivisione File" @@ -3716,7 +3719,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 #, fuzzy msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " @@ -3738,7 +3741,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\"> Monkeysphere SSH documentation " "per maggiori dettagli." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3756,7 +3759,7 @@ msgstr "" "software disponibili sul sito di Monkeysphere ." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3775,6 +3778,10 @@ msgstr "Cancella" msgid "Service" msgstr "Servizio" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domini" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3881,7 +3888,7 @@ msgstr "Chiave pubblicata nel keyserver." msgid "Error occurred while publishing key." msgstr "Errore sorto durante la pubblicazione della chiave." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3889,7 +3896,7 @@ msgstr "" "Mumble è un software di chat vocale ad alta qualità, a bassa latenza, " "cifrato e open source." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3899,11 +3906,11 @@ msgstr "" "64738 Sono disponibili dei client da " "connettere a Mumble dai tuoi dispositivi desktop e android." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Voice Chat" @@ -3929,7 +3936,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3938,7 +3945,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Name Services" @@ -3954,23 +3961,23 @@ msgstr "" msgid "Services" msgstr "Servizi" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Reti" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilizzo DNSSEC su IPv{kind}" @@ -4463,7 +4470,7 @@ msgstr "Server DNS" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Default" @@ -4476,7 +4483,7 @@ msgid "This connection is not active." msgstr "Questa connessione non è attiva." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Sicurezza" @@ -4930,7 +4937,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5021,7 +5028,7 @@ msgstr "Connessione {name} cancellata." msgid "Failed to delete connection: Connection not found." msgstr "Cancellazione connessione fallita: connessione non trovata." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5038,20 +5045,20 @@ msgstr "" "accedere al resto della rete Internet via {box_name} per una maggiore " "sicurezza e anonimità." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Rete virtuale privata" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5122,7 +5129,7 @@ msgstr "" msgid "Download my profile" msgstr "Scarica il mio profilo" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5135,18 +5142,18 @@ msgstr "" "il tuo {box_name} non è raggiungibile dall'esterno. Questo include le " "situazioni seguenti:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} è valle di un firewall ristretto." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} è connesso ad un router (wireless) di cui non hai il controllo." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5154,7 +5161,7 @@ msgstr "" "Il tuo ISP non ti assegna un IP pubblico ma ti fornisce una connessione " "tramite NAT." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5162,11 +5169,11 @@ msgstr "" "Il tuo ISP non ti fornisce un IP statico e il tuo IP cambia ogni volta che " "ti connetti a Internet." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Il tuo ISP limita le connessioni in entrata." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5185,15 +5192,15 @@ msgstr "" "pagekite, per esempio pagekite.net. In " "futuro potrebbe essere usare il {box_name} del tuo amico." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Visibilità Pubblica" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "Dominio PageKite" @@ -5337,33 +5344,33 @@ msgstr "" "Vedi le istruzioni della configurazione del client SSH" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Monitoraggio del sistema" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Riavvia o spegni il sistema." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Alimentazione" @@ -5428,7 +5435,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Spegni Ora" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5439,7 +5446,7 @@ msgstr "" "header HTTP, controllando gli accessi, rimuovendo pubblicità e altra odiosa " "spazzatura dell'Internet. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5454,20 +5461,20 @@ msgstr "" "documentazione su http://config." "Privoxy.org/ o http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accesso {url} con proxy {proxy} su tcp{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5484,7 +5491,7 @@ msgstr "" "possibile usare uno o più client Quassel desktop o mobile, per connettersi e " "disconnettersi su di esso." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktop e mobile." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "Client IRC" @@ -5508,7 +5515,7 @@ msgstr "Client IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5523,19 +5530,19 @@ msgstr "" "un'applicazione client supportata. È possibile accedere a Radicale da " "ogni utente con un profilo {box_name}." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Calendario e Rubrica" @@ -5611,7 +5618,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5619,7 +5626,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5628,7 +5635,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5638,17 +5645,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5657,31 +5664,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Stoccaggio dei file di rete" @@ -5759,11 +5766,11 @@ msgstr "Azione" msgid "FreedomBox OS disk" msgstr "" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Apri Share" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5789,27 +5796,27 @@ msgstr "Share disabilitato." msgid "Error disabling share: {error_message}" msgstr "Errore installazione applicazione: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5964,32 +5971,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5998,17 +6005,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -6037,7 +6044,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6137,14 +6144,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6152,14 +6159,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -6350,7 +6357,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6358,7 +6365,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6399,7 +6406,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6407,7 +6414,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6415,144 +6422,144 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 #, fuzzy msgid "The device is already unmounting." msgstr "Il dispositivo sta già smontando." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Il dispositivo è già montato." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Hostname non valido." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Partage" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6627,7 +6634,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6635,7 +6642,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6647,20 +6654,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6668,7 +6675,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6676,11 +6683,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6715,7 +6722,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6724,40 +6731,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6885,33 +6892,37 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Impostazioni invariate" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission è un client BitTorrent che può essere gestito da Web UI." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any utente con un account su {box_name}." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6942,12 +6953,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6955,7 +6966,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7156,14 +7167,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7171,15 +7182,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7405,18 +7416,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7710,7 +7721,7 @@ msgstr "Cancella Connessione a server" msgid "Server deleted." msgstr "Server cancellato." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7719,7 +7730,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7728,26 +7739,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "Sito web e blog" @@ -7761,7 +7772,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7774,7 +7785,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7782,11 +7793,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7820,23 +7831,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -8181,6 +8192,14 @@ msgstr "%(percentage)s%% completata" msgid "Gujarati" msgstr "" +#~ msgid "Postfix domain name config" +#~ msgstr "Configurazione del nome di dominio di Postfix" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Si è verificato un errore durante la configurazione." + #~ msgid "Disable selected" #~ msgstr "Disattivare selezionato" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index ac6211961..8bcbfef96 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-05-20 12:32+0000\n" "Last-Translator: Jacque Fresco \n" "Language-Team: Japanese calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1048,7 +1049,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1057,7 +1058,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1065,25 +1066,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1095,17 +1096,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1114,7 +1115,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1228,7 +1229,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1236,7 +1237,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1703,7 +1703,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1730,13 +1730,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1848,30 +1848,26 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1904,46 +1900,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1952,7 +1958,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1970,7 +1976,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -1995,43 +2001,28 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2039,7 +2030,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2146,7 +2137,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2157,21 +2148,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2283,31 +2274,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2532,7 +2523,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2540,31 +2531,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2601,14 +2592,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2617,15 +2608,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2702,11 +2693,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2714,11 +2705,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2737,17 +2728,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2756,7 +2747,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2766,7 +2757,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2774,15 +2765,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2883,7 +2874,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2893,14 +2884,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -2971,7 +2962,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2979,7 +2970,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2988,18 +2979,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3081,7 +3072,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3090,11 +3081,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3160,7 +3151,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3171,15 +3162,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3219,36 +3210,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3260,7 +3251,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3272,7 +3263,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3283,7 +3274,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3302,6 +3293,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3405,24 +3400,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3448,7 +3443,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3457,7 +3452,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3473,23 +3468,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3957,7 +3952,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -3970,7 +3965,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4411,7 +4406,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4500,7 +4495,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4511,20 +4506,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4588,7 +4583,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4597,33 +4592,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4632,15 +4627,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4774,33 +4769,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4853,14 +4848,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4870,20 +4865,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4894,7 +4889,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4914,7 +4909,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4924,19 +4919,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5003,7 +4998,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5011,7 +5006,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5020,7 +5015,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5030,17 +5025,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5049,31 +5044,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5151,11 +5146,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5181,27 +5176,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5356,32 +5351,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5390,17 +5385,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5429,7 +5424,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5529,14 +5524,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5544,14 +5539,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5741,7 +5736,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5749,7 +5744,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5790,7 +5785,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5798,7 +5793,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5806,143 +5801,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6017,7 +6012,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6025,7 +6020,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6037,20 +6032,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6058,7 +6053,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6066,11 +6061,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6105,7 +6100,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6114,40 +6109,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6273,54 +6268,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6328,12 +6327,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6341,7 +6340,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6537,14 +6536,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6552,15 +6551,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6786,18 +6785,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7091,7 +7090,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7100,7 +7099,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7109,26 +7108,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7142,7 +7141,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7155,7 +7154,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7163,11 +7162,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7201,23 +7200,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index 6b7299726..aa0341b82 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2020-07-16 16:41+0000\n" "Last-Translator: Yogesh \n" "Language-Team: Kannada calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1048,7 +1049,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1057,7 +1058,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1065,25 +1066,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1095,17 +1096,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1114,7 +1115,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1228,7 +1229,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1236,7 +1237,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1703,7 +1703,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "ಬಗ್ಗೆ" @@ -1730,13 +1730,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1848,30 +1848,26 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1904,46 +1900,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1952,7 +1958,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1970,7 +1976,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -1995,43 +2001,28 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2039,7 +2030,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2146,7 +2137,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2157,21 +2148,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2283,31 +2274,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2532,7 +2523,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2540,31 +2531,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2601,14 +2592,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2617,15 +2608,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2702,11 +2693,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2714,11 +2705,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2737,17 +2728,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2756,7 +2747,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2766,7 +2757,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2774,15 +2765,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2883,7 +2874,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2893,14 +2884,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -2971,7 +2962,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2979,7 +2970,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2988,18 +2979,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3081,7 +3072,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3090,11 +3081,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3160,7 +3151,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3171,15 +3162,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3219,36 +3210,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3260,7 +3251,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3272,7 +3263,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3283,7 +3274,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3302,6 +3293,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3405,24 +3400,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3448,7 +3443,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3457,7 +3452,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3473,23 +3468,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3957,7 +3952,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -3970,7 +3965,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4411,7 +4406,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4500,7 +4495,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4511,20 +4506,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4588,7 +4583,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4597,33 +4592,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4632,15 +4627,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4774,33 +4769,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4853,14 +4848,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4870,20 +4865,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4894,7 +4889,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4914,7 +4909,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4924,19 +4919,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5003,7 +4998,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5011,7 +5006,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5020,7 +5015,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5030,17 +5025,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5049,31 +5044,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5153,11 +5148,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "ಫ್ರೀಡಂಬಾಕ್ಸ್" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5183,27 +5178,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5358,32 +5353,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5392,17 +5387,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5431,7 +5426,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5531,14 +5526,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5546,14 +5541,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5743,7 +5738,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5751,7 +5746,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5792,7 +5787,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5800,7 +5795,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5808,143 +5803,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6019,7 +6014,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6027,7 +6022,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6039,20 +6034,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6060,7 +6055,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6068,11 +6063,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6107,7 +6102,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6116,40 +6111,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6275,54 +6270,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6330,12 +6329,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6343,7 +6342,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6539,14 +6538,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6554,15 +6553,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6788,18 +6787,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7093,7 +7092,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7102,7 +7101,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7111,26 +7110,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7144,7 +7143,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7157,7 +7156,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7165,11 +7164,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7203,23 +7202,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index ddb0abb9f..2213eba8c 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-02-22 10:50+0000\n" "Last-Translator: Kornelijus Tvarijanavičius \n" "Language-Team: Lithuanian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1049,7 +1050,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1058,7 +1059,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1066,25 +1067,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1096,17 +1097,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1115,7 +1116,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1229,7 +1230,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1237,7 +1238,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1704,7 +1704,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Apie" @@ -1731,13 +1731,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1849,30 +1849,26 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1905,46 +1901,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1953,7 +1959,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1971,7 +1977,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -1996,43 +2002,28 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2040,7 +2031,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2147,7 +2138,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2158,21 +2149,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2284,31 +2275,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2533,7 +2524,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2541,31 +2532,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2602,14 +2593,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2618,15 +2609,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2703,11 +2694,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2715,11 +2706,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2738,17 +2729,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2757,7 +2748,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2767,7 +2758,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2775,15 +2766,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2884,7 +2875,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2894,14 +2885,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -2972,7 +2963,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2980,7 +2971,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2989,18 +2980,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3082,7 +3073,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3091,11 +3082,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3161,7 +3152,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3172,15 +3163,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3220,36 +3211,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3261,7 +3252,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3273,7 +3264,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3284,7 +3275,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3303,6 +3294,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3406,24 +3401,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3449,7 +3444,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3458,7 +3453,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3474,23 +3469,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3958,7 +3953,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -3971,7 +3966,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4412,7 +4407,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4501,7 +4496,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4512,20 +4507,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4589,7 +4584,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4598,33 +4593,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4633,15 +4628,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4775,33 +4770,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4854,14 +4849,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4871,20 +4866,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4895,7 +4890,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4915,7 +4910,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4925,19 +4920,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5004,7 +4999,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5012,7 +5007,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5021,7 +5016,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5031,17 +5026,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5050,31 +5045,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5152,11 +5147,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5182,27 +5177,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5357,32 +5352,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5391,17 +5386,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5430,7 +5425,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5530,14 +5525,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5545,14 +5540,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5742,7 +5737,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5750,7 +5745,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5791,7 +5786,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5799,7 +5794,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5807,143 +5802,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6018,7 +6013,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6026,7 +6021,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6038,20 +6033,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6059,7 +6054,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6067,11 +6062,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6106,7 +6101,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6115,40 +6110,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6274,54 +6269,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6329,12 +6328,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6342,7 +6341,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6538,14 +6537,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6553,15 +6552,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6787,18 +6786,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7092,7 +7091,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7101,7 +7100,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7110,26 +7109,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7143,7 +7142,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7156,7 +7155,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7164,11 +7163,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7202,23 +7201,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index ee5402170..e987b9fb3 100644 --- a/plinth/locale/nb/LC_MESSAGES/django.po +++ b/plinth/locale/nb/LC_MESSAGES/django.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" -"PO-Revision-Date: 2021-08-19 13:51+0000\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" +"PO-Revision-Date: 2021-11-29 19:52+0000\n" "Last-Translator: Petter Reinholdtsen \n" "Language-Team: Norwegian Bokmål \n" @@ -25,13 +25,13 @@ 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.8-dev\n" +"X-Generator: Weblate 4.10-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "Sidekilde" -#: plinth/context_processors.py:23 plinth/views.py:81 +#: plinth/context_processors.py:23 plinth/views.py:84 msgid "FreedomBox" msgstr "FreedomBox" @@ -40,22 +40,22 @@ msgstr "FreedomBox" msgid "Service {service_name} is running" msgstr "Tjenesten {service_name} kjører" -#: plinth/daemon.py:131 +#: plinth/daemon.py:158 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "Lytter på {kind} port {listen_address}:{port}" -#: plinth/daemon.py:135 +#: plinth/daemon.py:162 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "Lytter på {kind} port {port}" -#: plinth/daemon.py:203 +#: plinth/daemon.py:230 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "Koble til {host}:{port}" -#: plinth/daemon.py:205 +#: plinth/daemon.py:232 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "Klarer ikke koble til {host}:{port}" @@ -97,33 +97,33 @@ msgstr "Språk som skal brukes i dette nettgrensesnittet" msgid "Use the language preference set in the browser" msgstr "Bruk språkforvalg satt i nettleseren" -#: plinth/middleware.py:36 plinth/templates/setup.html:18 +#: plinth/middleware.py:38 plinth/templates/setup.html:18 msgid "Application installed." msgstr "Program installert." -#: plinth/middleware.py:41 +#: plinth/middleware.py:43 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "Feil ved programinstallering: {string} {details}" -#: plinth/middleware.py:45 +#: plinth/middleware.py:47 #, python-brace-format msgid "Error installing application: {error}" msgstr "Feil ved programinstallering: {error}" -#: plinth/modules/apache/__init__.py:42 +#: plinth/modules/apache/__init__.py:33 #, fuzzy #| msgid "Chat Server" msgid "Apache HTTP Server" msgstr "Nettprat-tjener" -#: plinth/modules/apache/__init__.py:48 +#: plinth/modules/apache/__init__.py:41 #: plinth/modules/monkeysphere/templates/monkeysphere.html:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:46 msgid "Web Server" msgstr "Nett-tjener" -#: plinth/modules/apache/__init__.py:54 +#: plinth/modules/apache/__init__.py:47 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "{box_name} Vev-grensesnitt (Plinth)" @@ -138,7 +138,7 @@ msgstr "Kontakt nettadressen {url} på tcp{kind}" msgid "Access URL {url}" msgstr "Kontakt nettadressen {url}" -#: plinth/modules/avahi/__init__.py:36 +#: plinth/modules/avahi/__init__.py:26 #, python-brace-format msgid "" "Service discovery allows other devices on the network to discover your " @@ -155,25 +155,25 @@ msgstr "" "kan slås av for å bedre sikkerheten, spesielt ved tilkobling til et " "fiendtlig/fremmed lokalt nettverk." -#: plinth/modules/avahi/__init__.py:60 +#: plinth/modules/avahi/__init__.py:51 msgid "Service Discovery" msgstr "Tjenesteoppdagelse" -#: plinth/modules/avahi/__init__.py:73 +#: plinth/modules/avahi/__init__.py:64 msgid "Local Network Domain" msgstr "Lokalt nettverksdomene" -#: plinth/modules/backups/__init__.py:35 +#: plinth/modules/backups/__init__.py:27 msgid "Backups allows creating and managing backup archives." msgstr "" "Sikkerhetskopier tillater opprettelse og behandling av sikkerhetskopiarkiver." -#: plinth/modules/backups/__init__.py:56 plinth/modules/backups/__init__.py:208 -#: plinth/modules/backups/__init__.py:253 +#: plinth/modules/backups/__init__.py:50 plinth/modules/backups/__init__.py:202 +#: plinth/modules/backups/__init__.py:247 msgid "Backups" msgstr "Sikkerhetskopier" -#: plinth/modules/backups/__init__.py:205 +#: plinth/modules/backups/__init__.py:199 msgid "" "Enable an automatic backup schedule for data safety. Prefer an encrypted " "remote backup location or an extra attached disk." @@ -182,27 +182,27 @@ msgstr "" "Bruke helst et kryptert fjernlager eller en ekstern ekstradisk som " "sikkerhetslager." -#: plinth/modules/backups/__init__.py:211 +#: plinth/modules/backups/__init__.py:205 msgid "Enable a Backup Schedule" msgstr "Aktiver sikkerhetskopitidsplan" -#: plinth/modules/backups/__init__.py:215 -#: plinth/modules/backups/__init__.py:262 -#: plinth/modules/storage/__init__.py:331 +#: plinth/modules/backups/__init__.py:209 +#: plinth/modules/backups/__init__.py:256 +#: plinth/modules/storage/__init__.py:329 #, python-brace-format msgid "Go to {app_name}" msgstr "Gå til {app_name}" -#: plinth/modules/backups/__init__.py:250 +#: plinth/modules/backups/__init__.py:244 #, python-brace-format msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " "succeed. The latest error is: {error_message}" msgstr "" "En sikkerhetskopi på tidsplanen feilet. De {error_count} foregående " -"forsøkene lyktes heller ikke. Den siste feilen er: {error_message}" +"forsøkene lyktes heller ikke. Den siste feilen er: {error_message}" -#: plinth/modules/backups/__init__.py:258 +#: plinth/modules/backups/__init__.py:252 #, fuzzy #| msgid "Existing Backups" msgid "Error During Backup" @@ -491,7 +491,7 @@ msgid "" "To restore a backup on a new %(box_name)s you need the ssh credentials and, " "if chosen, the encryption passphrase." msgstr "" -"Innloggingsinfo for dette kodelageret er lagret på din %(box_name)s.
" +"Innloggingsinfo for dette kodelageret er lagret på din %(box_name)s.
" "For å tilbakeføre en sikkerhetskopi på en ny %(box_name)s så trenger du SSH-" "innloggingsinformasjon samt, hvis satt, krypteringspassfrasen." @@ -761,7 +761,7 @@ msgstr "Klarte ikke å avmontere!" msgid "Mounting failed" msgstr "Montering feilet" -#: plinth/modules/bepasty/__init__.py:25 +#: plinth/modules/bepasty/__init__.py:21 msgid "" "bepasty is a web application that allows large files to be uploaded and " "shared. Text and code snippets can also be pasted and shared. Text, image, " @@ -773,7 +773,7 @@ msgstr "" "og PDF-dokumenter kan forhåndsvises i nettleseren. Delte filer kan stilles " "inn til å forsvinne etter en gitt tidsperiode." -#: plinth/modules/bepasty/__init__.py:29 +#: plinth/modules/bepasty/__init__.py:25 msgid "" "bepasty does not use usernames for login. It only uses passwords. For each " "password, a set of permissions can be selected. Once you have created a " @@ -785,7 +785,7 @@ msgstr "" "passord så kan du dele det med brukerne som skal ha de tilhørende " "rettighetene." -#: plinth/modules/bepasty/__init__.py:33 +#: plinth/modules/bepasty/__init__.py:29 msgid "" "You can also create multiple passwords with the same set of privileges, and " "distribute them to different people or groups. This will allow you to later " @@ -797,39 +797,39 @@ msgstr "" "senere for en enkelt person eller gruppe, ved å fjerne passordet deres fra " "listen." -#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +#: plinth/modules/bepasty/__init__.py:38 plinth/modules/bepasty/__init__.py:47 msgid "Read a file, if a web link to the file is available" msgstr "Les en fil, vis en nettadresse til filen er tilgjengelig" -#: plinth/modules/bepasty/__init__.py:43 +#: plinth/modules/bepasty/__init__.py:39 msgid "Create or upload files" msgstr "Opprett eller last opp filer" -#: plinth/modules/bepasty/__init__.py:44 +#: plinth/modules/bepasty/__init__.py:40 msgid "List all files and their web links" msgstr "List opp alle filer og deres nettadresser" -#: plinth/modules/bepasty/__init__.py:45 +#: plinth/modules/bepasty/__init__.py:41 msgid "Delete files" msgstr "Slett filer" -#: plinth/modules/bepasty/__init__.py:46 +#: plinth/modules/bepasty/__init__.py:42 msgid "Administer files: lock/unlock files" msgstr "Administrer filer: Lås/lås opp filer" -#: plinth/modules/bepasty/__init__.py:50 +#: plinth/modules/bepasty/__init__.py:46 msgid "None, password is always required" msgstr "Ingen, passord kreves alltid" -#: plinth/modules/bepasty/__init__.py:52 +#: plinth/modules/bepasty/__init__.py:48 msgid "List and read all files" msgstr "List opp og les alle filer" -#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:6 +#: plinth/modules/bepasty/__init__.py:63 plinth/modules/bepasty/manifest.py:6 msgid "bepasty" msgstr "bepasty" -#: plinth/modules/bepasty/__init__.py:67 +#: plinth/modules/bepasty/__init__.py:65 msgid "File & Snippet Sharing" msgstr "Deling av filer og snutter" @@ -931,9 +931,10 @@ msgstr "admin" msgid "Configuration updated." msgstr "Konfigurering oppdatert." -#: plinth/modules/bepasty/views.py:93 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 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: 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 msgid "An error occurred during configuration." msgstr "En feil oppsto under konfigureringen." @@ -949,7 +950,7 @@ msgstr "Legg til passord" msgid "Password deleted." msgstr "Passord slettet." -#: plinth/modules/bind/__init__.py:31 +#: plinth/modules/bind/__init__.py:25 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." @@ -958,7 +959,7 @@ msgstr "" "Internett, og å slå opp dine DNS-forespørsler for dine brukeres enheter på " "ditt nettverk." -#: plinth/modules/bind/__init__.py:35 +#: plinth/modules/bind/__init__.py:29 #, python-brace-format msgid "" "Currently, on {box_name}, BIND is only used to resolve DNS queries for other " @@ -969,11 +970,11 @@ msgstr "" "maskiner på lokalnettverket. Det er også inkompatibelt med deling av " "internettilknytning fra {box_name}." -#: plinth/modules/bind/__init__.py:80 +#: plinth/modules/bind/__init__.py:76 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:81 +#: plinth/modules/bind/__init__.py:77 msgid "Domain Name Server" msgstr "Domenenavnetjener" @@ -1028,7 +1029,7 @@ msgstr "Oppdater IP-adresse og domener" #: 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:214 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 #: 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 @@ -1037,7 +1038,7 @@ msgstr "Oppdater IP-adresse og domener" msgid "Configuration updated" msgstr "Oppsett oppdatert" -#: plinth/modules/calibre/__init__.py:32 +#: plinth/modules/calibre/__init__.py:26 #, python-brace-format msgid "" "calibre server provides online access to your e-book collection. You can " @@ -1047,7 +1048,7 @@ msgstr "" "calibre-tjener tilbyr nettbasert tilgang til din e-boksamling. Du kan lagre " "e-bøker på din {box_name}, lese dem på nett, eller fra en av enhetene dine." -#: plinth/modules/calibre/__init__.py:35 +#: plinth/modules/calibre/__init__.py:29 msgid "" "You can organize your e-books, extract and edit their metadata, and perform " "advanced search. calibre can import, export, or convert across a wide range " @@ -1062,7 +1063,7 @@ msgstr "" "bokmerker og framhevet tekst. Innholdsdistribusjon ved bruk av OPDS støttes " "ikke foreløpig." -#: plinth/modules/calibre/__init__.py:41 +#: plinth/modules/calibre/__init__.py:35 msgid "" "Only users belonging to calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1070,15 +1071,15 @@ msgstr "" "Kun brukere som tilhører calibre-gruppen vil ha tilgang til " "programmet. Alle brukere med tilgang kan bruke alle bibliotekene." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "E-bok-bibliotek" @@ -1157,7 +1158,7 @@ msgstr "Slettet {name}." msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1170,7 +1171,7 @@ msgstr "" "mange avanserte funksjoner som ikke kreves normalt. En nettbasert terminal " "for konsolloperasjoner er også tilgjengelig." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1182,7 +1183,7 @@ msgstr "" "tilpassede brannmursporter og avansert nettverksoppsett som bonding, " "bridging og VLAN-administrasjon." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1191,7 +1192,7 @@ msgstr "" "Den kan brukes av enhver bruker på {box_name} " "som er medlem i admin-gruppen." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1199,12 +1200,12 @@ msgstr "" "Cockpit krever at du når det gjennom et domenenavn. Det fungerer ikke når " "det nås ved bruk av en IP-adresse, eller som del av nettadressen." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Styrhus" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Tjeneradministrasjon" @@ -1218,7 +1219,7 @@ msgstr "Aksesspunkt" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit fungerer kun når det nås fra følgende nettadresser." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1226,11 +1227,11 @@ msgstr "" "Her kan du sette noen generelle oppsettsvalg som vertsnavn, domenenavn, " "vevtjener-hjemmeside, etc." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Generelt oppsett" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1239,7 +1240,7 @@ msgstr "Generelt oppsett" msgid "Configure" msgstr "Oppsett" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1368,7 +1369,7 @@ msgstr "Viser avanserte programmer og funksjoner" msgid "Hiding advanced apps and features" msgstr "Viser ikke avanserte programmer og funksjoner" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1380,7 +1381,7 @@ msgstr "" "kommunikasjonstjenere kan bruke det for å etablere en samtale mellom parter " "som ellers ikke ville kunne kontakte hverandre." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse eller ejabberd må " "settes opp med detaljene herfra." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "VoIP-hjelper" @@ -1413,7 +1414,7 @@ msgstr "Bruk følgende nettadresser for å sette opp din kommunikasjonstjener:" msgid "Use the following shared authentication secret:" msgstr "Følgende lagringsenheter er i bruk:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1421,11 +1422,11 @@ msgstr "" "Nettverkstidstjeneren er et program som synkroniserer systemets klokke med " "tjenere på Internettet." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Dato og tid" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Tid synkronisert til NTP-tjener" @@ -1454,11 +1455,11 @@ msgstr "Feil ved setting av tidssone: {exception}" msgid "Time zone set" msgstr "Tidssone satt" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge er en BitTorrent-klient som har et Web-grensesnitt." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1466,17 +1467,17 @@ msgstr "" "Standardpassordet er «deluge», men du bør logge inn og endre det umiddelbart " "etter at denne tjenesten er aktivert." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Last ned filer ved bruk av BitTorrent-programmer" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "BitTorrent nett-klient" @@ -1488,7 +1489,7 @@ msgstr "Last ned katalog" msgid "Bittorrent client written in Python/PyGTK" msgstr "BitTorrent-klient skrevet i Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1496,65 +1497,65 @@ msgstr "" "Systemets diagnostikktest vil kjøre en rekke kontroller på systemet for å få " "bekreftet at programmer og tjenester fungerer som forventet." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Diagnostikk" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 #, fuzzy #| msgid "Quassel" msgid "passed" msgstr "Quassel" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 #, fuzzy #| msgid "Setup failed." msgid "failed" msgstr "Oppsettet mislyktes." -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "feil" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 #, fuzzy #| msgid "Git" msgid "GiB" msgstr "Git" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "Du bør skru av noen programmer for å redusere minnebruken." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Du bør ikke installere noen nye programmer på dette systemet." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " "{memory_available_unit} free. {advice_message}" msgstr "" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Lite minne" @@ -1609,7 +1610,7 @@ msgstr "Resultat" msgid "Diagnostic Test" msgstr "Diagnostikktest" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1617,12 +1618,12 @@ msgstr "" "diaspora* er et desentralisert sosialt nettverk der du kan lagre og " "administrere dine egne data." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Sammenknyttet sosialt nettverk" @@ -1682,7 +1683,7 @@ msgstr "Brukerregistreringer aktivert" msgid "User registrations disabled" msgstr "Brukerregistreringer deaktivert" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1693,7 +1694,7 @@ msgstr "" "eks. hver 24 t), kan det være vanskelig for andre å finne deg på Internett. " "Dette vil hindre andre i å finne tjenester som tilbys av dette {box_name}et." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1710,11 +1711,11 @@ msgstr "" "tjeneren tildele DNS-navnet ditt til den nye IP-en. Hvis noen fra Internett " "ber om ditt DNS-navn, vil de da få svar med din gjeldende IP-adresse." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Dynamisk DNS-klient" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Dynamisk domenenavn" @@ -1771,12 +1772,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "La dette feltet stå tomt hvis du vil beholde ditt nåværende passord." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Valgfri verdi. Hvis ditt {box_name} ikke er koblet direkte til Internett " "(dvs. koblet til en NAT-ruter), blir denne nettadressen brukt til å finne " @@ -1859,12 +1865,18 @@ msgid "Please provide a password" msgstr "Vennligst oppgi et passord" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Hvis du ser etter en gratis dynamisk DNS-konto, kan du finne en gratis " "GnuDIP-tjeneste på web clientbruker med innlogging på " "{box_name}." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Nettprat-tjener" @@ -2092,34 +2104,28 @@ msgstr "" "se slik ut: username@%(domainname)s. Du kan sette opp ditt domene på " "systemsiden Configure ." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Nettprat-tjener" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Feil ved innstilling/setting av domenenavn: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2156,54 +2162,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Sertifikat mangler" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "Ugyldig tjenernavn" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "Ugyldig tjenernavn" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domene" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Primærtilkobling" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "Håndter biblioteker" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktivert" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2212,7 +2230,7 @@ msgid "Disabled" msgstr "Deaktivert" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2232,7 +2250,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2265,49 +2283,32 @@ msgstr "Lag ny sikkerhetskopi" msgid "Add" msgstr "Legg til" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domener" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "Behandle avbildninger" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Type tjeneste" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "En feil oppsto under konfigureringen." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Oppsett uendret" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2318,7 +2319,7 @@ msgstr "" "utgående nettverkstrafikk på din {box_name}. Å holde en brannmur aktivert og " "riktig konfigurert, reduserer risikoen for sikkerhetstrusler fra Internett." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Brannmur" @@ -2439,7 +2440,7 @@ msgstr "Gå i gang med oppsett" msgid "Setup Complete" msgstr "Oppsett ferdig" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 #, fuzzy msgid "" "Git is a distributed version-control system for tracking changes in source " @@ -2458,7 +2459,7 @@ msgstr "" "flerfoldige grafiske klienter. Du kan også dele koden med folk rundt omkring " "i verden." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2466,16 +2467,16 @@ msgstr "" "For å lære mer om bruk av Git, besøk Git-veiledningen." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 #, fuzzy msgid "Read-write access to Git repositories" msgstr "Lese- og skrivetilgang til Git-kodelagre" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Enkelt Git-vertsskap" @@ -2607,11 +2608,11 @@ msgstr "Kodelager redigert.." msgid "Edit repository" msgstr "Rediger kodelager" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Dokumentasjon" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2619,21 +2620,21 @@ msgctxt "User guide" msgid "Manual" msgstr "Manual" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Få støtte" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Send inn tilbakemeldinger" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2930,7 +2931,7 @@ msgstr "Om {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Manual" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2942,7 +2943,7 @@ msgstr "" "anonymitet ved å sende kryptert trafikk gjennom et frivilligdrevet nettverk " "distribuert verden om." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2950,7 +2951,7 @@ msgstr "" "For mer informasjon om I2P, sjekk deres nettside." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2958,19 +2959,19 @@ msgstr "" "Den første til å besøke det oppsatte nettgrensesnittet vil igangsette " "oppsettsprosessen." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Håndter I2P-program" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Anonymitetsnettverk" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P-mellomtjener" @@ -3016,7 +3017,7 @@ msgstr "" "likemannsnettverk. Last ned filer ved å legge til torrenter, eller opprett " "en ny torrent for å dele ei fil." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3026,7 +3027,7 @@ msgstr "" "lettvektsoppmerkingsspråk, inkludert Markdown, og vanlige bloggfunksjoner " "som kommentarer og RSS-informasjonskilder." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3040,15 +3041,15 @@ msgstr "" "\"{users_url}\">brukeroppsettet kan du endre disse tilgangene eller " "legge til nye brukere." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki og Blogg" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Vis og rediger wiki-programmer" @@ -3127,11 +3128,11 @@ msgstr "{title} slettet." msgid "Could not delete {title}: {error}" msgstr "Kunne ikke slette {title}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted er en tjener for Gobby, en samskrivende teksteditor." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3142,11 +3143,11 @@ msgstr "" "skrivebordsklient og installer den. Deretter starter du Gobby og velger " "«Koble til tjener», og skriver inn domenenavnet til din {box_name} ." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Gobby-tjener" @@ -3167,7 +3168,7 @@ msgstr "" "Start Gobby og velge «Koble til tjener», og skriver inn domenenavnet til din " "{box_name}." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3175,11 +3176,11 @@ msgstr "" "JSXC er en nettleserklient for XMPP. Typisk brukes den med en XMPP-tjener " "som kjører lokalt." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Nettpratklient" @@ -3188,7 +3189,7 @@ msgstr "Nettpratklient" msgid "JavaScript license information" msgstr "JavaScript lisensinformasjon" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3203,7 +3204,7 @@ msgstr "" "ved at det selv bekrefter eierskapet til et domene overfor " "sertifiseringsinstansen (CA) Let's Encrypt." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3215,15 +3216,15 @@ msgstr "" "les og aksepter Let's " "Encrypt Subscriber Agreement før tjenesten brukes." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Sertifikater" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3328,7 +3329,7 @@ msgstr "Vellykket sletting av sertifikatet for domenet {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Klarte ikke å slette sertifikatet for domenet {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3344,14 +3345,14 @@ msgstr "" "enheter, og krever ikke telefonnumre for å virke. Brukere på en gitt Matrix-" "tjener kan snakke med brukere på alle andre samvirkende Matrix-tjenere." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3443,7 +3444,7 @@ msgstr "" "Matrix Synapse-instanser krever et gyldig TLS-sertifikat. Gå til Let's Encrypt for å skaffe deg det." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3456,7 +3457,7 @@ msgstr "" "lignende nettside, ta noteter, eller samarbeide med andre venner på " "prosjekter." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3470,7 +3471,7 @@ msgstr "" "brukerkontoer fra MediaWiki, ved å gå til Special:CreateAccount-siden." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3478,12 +3479,12 @@ msgstr "" "Alle med en lenke til denne wiki-en kan lese den. Kun innloggede brukere kan " "endre innholdet." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3577,7 +3578,7 @@ msgstr "Forvalgt drakt endret" msgid "Server URL updated" msgstr "Tjener slettet." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3590,11 +3591,11 @@ msgstr "" "porten (30000). For å koble til tjeneren trengs en Minetest-klient." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Block-sandkassen" @@ -3665,7 +3666,7 @@ msgstr "PVP-oppsett oppdatert" msgid "Damage configuration updated" msgstr "Skadeoppsett oppdatert" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3683,15 +3684,15 @@ msgstr "" "smartelefoner, fjernsynsapparater, og spillkonsoller (som PS3 og Xbox 360) " "eller programmer som totem og Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Media-strømmetjener" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 #, fuzzy msgid "Simple Media Server" msgstr "Enkel mediatjener" @@ -3737,7 +3738,7 @@ msgstr "Angitt mappe finnes ikke" msgid "Updated media directory" msgstr "Oppdatert mediekatalog" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3747,7 +3748,7 @@ msgstr "" "store filer. Det kan delta i flere maskin-til-maskin -nettverk, inkludert " "eDonkey, Kademlia, Overnet, BitTorrent og DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3758,22 +3759,22 @@ msgstr "" "gjennom en av de egne mobil- eller skrivebords-grenseflatene, eller et " "telnet-grensesnitt. Se manualen." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "På {box_name}, finner du nedlastede filer i mappen /var/lib/mldonkey/." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Last ned filer ved bruk av eDonkey-programmer" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Maskin til maskin-fildeling" @@ -3785,7 +3786,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3805,7 +3806,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\"> Monkeysphere SSH documentation for flere detaljer." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3823,7 +3824,7 @@ msgstr "" "brukeren å installere noe programvare som er tilgjengelig på Monkeysphere-nettsiden ." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3842,6 +3843,10 @@ msgstr "Kanseller" msgid "Service" msgstr "Tjeneste" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domener" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3947,7 +3952,7 @@ msgstr "Publisert nøkkel til nøkkeltjener." msgid "Error occurred while publishing key." msgstr "Feil oppstått under utlegging av nøkkel." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3955,7 +3960,7 @@ msgstr "" "Mumble er en åpen kildekode, rask, kryptert, høy kvalitets programvare for " "nettprat." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3965,11 +3970,11 @@ msgstr "" "\"http://mumble.info\">Klienter for å koble til Mumble når skrivebordet " "og/eller Android-enheter er tilgjengelige." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Talenettprat" @@ -4002,7 +4007,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "Vellykket passordbytte." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, fuzzy, python-brace-format #| msgid "" #| "Name Services provides an overview of the ways {box_name} can be reached " @@ -4021,7 +4026,7 @@ msgstr "" "vises det om HTTP, HTTPS, og SSH-tjenester er på- eller avskrudd for " "innkommende tilkoblinger gjennom gitt navn." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Navnetjenester" @@ -4039,7 +4044,7 @@ msgstr "Alle nettprogrammer" msgid "Services" msgstr "Tjeneste" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4047,7 +4052,7 @@ msgstr "" "Sett opp nettverksenheter. Sett opp Internett via Ethernet, Wi-Fi eller " "PPPoE. Del den tilkoblingen med andre enheter på nettverket." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4055,11 +4060,11 @@ msgstr "" "Enheter administrert gjennom andre metoder kan være utilgjengelige for " "oppsett her." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Nettverk" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruker DNSSEC på IPv{kind}" @@ -4564,7 +4569,7 @@ msgstr "DNS-tjener" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Forvalg" @@ -4577,7 +4582,7 @@ msgid "This connection is not active." msgstr "Denne forbindelsen er ikke aktiv." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Sikkerhet" @@ -5093,7 +5098,7 @@ msgstr "Generisk" msgid "TUN or TAP interface" msgstr "Nettverksgrensesnitt" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5192,7 +5197,7 @@ msgstr "Tilkobling {name} slettet." msgid "Failed to delete connection: Connection not found." msgstr "Kunne ikke slette tilkobling: Tilkobling ikke funnet." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5209,22 +5214,22 @@ msgstr "" "Du kan også få tilgang til resten av Internettet via {box_name} med utvidet " "sikkerhet og anonymitet." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "Oppkoblingstype" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuelt privat nettverk" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5297,7 +5302,7 @@ msgstr "" msgid "Download my profile" msgstr "Last ned min profil" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5310,17 +5315,17 @@ msgstr "" "{box_name}-tjenester ikke nås fra resten av nettet. Dette omfatter de " "følgende situasjoner:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} er bak en begrensende brannmur." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{box_name} er koblet til en (trådløs) ruter du ikke kan kontrollere." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5328,7 +5333,7 @@ msgstr "" "Din Internett-leverandør gir deg ikke en ekstern IP-adresse, og gir i stedet " "en NAT-et Internett-tilkobling." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5336,11 +5341,11 @@ msgstr "" "Internett-leverandøren gir deg ikke en statisk IP-adresse, og IP-adressen " "endres hver gang du kobler deg til Internett." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Din Internett-leverandør begrenser innkommende oppkoblinger." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5360,15 +5365,15 @@ msgstr "" "\"https://pagekite.net\">pagekite.net. I fremtiden kan det bli mulig å " "bruke kameratens {box_name} til dette." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Offentlig synlighet" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "PageKite-domene" @@ -5523,35 +5528,35 @@ msgstr "" "Se oppsettet for SSH-klienten instructions (instruksjoner)" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Ytelse" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" msgstr "Systemoppsett" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Start om igjen, eller slå av systemet." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Strøm" @@ -5616,7 +5621,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Slå av nå" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5627,7 +5632,7 @@ msgstr "" "overskrifter, kontrollere tilgang, og fjerne annonser og annet ubehagelig " "Internett-søppel. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5642,20 +5647,20 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ eller http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Mellomtjener for nettet" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgang {url} med mellomtjener {proxy} på tcp{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5672,7 +5677,7 @@ msgstr "" "skrivebordet kan en eller flere Quassel-klienter brukes til å koble til og " "fra." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktop , og mobile enheter er tilgjengelig." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "IRC-klient" @@ -5696,7 +5701,7 @@ msgstr "IRC-klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5715,7 +5720,7 @@ msgstr "" "href=\"http://radicale.org/clients/\">støttet klientprogram . Radicale " "kan nås av alle brukere med {box_name}-innlogging." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5725,12 +5730,12 @@ msgstr "" "kalendre og adressebøker. Den tilbyr ikke å legge inn nye hendelser eller " "kontakter, det må gjøres med en egen klient." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Kalender og adressebok" @@ -5814,7 +5819,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Tilgangskontrolloppsett oppdatert" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5826,7 +5831,7 @@ msgstr "" "forventer fra en e-posttjener, medregnet MIME-støtte, adressebok, " "mappebehandling, søk etter meldinger og stavekontroll." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5839,7 +5844,7 @@ msgstr "" "som imap.example.com. For IMAP over SSL (anbefalt), fyll " "feltet for tjeneren, som imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5855,17 +5860,17 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "E-postklient" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5874,31 +5879,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Tilgang til private delinger" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Distributed File Storage" msgid "Network File Storage" @@ -5989,11 +5994,11 @@ msgstr "Handlinge" msgid "FreedomBox OS disk" msgstr "FreedomBox OS disk" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Åpne deling" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 #, fuzzy #| msgid "Add Share" msgid "Group Share" @@ -6027,7 +6032,7 @@ msgstr "Deling redigert." msgid "Error disabling share: {error_message}" msgstr "Feil ved utløsing av enhet: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6035,7 +6040,7 @@ msgstr "" "Searx er en metasøkemotor for Internett som tar hensyn til personvernet. Den " "henter og viser resultater fra flere søkemotorer." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6043,15 +6048,15 @@ msgstr "" "Searx kan brukes for å unngå sporing og profilbygging av søkemotorer. Den " "lagrer ingen kaker som forvalg." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Søk på nettet" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Nettsøk" @@ -6236,11 +6241,11 @@ msgstr "Feil ved oppsetting av begrenset tilgang: {exception}" msgid "Updated security configuration" msgstr "Oppdaterte sikkerhetsoppsett" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli tillater deg å lagre og dele bokmerker." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6248,15 +6253,15 @@ msgstr "" "Merk at Shaarli kun støtter en enkelt brukerkonto, som du må sette opp ved " "det første besøket." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Bokmerker" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6266,7 +6271,7 @@ msgstr "" "beskytte din internettrafikk. Den kan brukes til å omgå internettfiltrering " "og -sensur." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6279,7 +6284,7 @@ msgstr "" "enheter kan koble til denne mellomtjeneren, og deres data vil krypteres og " "mellomtjent gjennom Shadowsocks-tjeneren." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6287,11 +6292,11 @@ msgstr "" "For å bruke Shadowsocks etter oppsett, legg SOCKS5-mellomtjenernettadresen " "på din enhet, nettleser, eller program til http://freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "SOCKS5-mellomtjener" @@ -6320,7 +6325,7 @@ msgstr "Passord brukt for å kryptere data. Må samsvare med tjenerpassord." msgid "Encryption method. Must match setting on server." msgstr "Krypteringsmetode. Må samsvare med den brukt på tjeneren." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6426,7 +6431,7 @@ msgstr "Rediger deling" msgid "Share deleted." msgstr "Deling slettet." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6437,7 +6442,7 @@ msgstr "" "tidligere kjent god tilstand i tilfelle det har skjedd uønskede endringer på " "systemet." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6448,7 +6453,7 @@ msgstr "" "etter programvareinstallasjon. Eldre øyeblikksbilder renskes automatisk i " "henhold til innstillingene nedenfor." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for sikkerhetskopier i og med at de er lagret på samme partisjon. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Lagrings-avbildninger" @@ -6672,7 +6677,7 @@ msgstr "Systemet må startes på nytt for å fullføre tilbakerullingen." msgid "Rollback to Snapshot" msgstr "Rull tilbake til øyeblikksbilde" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6684,7 +6689,7 @@ msgstr "" "annensteds hen kan utføre administrasjonsoppgaver, kopiere filer eller kjøre " "andre tjenester ved bruk av slike tilkoblinger." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) tjener" @@ -6738,7 +6743,7 @@ msgstr "SSH-identitetsbekreftelse med passord avskrudd." msgid "SSH authentication with password enabled." msgstr "Identitetsbekreftelse til fjerntjener mislyktes." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Engangspålogging" @@ -6746,7 +6751,7 @@ msgstr "Engangspålogging" msgid "Login" msgstr "Login" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6757,92 +6762,92 @@ msgstr "" "kan vise lagringsmedia som er i bruk, montere og avmontere flyttbare medium, " "utvide rotpartisjonen, osv." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Lager" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Operasjonen mislyktes." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Operasjonen ble avbrutt." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Enheten avmonteres allerede." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Denne aktiviteten støttes ikke på grunn av manglende driver-/verktøystøtte." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "Tidsavbrudd for operasjon." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Operasjonen vil vekke en disk fra en tilstand av dyp søvn." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Prøver å avmontere en opptatt enhet." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "Operasjonen har allerede blitt avbrutt." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "Mangler rettigheter til utførelse av forespurt operasjon." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Denne enheten er allerede montert." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Enheten er ikke montert." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "Mangler rettigheter til bruk av forespurt valg." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Enheten er montert av en annen bruker." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -6852,15 +6857,15 @@ msgstr "" "Advarsel: Lite plass igjen på systempartisjon ({percent_used}% brukt, " "{free_space} ledig)." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Lite ledig diskplass" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "Diskfeil nært forestående" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, fuzzy, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6869,41 +6874,41 @@ msgstr "" "Disk {id} rapporterer at den sannsynligvis vil feile i nær fremtid. Kopier " "all data mens du fremdeles kan og erstatt disken." -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Ugyldig katalognavn." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Mappen finnes ikke." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Stien er ikke en katalog." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 #, fuzzy #| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." msgstr "Enheten er montert av en annen bruker." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "Mappen kan ikke skrives til av brukeren." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Katalog" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Undermappe (valgfritt)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Del" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Annen mappe (angi nedenfor)" @@ -6984,7 +6989,7 @@ msgstr "Enheten kan trygt kobles fra." msgid "Error ejecting device: {error_message}" msgstr "Feil ved utløsing av enhet: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6995,7 +7000,7 @@ msgstr "" "Oppretting, endring og sletting av filer på én enhet vil automatisk bli " "replikert (gjenskapt) til andre enheter." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, fuzzy, python-brace-format #| msgid "" #| "Running Syncthing on {box_name} provides an extra synchronization point " @@ -7020,20 +7025,20 @@ msgstr "" "med sine egne sett med mapper. Webgrensesnittet er bare tilgjengelig for " "brukere som hører til i «admin»-gruppen." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Administrer Syncthing-programmet" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Filsynkronisering" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7045,7 +7050,7 @@ msgstr "" "nettverk av lagringsnoder. Selv om noen av nodene mislykkes, kan filene " "hentes tilbake fra de gjenværende nodene." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7056,11 +7061,11 @@ msgstr "" "standard. Ekstra introduserere kan legges til, og vil introdusere denne " "noden for de andre lagringsnodene." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Distribuert fillagring" @@ -7099,7 +7104,7 @@ msgstr "Tilknyttede introduserere" msgid "Remove" msgstr "Fjern" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7113,40 +7118,40 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Tor-løktjeneste" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Tor Socks-mellomtjener" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Tor bro-stafettvideresendingsoppsett" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Tor relay-port tilgjengelig" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3-transport registrert" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4-transport registrert" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Adgang til URL {url} på tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekreft Tor-bruk på {url} via tcp{kind}" @@ -7297,11 +7302,15 @@ msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" "En Tor SOCKS-port er tilgjengelig på din %(box_name)s på TCP port 9050." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Oppsett uendret" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission er en BitTorrent-klient som har et Web-grensesnitt." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7309,16 +7318,16 @@ msgstr "" "BitTorrent er en like-til-like fildelingsprotokoll. Merk at BitTorrent ikke " "er anonym." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7328,7 +7337,7 @@ msgstr "" "designet for å kunne lese nyheter fra hvor som helst, mens man er så nær en " "virkelig skrivebordsenhet som mulig." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any bruker med " "et {box_name}-brukernavn." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -7349,15 +7358,15 @@ msgstr "" "Når du bruker et mobilbasert- eller skrivebords-program for Tiny Tiny RSS, " "bruk nettadressen /tt-rss-appfor å koble til." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Les og abonner på nyhetsstrømmer" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Nyhetstrøm-leser" @@ -7365,12 +7374,12 @@ msgstr "Nyhetstrøm-leser" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (avgreining)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "Sjekk og legg til siste programvare- og sikkerhetsoppdateringer." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7378,7 +7387,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7619,7 +7628,7 @@ msgstr "Å starte oppgradering (upgrade) mislyktes." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 #, fuzzy msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -7630,7 +7639,7 @@ msgstr "" "identitetsbekreftelsesmekanisme for de fleste programmer. Noen kan kreve at " "en brukerkonto er en del av gruppen for å klarere brukrens tilgang til det." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, fuzzy, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7641,15 +7650,15 @@ msgstr "" "liste over programmer som er relevante for dem på hjemmesiden. Dog kan kun " "brukere av admin-gruppen endre programmer eller systeminnstillinger." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Brukere og grupper" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Tilgang til alle tjenester og systeminnstillinger" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Sjekk LDAP-oppføring «{search_item}»" @@ -7906,11 +7915,11 @@ msgstr "Endre passord" msgid "Password changed successfully." msgstr "Vellykket passordbytte." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard er en rask, moderne og sikker VPN-tunnel." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7919,7 +7928,7 @@ msgstr "" "Kan brukes til å koble til en VPN-tilbyder som støtter WireGuard, og for å " "rute all utgående trafikk fra {box_name} gjennom VPN-tunellen." -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8272,7 +8281,7 @@ msgstr "Slett tilkobling" msgid "Server deleted." msgstr "Tjener slettet." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8281,7 +8290,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8290,28 +8299,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Adresse" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8329,7 +8338,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8342,7 +8351,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8350,11 +8359,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "Foto-organiserer" @@ -8394,23 +8403,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Generisk" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Feil under installasjon" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "installering" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "laster ned" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "mediaendring" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "oppsettsfil: {file}" @@ -8788,6 +8797,16 @@ msgstr "%(percentage)s%% fullført" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Feil ved innstilling/setting av domenenavn: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "En feil oppsto under konfigureringen." + #, fuzzy #~| msgid "Directory does not exist." #~ msgid "User does not exist" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 30f210998..506c21d1c 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-09-18 13:33+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1065,15 +1066,15 @@ msgstr "" "tot deze toepassing. Alle gebruikers met toegang kunnen alle bibliotheken " "gebruiken." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Gebruik calibre e-book bibliotheken" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "E-boek bibliotheek" @@ -1147,7 +1148,7 @@ msgstr "{name} verwijderd." msgid "Could not delete {name}: {error}" msgstr "Verwijderen van {name} mislukt: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1160,7 +1161,7 @@ msgstr "" "beschikbaar voor veel geavanceerde functies die vaak niet gebruikt worden. " "Er is ook een webgebaseerde terminal beschikbaar voor consoleactiviteiten." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1172,7 +1173,7 @@ msgstr "" "gebruikt voor het openen van aangepaste firewallpoorten en geavanceerde " "netwerkentechnieken zoals bonding, bridging en VLAN-beheer." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1181,7 +1182,7 @@ msgstr "" "Het kan geraadpleegd worden door iedere gebruiker op {box_name} die lid is van de systeembeheerdergroep (admin)." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1189,12 +1190,12 @@ msgstr "" "Cockpit vereist dat je toegang krijgt via een domeinnaam. Het zal niet " "werken wanneer je toegang krijgt via een IP-adres als onderdeel van de URL." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Serverbeheer" @@ -1206,7 +1207,7 @@ msgstr "Toegang" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit werkt alleen wanneer deze wordt geopend met de volgende URL's." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1214,11 +1215,11 @@ msgstr "" "Hier kunnen een aantal algemene configuratieopties worden ingesteld, zoals " "hostname, domeinnaam, startpagina etc." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Algemene Instellingen" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1227,7 +1228,7 @@ msgstr "Algemene Instellingen" msgid "Configure" msgstr "Configureer" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1359,7 +1360,7 @@ msgstr "Geavanceerde toepassingen en functies worden weergeven" msgid "Hiding advanced apps and features" msgstr "Geavanceerde toepassingen en functies verbergen" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1372,7 +1373,7 @@ msgstr "" "gesprek tot stand te brengen tussen partijen die anders geen verbinding met " "elkaar kunnen maken." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse of ejabberdmoeten worden geconfigureerd met de hier verstrekte details." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "VoIP helper" @@ -1403,7 +1404,7 @@ msgstr "Gebruik de volgende URL's om de communicatieserver in te stellen:" msgid "Use the following shared authentication secret:" msgstr "Gebruik het volgende gedeelde authenticatie geheim:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1411,11 +1412,11 @@ msgstr "" "Netwerk Tijd Server is een programma dat de systeemtijd synchroniseert met " "servers op internet." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Datum en Tijd" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Tijd gesynchroniseerd met NTP-server" @@ -1444,11 +1445,11 @@ msgstr "Fout bij tijdzone instellen: {exception}" msgid "Time zone set" msgstr "Tijdzone ingesteld" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge is een BitTorrent Cliënt met web-bediening." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1456,17 +1457,17 @@ msgstr "" "Het standaardwachtwoord is 'deluge', maar dit moet zo snel mogelijk na " "activering gewijzigd worden." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Download bestanden met BitTorrent toepassingen" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "BitTorrent-webclient" @@ -1478,7 +1479,7 @@ msgstr "Opslagmap" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent-client geschreven in Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1486,53 +1487,53 @@ msgstr "" "De systeemdiagnose zal een aantal tests op dit systeem uitvoeren om te " "bevestigen dat de toepassingen en diensten zoals verwacht functioneren." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Diagnose" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "geslaagd" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "mislukt" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "fout" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "waarschuwing" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GiB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" "Door toepassingen uit te schakelen kan het geheugengebruik worden verminderd." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Extra toepassingen installeren wordt afgeraden." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1541,7 +1542,7 @@ msgstr "" "Systeem heeft weinig geheugen beschikbaar: {percent_used}% gebruikt, " "{memory_available} {memory_available_unit} vrij. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Geheugengebrek" @@ -1594,7 +1595,7 @@ msgstr "Resultaat" msgid "Diagnostic Test" msgstr "Diagnostische test" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1602,12 +1603,12 @@ msgstr "" "diaspora* is een decentraal sociaal netwerk waar data in eigen beheer kan " "worden opgeslagen." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Gedecentraliseerd Sociaal Netwerk" @@ -1668,7 +1669,7 @@ msgstr "Gebruikersregistratie ingeschakeld" msgid "User registrations disabled" msgstr "Gebruikersregistratie uitgeschakeld" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1680,7 +1681,7 @@ msgstr "" "internet. Daardoor is het gebruik van de diensten van {box_name} vaak " "onmogelijk van buiten het lokale netwerk." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1698,11 +1699,11 @@ msgstr "" "naamswijziging doorvoeren, en als iemand op het internet om deze DNS naam " "vraagt wordt dit beantwoord met het juiste IP adres." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Dynamic DNS Cliënt" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Dynamische domeinnaam" @@ -1759,12 +1760,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Laat dit veld leeg om het huidige wachtwoord te behouden." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Optionele waarde. Als {box_name} niet direct is verbonden met het internet " "(maar verbonden met een NAT router), wordt deze URL gebruikt om het echte " @@ -1845,12 +1851,18 @@ msgid "Please provide a password" msgstr "Voer een wachtwoord in" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Wie op zoek is naar een gratis dynamic DNS account, kan misschien een gratis " "GnuDIP service vinden bij web clientgebruiker van {box_name} daartoe " "toegang krijgen." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn toepassing of configureer " "een externe server." -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Chatserver" @@ -2085,32 +2097,26 @@ msgstr "" "eruit als username@%(domainname)s. Het domein kan worden ingesteld op " "de Instellingen pagina." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "E-mailserver" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Maakt gebruik van Postfix, Dovecot & Rspamd" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Domeinnaam instellen mislukt: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "Postfix-Dovecot SASL-integratie" @@ -2143,52 +2149,64 @@ msgstr "Postfix gebruikt een TLS-certificaat" msgid "Has a TLS certificate" msgstr "Heeft een TLS-certificaat" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid domain" msgstr "Voer een geldige gebruikersnaam in." -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid destination" msgstr "Voer een geldige gebruikersnaam in." -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "domein" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Primaire Verbinding" + +#: 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 "Nieuwe alias (zonder @domein)" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "Bevat ongeldige tekens" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "Moet beginnen en eindigen met a-z of 0-9" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "Kan geen getal zijn" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "My Aliases" msgid "Aliases" msgstr "Mijn aliassen" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Ingeschakeld" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2197,7 +2215,7 @@ msgid "Disabled" msgstr "Uitgeschakeld" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2215,7 +2233,7 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "My Aliases" msgid "Manage Aliases" @@ -2246,47 +2264,30 @@ msgstr "Nieuwe e-mailalias maken" msgid "Add" msgstr "Toevoegen" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domeinen" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "Beheren van Snapshots" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "Servicewaarschuwing" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "Herstellen" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "Interne fout in {0}" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "Controleer syslog voor meer informatie" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Er is een fout opgetreden tijdens de configuratie." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Instelling onveranderd" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2297,7 +2298,7 @@ msgstr "" "datastromen van {box_name} stuurt. Een geactiveerde en goed ingestelde " "firewall vermindert het risico op beveiligingsrisico's vanuit internet." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Firewall" @@ -2418,7 +2419,7 @@ msgstr "Setup starten" msgid "Setup Complete" msgstr "Instelling voltooid" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2437,7 +2438,7 @@ msgstr "" "line als grafische versies beschikbaar). En je kan je broncode delen met " "mensen over de hele wereld." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2445,15 +2446,15 @@ msgstr "" "Bezoek Git tutorial " "voor meer informatie over het gebruik van Git." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Lees- en schrijftoegang tot Git-repositories" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Eenvoudige Git Hosting" @@ -2569,31 +2570,31 @@ msgstr "Repository gewijzigd." msgid "Edit repository" msgstr "Wijzig repository" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Documentatie" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Handleiding" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Help" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Feedback indienen" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2890,7 +2891,7 @@ msgstr "Over {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Handleiding" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2902,7 +2903,7 @@ msgstr "" "voor anonimiteit door gecodeerd verkeer te sturen via een netwerk dat door " "vrijwilligers over de hele wereld wordt verspreid." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2910,7 +2911,7 @@ msgstr "" "Vind meer informatie over I2P op hun project homepage." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2918,19 +2919,19 @@ msgstr "" "Bij het eerste bezoek aan de meegeleverde webinterface wordt het " "configuratieproces gestart." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "I2P-toepassing beheren" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Anonimiteitsnetwerk" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P proxy" @@ -2976,7 +2977,7 @@ msgstr "" "peer netwerk. Download bestanden door torrents toe te voegen of maak een " "nieuwe torrent om een bestand te delen." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2986,7 +2987,7 @@ msgstr "" "verschillende lichtgewicht markup-talen, met inbegrip van Markdown, en " "algemene blogging functionaliteit zoals reacties en RSS-feeds." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3000,15 +3001,15 @@ msgstr "" "Configuratie kan je deze instellingen wijzigen en nieuwe gebruikers " "registreren." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki en Blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Bekijken en bewerken van wiki toepassingen" @@ -3087,13 +3088,13 @@ msgstr "{title} verwijderd." msgid "Could not delete {title}: {error}" msgstr "Verwijderen van {title} mislukt: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted is een server voor Gobby, een tekst-editor voor gezamenlijk " "gebruik." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3104,11 +3105,11 @@ msgstr "" "a> desktop-client en installeer deze. Start Gobby en selecteer vervolgens " "\"Verbinden met Server\" en voer de {box_name} domeinnaam in." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Gobby Server" @@ -3129,7 +3130,7 @@ msgstr "" "Start Gobby en selecteer vervolgens \"Verbinden met Server\" en voer de " "{box_name} domeinnaam in." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3137,11 +3138,11 @@ msgstr "" "JSXC is een webclient voor XMPP. Het wordt meestal gebruikt met een XMPP-" "server die lokaal wordt uitgevoerd." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Chat Cliënt" @@ -3150,7 +3151,7 @@ msgstr "Chat Cliënt" msgid "JavaScript license information" msgstr "JavaScript licentie-informatie" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3166,7 +3167,7 @@ msgstr "" "van een domein te zijn tegenover Let's Encrypt, een certificaatwaarmerker " "(CA)." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3179,15 +3180,15 @@ msgstr "" "\"https://letsencrypt.org/repository/\">Let's Encrypt Subscriber Agreement vóór het gebruik van deze dienst." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Certificaten" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "Kan niet testen: Er zijn geen domeinen ingesteld." @@ -3292,7 +3293,7 @@ msgstr "Certificaat met succes verwijderd voor domein {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Verwijderen certificaat voor domein {domain} mislukt: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3309,7 +3310,7 @@ msgstr "" "Matrix server kunnen gesprekken aangaan met gebruikers op alle andere Matrix " "servers door federatie (gedecentraliseerd netwerk)." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3319,7 +3320,7 @@ msgstr "" "videogesprekken. Installeer de Coturn " "toepassing of configureer een externe server." -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3417,7 +3418,7 @@ msgstr "" "vereist. Ga naar Let's Encrypt om er een " "te verkrijgen." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3430,7 +3431,7 @@ msgstr "" "gebruiken om een wiki website aan te bieden, persoonlijke aantekeningen bij " "te houden of met vrienden aan een gezamenlijke website te werken." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3444,7 +3445,7 @@ msgstr "" "vanuit MediaWiki op de Speciaal:GebruikerRegistreren pagina." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3452,12 +3453,12 @@ msgstr "" "Iedereen met een link naar deze wiki kan hem lezen. Alleen ingelogde " "gebruikers kunnen wijzigingen aanbrengen in de inhoud." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3550,7 +3551,7 @@ msgstr "Standaard uiterlijk veranderd" msgid "Server URL updated" msgstr "Server URL aangepast" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3563,11 +3564,11 @@ msgstr "" "standaardpoort (30000). Voor de verbinding met de server is een Minetest client nodig." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Block Sandbox" @@ -3640,7 +3641,7 @@ msgstr "Instelling PVP bijgewerkt" msgid "Damage configuration updated" msgstr "Instelling schade bijgewerkt" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3658,15 +3659,15 @@ msgstr "" "mediaspelers, smartphones, televisies en spelsystemen (zoals PS3 en Xbox " "360) of programma's zoals totem en Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Mediastreaming server" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Simple Media Server" @@ -3711,7 +3712,7 @@ msgstr "De opgegeven map bestaat niet." msgid "Updated media directory" msgstr "Mediamap bijgewerkt" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3722,7 +3723,7 @@ msgstr "" "meerdere peer-to-peer-netwerken, waaronder eDonkey, Kademlia, Overnet, " "BitTorrent en DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3733,7 +3734,7 @@ msgstr "" "via een van de afzonderlijke mobiele of desktop front-ends of een telnet " "interface. Zie handleiding." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3741,16 +3742,16 @@ msgstr "" "Op {box_name} kunnen de gedownloade bestanden worden gevonden in /var/lib/" "mldonkey/ map." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Bestanden downloaden met eDonkey toepassingen" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Peer-to-peer bestandsdeling" @@ -3762,7 +3763,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3784,7 +3785,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\"> Monkeysphere SSH documentatie " "voor meer details." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3803,7 +3804,7 @@ msgstr "" "href=\"https://web.monkeysphere.info/download/\">Monkeysphere website " "moeten installeren." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3822,6 +3823,10 @@ msgstr "Annuleer" msgid "Service" msgstr "Dienst" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domeinen" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3928,7 +3933,7 @@ msgstr "Sleutel gepubliceerd op keyserver." msgid "Error occurred while publishing key." msgstr "Er is een fout opgetreden tijdens het publiceren van de sleutel." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3936,7 +3941,7 @@ msgstr "" "Mumble is een Open Source, snelle, versleutelde, hoge kwaliteit " "groepsgespreksserver." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3947,11 +3952,11 @@ msgstr "" "programma's waarmee de Mumble dienst gebruikt kan worden. Er zijn " "programma's voor zowel desktop en Android machines." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Voice Chat" @@ -3979,7 +3984,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "Wachtwoord van de SuperGebruiker succesvol gewijzigd." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3993,7 +3998,7 @@ msgstr "" "services zijn ingeschakeld of uitgeschakeld voor binnenkomende verbindingen " "via de opgegeven naam." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Domeinnamen" @@ -4009,7 +4014,7 @@ msgstr "Alle webtoepassingen" msgid "Services" msgstr "Diensten" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4017,7 +4022,7 @@ msgstr "" "Stel netwerkapparaten in. Maak verbinding met internet via Ethernet, Wi-Fi " "of PPPoE. Deel die verbinding met andere apparaten op het netwerk." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4025,11 +4030,11 @@ msgstr "" "Apparaten die via andere methoden worden beheerd, zijn hier mogelijk niet " "beschikbaar voor configuratie." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Netwerken" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gebruikt DNSSEC op IPv{kind}" @@ -4588,7 +4593,7 @@ msgstr "DNS server" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Standaard" @@ -4601,7 +4606,7 @@ msgid "This connection is not active." msgstr "Deze verbinding is niet actief." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Security" @@ -5091,7 +5096,7 @@ msgstr "generiek" msgid "TUN or TAP interface" msgstr "TUN of TAP interface" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5180,7 +5185,7 @@ msgstr "Verbinding {name} verwijderd." msgid "Failed to delete connection: Connection not found." msgstr "Kan verbinding niet verwijderen: Verbinding niet gevonden." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5198,20 +5203,20 @@ msgstr "" "mogelijk om de rest van het internetgebruik via {box_name} te leiden, voor " "meer veiligheid en anonimiteit." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "Verbinding maken met VPN-dienst" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtual Private Network" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5292,7 +5297,7 @@ msgstr "" msgid "Download my profile" msgstr "Download mijn profiel" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5305,19 +5310,19 @@ msgstr "" "vereist als de diensten op {box_name} niet te bereiken zijn vanaf de rest " "van internet. Dit is het geval in de volgende situaties:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} is verbonden achter een beperkende firewall." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} is verbonden met een (wireless) router die niet onder eigen " "controle staat." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5325,7 +5330,7 @@ msgstr "" "De internetprovider geeft geen extern IP adres maar maakt gebruik van een " "NAT verbinding." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5333,11 +5338,11 @@ msgstr "" "De internetprovider geeft geen statisch IP adres, en het IP adres verandert " "telkens wanneer je verbinding maakt met internet." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "De internetprovider beperkt inkomende verbindingen." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5351,15 +5356,15 @@ msgstr "" "\">pagekite.net. In de toekomst is het misschien mogelijk om de " "{box_name} van een van je vrienden te gebruiken." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Openbare zichtbaarheid" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "PageKite domein" @@ -5505,12 +5510,12 @@ msgstr "" "Zie de SSH cliënt setup instructies (Engelstalig)" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Prestaties" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5521,7 +5526,7 @@ msgstr "" "gebruikspatronen en of de hardware wordt overbelast door gebruikers en " "services." -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5529,15 +5534,15 @@ msgstr "" "Prestatiestatistieken worden verzameld door Performance Co-Pilot en kunnen " "worden bekeken via de Cockpit-app." -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Systeembewaking" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Herstarten of uitschakelen van het systeem." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Power" @@ -5600,7 +5605,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Nu Uitschakelen" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5610,7 +5615,7 @@ msgstr "" "om privacy te verhogen, webpagina data en HTTP headers te wijzigen, toegang " "te controleren, en advertenties en andere rommel te weren. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5625,20 +5630,20 @@ msgstr "" "href=\"http://config.privoxy.org\">http://config.privoxy.org/ of http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Gebruik {url} via proxy {proxy} op tcp{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5656,7 +5661,7 @@ msgstr "" "mobiele telefoon kunnen worden gebruikt om te verbinden of de verbinding te " "verbreken." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktop en mobiele apparaten." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "IRC Cliënt" @@ -5680,7 +5685,7 @@ msgstr "IRC Cliënt" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5695,7 +5700,7 @@ msgstr "" "\">ondersteunde clienttoepassing nodig. Radicale kan worden benaderd " "door elke {box_name} gebruiker." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5706,12 +5711,12 @@ msgstr "" "gebeurtenissen of contactpersonen, die moeten worden gedaan met behulp van " "een aparte client." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Agenda en Adresboek" @@ -5793,7 +5798,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuratie van de toegangsrechten is bijgewerkt" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5805,7 +5810,7 @@ msgstr "" "een email toepassing verwacht kan worden, inclusief MIME ondersteuning, een " "adresboek, het beheren van mappen, zoeken in berichten en spellingscontrole." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5819,7 +5824,7 @@ msgstr "" "example.com. Voor IMAP over SSL (aanbevolen): vul het serverveld in, " "bijvoorbeeld imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5834,11 +5839,11 @@ msgstr "" "(https://" "www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "Email Cliënt" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5846,7 +5851,7 @@ msgstr "" "Met Samba kunnen bestanden en mappen worden gedeeld tussen FreedomBox en " "andere computers in het lokale netwerk." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5860,11 +5865,11 @@ msgstr "" "smb://{hostname}.local (op Linux en Mac). Er zijn drie soorten van delen " "waaruit gekozen kan worden: " -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "Open deelmap - toegankelijk voor iedereen in het lokale netwerk." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5872,7 +5877,7 @@ msgstr "" "Groeps deelmap - alleen toegankelijk voor FreedomBox-gebruikers die deel " "uitmaken van de freedombox-share-groep." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5880,15 +5885,15 @@ msgstr "" "Prive-deelmap - - iedere gebruiker in de freedombox-share-groep kan zijn " "eigen privéruimte hebben." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Toegang tot de privéshares" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Netwerk bestandenopslag" @@ -5977,11 +5982,11 @@ msgstr "Actie" msgid "FreedomBox OS disk" msgstr "FreedomBox OS-schijf" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Gedeelde map openen" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Gedeelde map" @@ -6007,7 +6012,7 @@ msgstr "Gedeelde map uitgeschakeld." msgid "Error disabling share: {error_message}" msgstr "Fout bij het uitschakelen van de gedeelde map: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6015,7 +6020,7 @@ msgstr "" "Searx is een privacy-respecterende internet metasearch engine. Het " "aggregeert en toont resultaten van meerdere zoekmachines." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6023,15 +6028,15 @@ msgstr "" "Searx kan worden gebruikt om tracking en profilering door zoekmachines te " "voorkomen. Het slaat standaard geen cookies op." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Zoeken op internet" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Zoeken op het Internet" @@ -6212,11 +6217,11 @@ msgstr "Fout bij beperkte toegang instellen: {exception}" msgid "Updated security configuration" msgstr "Bijgewerkte Beveiligingsconfiguratie" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 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:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6224,15 +6229,15 @@ msgstr "" "Houd er rekening mee dat Shaarli maar een gebruiker ondersteunt, die moet " "worden ingesteld bij het eerste gebruik." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Bladwijzers" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6242,7 +6247,7 @@ msgstr "" "beschermen. Het kan gebruikt worden om censuur en het filteren van Internet " "te omzeilen." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6255,7 +6260,7 @@ msgstr "" "Apparaten in het lokale netwerk kunnen met deze proxy verbinden, en hun data " "zal versleuteld via de Shadowsocks server verstuurd worden." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6264,11 +6269,11 @@ msgstr "" "proxy in op het apparaat, webbrowser of toepassing naar http://" "adres_van_de_freedombox:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Socks5 Proxy" @@ -6299,7 +6304,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "Encryptie methode. Moet overeenkomen met de instelling van de server." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6405,7 +6410,7 @@ msgstr "Gedeelde map bewerken" msgid "Share deleted." msgstr "Gedeelde map verwijderd." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6415,7 +6420,7 @@ msgstr "" "kunnen worden gebruikt om in geval van ongewenste wijzigingen aan het " "systeem terug te keren naar een voorheen goed werkende staat." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6426,7 +6431,7 @@ msgstr "" "voor en na een software-installatie. Oudere Snapshots worden automatisch " "opgeschoond volgens de onderstaande instellingen." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups aangezien ze op dezelfde partitie als hun bron worden " "bewaard. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Opslag Snapshots" @@ -6642,7 +6647,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "Terugdraaien naar Snapshot" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6654,7 +6659,7 @@ msgstr "" "andere locatie die daarvoor geautoriseerd is, kan beheerdertaken uitvoeren, " "bestanden kopiëren en andere taken verrichten door zulk een verbinding." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) Server" @@ -6700,7 +6705,7 @@ msgstr "SSH-authenticatie met wachtwoord uitgeschakeld." msgid "SSH authentication with password enabled." msgstr "SSH-authenticatie met wachtwoord ingeschakeld." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Eenmalige aanmelding" @@ -6708,7 +6713,7 @@ msgstr "Eenmalige aanmelding" msgid "Login" msgstr "Aanmelding" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6720,109 +6725,109 @@ msgstr "" "bekijken, verwijderbare media koppelen en ontkoppelen, de rootpartitie " "uitbreiden enz." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Storage" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "De bewerking is mislukt." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "De bewerking is afgebroken." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Het apparaat is al aan het ontkoppelen." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "De bewerking wordt niet ondersteund vanwege ontbrekende driver / programma-" "ondersteuning." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "Er is een time-out opgetreden voor deze bewerking." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "De operatie zou een schijf wakker maken die in \"diepe slaap\" stand is." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Poging om een apparaat te ontkoppelen dat in gebruik is." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "De bewerking is al geannuleerd." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "Niet gemachtigd om deze handeling uit te voeren." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Het apparaat is al gekoppeld." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Het apparaat is niet ge-mount." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "Het is niet toegestaan de gevraagde optie te gebruiken." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Het apparaat is door een andere gebruiker aangekoppeld." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Weinig ruimte op de systeempartitie: {percent_used} % gebruikt, {free_space} " "vrij." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Weinig schijfruimte" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "Schijffout dreigt" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6831,39 +6836,39 @@ msgstr "" "Schijf {id} meldt dat het waarschijnlijk in de nabije toekomst defect zal " "zijn. Kopieer alle gegevens terwijl het nog kan en vervang de schijf." -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Ongeldige mapnaam." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Map bestaat niet." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Pad is geen map." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "Map is niet leesbaar door de gebruiker." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "Map is niet schrijfbaar door de gebruiker." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Opslagmap" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Submap (optioneel)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Delen" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Andere map (hieronder aangeven)" @@ -6946,7 +6951,7 @@ msgstr "Het apparaat kan veilig worden losgekoppeld." msgid "Error ejecting device: {error_message}" msgstr "Fout bij verwijderen van apparaat: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6959,7 +6964,7 @@ msgstr "" "zullen automatisch dezelfde veranderingen ondergaan op de andere apparaten " "waarop Syncthing draait." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6977,20 +6982,20 @@ msgstr "" "{box_name} is alleen beschikbaar voor gebruikers die tot de \"admin\"- of de " "\"syncthing-access\"-groep behoren." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Beheer Syncthing toepassing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Bestandssynchronisatie" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7003,7 +7008,7 @@ msgstr "" "knooppunten uitvallen, kunnen de bestanden uit de resterende knooppunten " "worden opgehaald." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7014,11 +7019,11 @@ msgstr "" "introduceerder. Er kunnen extra introduceerders worden toegevoegd, waardoor " "dit knooppunt aan de andere knooppunten bekend wordt gemaakt." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Distributed File Storage" @@ -7057,7 +7062,7 @@ msgstr "Verbonden introduceerders" msgid "Remove" msgstr "Verwijderen" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7071,40 +7076,40 @@ msgstr "" "de Tor " "Browser aan." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Tor-Onion Dienst" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Tor Socks Proxy" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Tor relay poort beschikbaar" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 transport geregistreerd" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 transport geregistreerd" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Gebruik URL {url} op tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bevestig Tor gebruik met {url} via tcp{kind}" @@ -7259,11 +7264,15 @@ msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" "Een Tor SOCKS poort is beschikbaar op %(box_name)s, via TCP poort 9050." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Instelling onveranderd" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission is een BitTorrent-client met een webinterface." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7271,16 +7280,16 @@ msgstr "" "BitTorrent is een peer-to-peer bestandsdeling protocol. Houd in gedachten " "dat BitTorrent gebruik niet anoniem is." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "Wijzig de standaardpoort van de Transmission daemon niet." -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7290,7 +7299,7 @@ msgstr "" "om het lezen van nieuws vanaf iedere locatie mogelijk te maken, terwijl het " "zoveel mogelijk als een echte desktoptoepassing wil werken." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any gebruiker met een {box_name} login." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7307,15 +7316,15 @@ msgstr "" "Gebruik de URL /tt-rss-app in om te verbinden " "met een mobiele- of desktoptoepassing voor Tiny Tiny RSS." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Lezen en abonneren op nieuwsfeeds" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "News Feed Reader" @@ -7323,13 +7332,13 @@ msgstr "News Feed Reader" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Controleer de nieuwste software- en beveiligingsupdates en pas deze toe." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7342,7 +7351,7 @@ msgstr "" "het systeem opnieuw moet worden opgestart, gebeurt dit automatisch om 02:00 " "uur, waardoor alle toepassingen even niet beschikbaar zijn." -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7569,7 +7578,7 @@ msgstr "Starten van de upgrade is mislukt." msgid "Frequent feature updates activated." msgstr "Tussentijdse Software Updates zijn ingeschakeld." -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7580,7 +7589,7 @@ msgstr "" "apps moet een gebruikersaccount deel uitmaken van een groep om de gebruiker " "toegang te geven tot de toepassing." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7592,15 +7601,15 @@ msgstr "" "die lid zijn van de admin -groep mogen toepassings- of " "systeeminstellingen wijzigen." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Gebruikers en Groepen" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Toegang tot alle diensten en systeeminstellingen" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zoek LDAP item \"{search_item}\"" @@ -7846,11 +7855,11 @@ msgstr "Wijzig wachtwoord" msgid "Password changed successfully." msgstr "Wachtwoord succesvol gewijzigd." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard is een snelle, moderne en veilige VPN-tunnel." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7860,7 +7869,7 @@ msgstr "" "WireGuard ondersteunt, om al het uitgaande verkeer van {box_name} via de VPN " "te sturen." -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8183,7 +8192,7 @@ msgstr "Verwijder verbinding met server" msgid "Server deleted." msgstr "Server verwijderd." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8197,7 +8206,7 @@ msgstr "" "met thema's. De website en het beheer ervan is bruikbaar met een mobiel " "apparaat." -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8206,26 +8215,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "Website en Blog" @@ -8239,7 +8248,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8261,7 +8270,7 @@ msgstr "" "van zoekwoorden, kaart- en kalenderweergaven. Individuele foto's kunnen met " "anderen worden gedeeld door een directe link te sturen." -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8272,11 +8281,11 @@ msgstr "" "Zoph. Voor extra gebruikers moeten zowel in {box_name} als in Zoph accounts " "worden aangemaakt met dezelfde gebruikersnaam." -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "Foto Organisator" @@ -8315,23 +8324,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Generiek" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Fout tijdens installatie" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "installeren" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "downloaden" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "media wijzigen" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "configuratiebestand: {file}" @@ -8703,6 +8712,16 @@ msgstr "%(percentage)s%% voltooid" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Domeinnaam instellen mislukt: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Er is een fout opgetreden tijdens de configuratie." + #~ msgid "The alias was taken" #~ msgstr "Deze alias is al in gebruik" diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index cf509f242..d4ecc63c9 100644 --- a/plinth/locale/pl/LC_MESSAGES/django.po +++ b/plinth/locale/pl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-03-03 16:50+0000\n" "Last-Translator: Karol Werner \n" "Language-Team: Polish calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1136,7 +1137,7 @@ msgstr "Usunięto {name}." msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1149,7 +1150,7 @@ msgstr "" "wiele ustawień dla zaawansowanych funkcji serwera, które zwykle nie są " "wymagane. Dostępny jest również terminal konsoli." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1157,7 +1158,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1166,18 +1167,18 @@ msgstr "" "Dostęp do niego mają użytkownicy {box_name} z do " "grupy administratorów." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Administracja serwera" @@ -1189,7 +1190,7 @@ msgstr "Dostęp" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1197,11 +1198,11 @@ msgstr "" "Tutaj możesz ustawić kilka ogólnych opcji konfiguracji, takich jak nazwa " "hosta, nazwa domeny, strona główna serwera www itp." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Ustawienia główne" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1210,7 +1211,7 @@ msgstr "Ustawienia główne" msgid "Configure" msgstr "Konfiguruj" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1338,7 +1339,7 @@ msgstr "Wyświetlanie zaawansowanych aplikacji i cech" msgid "Hiding advanced apps and features" msgstr "Ukrywanie zaawansowanych aplikacji i cech" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1346,7 +1347,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Jeśli szukasz darmowego konta Dynamic DNS, to pod adresem gnudip.datasystems24.net " @@ -1883,7 +1895,7 @@ msgstr "" msgid "Last update" msgstr "Ostatnie uaktualnienie" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "O FreedomBox" @@ -1910,7 +1922,7 @@ msgstr "Konfiguruj Dynamic DNS" msgid "Dynamic DNS Status" msgstr "Status Dynamic DNS" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1918,7 +1930,7 @@ msgstr "" "XMPP jest otwartym i ustandaryzowanym protokołem komunikacyjnym. Tu możesz " "uruchomić i skonfigurować własny serwer XMPP zwany ejabberd." -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web clientklienta XMPP. Gdy włączony, ejabberd jest " "dostępny dla każdego użytkownika {box_name}." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Serwer czatu" @@ -2046,34 +2058,28 @@ msgstr "" "i>. Możesz ustawić swoją domenę na stronie Konfiguruj." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Serwer czatu" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Błąd ustawiania nazwy domeny {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2108,54 +2114,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Brak certyfikatu" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "Niewłaściwa nazwa użytkownika" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "Niewłaściwa nazwa użytkownika" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domena" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Domain" +msgid "Primary domain" +msgstr "Domena" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Create Repository" msgid "Aliases" msgstr "Utwórz repozytorium" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Włączony" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2164,7 +2182,7 @@ msgid "Disabled" msgstr "Wyłączony" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2182,7 +2200,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Create Repository" msgid "Manage Aliases" @@ -2215,49 +2233,32 @@ msgstr "Utwórz nową kopię zapasową" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Delete %(name)s" msgid "Manage Spam" msgstr "Usuń %(name)s" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Typ usługi" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Podczas konfiguracji wystąpił błąd." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Ustawienie bez zmian" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2268,7 +2269,7 @@ msgstr "" "ruch sieciowy na twoim {box_name}. Włączony i poprawnie skonfigurowany " "firewall redukuje ryzyko zagrożeń z Internetu." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Firewall" @@ -2384,7 +2385,7 @@ msgstr "Rozpocznij" msgid "Setup Complete" msgstr "Instalacja zakończona" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2395,21 +2396,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2554,11 +2555,11 @@ msgstr "Usunięto repozytorium." msgid "Edit repository" msgstr "Utwórz repozytorium" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Dokumentacja" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2566,21 +2567,21 @@ msgctxt "User guide" msgid "Manual" msgstr "Instrukcja" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2826,7 +2827,7 @@ msgstr "O {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Podręcznik" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2834,35 +2835,35 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktywuj aplikację" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 #, fuzzy #| msgid "Go to Networks" msgid "Anonymity Network" msgstr "Przejdź do sieci" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2899,14 +2900,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2915,15 +2916,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki i blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -3004,11 +3005,11 @@ msgstr "{title} zostało usunięte." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3016,11 +3017,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -3039,7 +3040,7 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3047,11 +3048,11 @@ msgstr "" "JSXC jest klientem przeglądarkowym XMPP. Zazwyczaj używany jest z serwerem " "XMPP uruchomionym lokalnie." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Klient czatu" @@ -3060,7 +3061,7 @@ msgstr "Klient czatu" msgid "JavaScript license information" msgstr "Informacje o licencji JavaScript" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3070,7 +3071,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3078,15 +3079,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Certyfikaty" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3189,7 +3190,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3199,14 +3200,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3279,7 +3280,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3287,7 +3288,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3296,18 +3297,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3411,7 +3412,7 @@ msgstr "Ustawienie bez zmian" msgid "Server URL updated" msgstr "Archiwum zostało usunięte." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3420,11 +3421,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" @@ -3492,7 +3493,7 @@ msgstr "Zaktualizowano ustawienia PVP" msgid "Damage configuration updated" msgstr "Zaktualizowano ustawienia zniszczeń" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3503,15 +3504,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3551,36 +3552,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3592,7 +3593,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3604,7 +3605,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3615,7 +3616,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3634,6 +3635,10 @@ msgstr "Anuluj" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3737,24 +3742,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3782,7 +3787,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3791,7 +3796,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3809,23 +3814,23 @@ msgstr "" msgid "Services" msgstr "Urządzenie" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4295,7 +4300,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4308,7 +4313,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4769,7 +4774,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -4860,7 +4865,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4871,22 +4876,22 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection refused" msgid "Connect to VPN services" msgstr "Odmowa dostępu" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4950,7 +4955,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4959,33 +4964,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4994,15 +4999,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -5136,33 +5141,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Uruchom ponownie lub wyłącz system." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Zasilanie" @@ -5222,14 +5227,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5239,20 +5244,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5263,7 +5268,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -5283,7 +5288,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5293,19 +5298,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5374,7 +5379,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Zaktualizowano ustawienia praw dostępu" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5382,7 +5387,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5391,7 +5396,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5401,19 +5406,19 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 #, fuzzy #| msgid "Dynamic DNS Client" msgid "Email Client" msgstr "Klient Dynamic DNS" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5422,31 +5427,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5530,11 +5535,11 @@ msgstr "Akcje" msgid "FreedomBox OS disk" msgstr "FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5564,27 +5569,27 @@ msgstr "Aplikacja wyłączona" msgid "Error disabling share: {error_message}" msgstr "Błąd wyłączenia udziału: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5747,32 +5752,32 @@ msgstr "Błąd ustawienia ograniczonego dostępu: {exception}" msgid "Updated security configuration" msgstr "Zaktualizowano ustawienia bezpieczeństwa" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5781,17 +5786,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5822,7 +5827,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5922,14 +5927,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5937,14 +5942,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -6152,7 +6157,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6160,7 +6165,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6207,7 +6212,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "Nie powiodła się autoryzacja na zdalnym serwerze." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6215,7 +6220,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6223,147 +6228,147 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bajtów" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 #, fuzzy #| msgid "The requested domain is already registered." msgid "The device is already mounted." msgstr "Wnioskowana domena jest już zarejstrowana." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Niewłaściwa nazwa hosta" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6446,7 +6451,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6454,7 +6459,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6466,20 +6471,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6487,7 +6492,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6495,11 +6500,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6534,7 +6539,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6543,40 +6548,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6706,33 +6711,37 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Ustawienie bez zmian" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission to klient BitTorrent z interfejsem webowym." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any użytkownik za pomocą {box_name} loginu " "może mieć dostęp do Tiny Tiny RSS, gdy ten jest włączony." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6763,12 +6772,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6776,7 +6785,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6991,14 +7000,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7006,15 +7015,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7253,18 +7262,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7606,7 +7615,7 @@ msgstr "Bezpośrednie połłączenie z internetem." msgid "Server deleted." msgstr "Archiwum zostało usunięte." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7615,7 +7624,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7624,26 +7633,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -7659,7 +7668,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7672,7 +7681,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7680,11 +7689,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7720,23 +7729,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "plik konfiguracyjny: {file}" @@ -8122,6 +8131,16 @@ msgstr "" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Błąd ustawiania nazwy domeny {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Podczas konfiguracji wystąpił błąd." + #, fuzzy #~| msgid "Disabled" #~ msgid "Disable selected" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index 38b8cd0b7..c89e22df8 100644 --- a/plinth/locale/pt/LC_MESSAGES/django.po +++ b/plinth/locale/pt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-05-08 22:33+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1133,7 +1134,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1141,25 +1142,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Administração do Servidor" @@ -1171,17 +1172,17 @@ msgstr "Aceder" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Configuração Geral" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1190,7 +1191,7 @@ msgstr "Configuração Geral" msgid "Configure" msgstr "Configurar" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1315,7 +1316,7 @@ msgstr "A mostrar as aplicações e funcionalidades avançadas" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1323,7 +1324,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1798,7 +1798,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1825,13 +1825,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1945,34 +1945,28 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Email Server" msgstr "Servidor Web" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Erro ao definir o nome do domínio: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2005,54 +1999,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid domain name" msgid "Enter a valid domain" msgstr "Nome de domínio inválido" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid domain name" msgid "Enter a valid destination" msgstr "Nome de domínio inválido" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain Name" msgid "domain" msgstr "Nome de Domínio" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Domain Name" +msgid "Primary domain" +msgstr "Nome de Domínio" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Create new repository" msgid "Aliases" msgstr "Criar novo repositório" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2061,7 +2067,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2079,7 +2085,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Create new repository" msgid "Manage Aliases" @@ -2112,51 +2118,32 @@ msgstr "Criar novo backup" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -#, fuzzy -#| msgid "Domain Name" -msgid "Domains" -msgstr "Nome de Domínio" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Create new repository" msgid "Manage Spam" msgstr "Criar novo repositório" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Discovery" msgid "Service Alert" msgstr "Descoberta do Serviço" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "General Configuration" -msgid "Error updating configuration" -msgstr "Configuração Geral" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Definição inalterada" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2164,7 +2151,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2273,7 +2260,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2284,21 +2271,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2435,11 +2422,11 @@ msgstr "Repositório não encontrado" msgid "Edit repository" msgstr "Criar novo repositório" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2447,21 +2434,21 @@ msgctxt "User guide" msgid "Manual" msgstr "Manual" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2692,7 +2679,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2700,33 +2687,33 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Ativar aplicação" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2766,14 +2753,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2782,17 +2769,17 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 #, fuzzy #| msgid "Enable network time" msgid "ikiwiki" msgstr "Ativar tempo da rede" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -2872,11 +2859,11 @@ msgstr "Arquivo apagado." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2884,11 +2871,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2907,17 +2894,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2926,7 +2913,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2936,7 +2923,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2944,15 +2931,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3057,7 +3044,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3067,14 +3054,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3148,7 +3135,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3156,7 +3143,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3165,18 +3152,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3276,7 +3263,7 @@ msgstr "Definição inalterada" msgid "Server URL updated" msgstr "Arquivo apagado." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3285,11 +3272,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3365,7 +3352,7 @@ msgstr "Configuração atualizada" msgid "Damage configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3376,15 +3363,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3424,36 +3411,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3465,7 +3452,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3477,7 +3464,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3488,7 +3475,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3507,6 +3494,12 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +#, fuzzy +#| msgid "Domain Name" +msgid "Domains" +msgstr "Nome de Domínio" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3614,24 +3607,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3659,7 +3652,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3668,7 +3661,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3686,23 +3679,23 @@ msgstr "" msgid "Services" msgstr "Descoberta do Serviço" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4174,7 +4167,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4187,7 +4180,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4654,7 +4647,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "Servidor do Tempo da Rede" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4745,7 +4738,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4756,22 +4749,22 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection refused" msgid "Connect to VPN services" msgstr "Conexão recusada" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4835,7 +4828,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4844,33 +4837,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4879,15 +4872,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -5021,33 +5014,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -5100,14 +5093,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5117,20 +5110,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5141,7 +5134,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -5161,7 +5154,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5171,19 +5164,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5254,7 +5247,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5262,7 +5255,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5271,7 +5264,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5281,17 +5274,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5300,31 +5293,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -5412,11 +5405,11 @@ msgstr "Aplicações" msgid "FreedomBox OS disk" msgstr "Freedombox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5446,27 +5439,27 @@ msgstr "Aplicações" msgid "Error disabling share: {error_message}" msgstr "Erro a instalar a aplicação: {error}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5628,32 +5621,32 @@ msgstr "Erro ao definir o nome do domínio: {exception}" msgid "Updated security configuration" msgstr "Configuração Geral" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5662,17 +5655,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5701,7 +5694,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5801,14 +5794,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5816,14 +5809,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -6017,7 +6010,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6025,7 +6018,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6068,7 +6061,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6076,7 +6069,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6084,149 +6077,149 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 #, fuzzy #| msgid "Service discovery server is running" msgid "The device is already unmounting." msgstr "O Servidor da descoberta do serviço está a correr" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Esta operação pode ligar um disco que esteja no estado de adormecido." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid domain name" msgid "Invalid directory name." msgstr "Nome de domínio inválido" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 #, fuzzy #| msgid "Archive name" msgid "Share" msgstr "Nome do arquivo" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6302,7 +6295,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6310,7 +6303,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6322,20 +6315,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6343,7 +6336,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6351,11 +6344,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6390,7 +6383,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6399,40 +6392,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6564,54 +6557,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Definição inalterada" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6619,12 +6616,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6632,7 +6629,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6846,14 +6843,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6861,15 +6858,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7100,18 +7097,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7441,7 +7438,7 @@ msgstr "Erro a estabelecer ligação ao servidor: {}" msgid "Server deleted." msgstr "Arquivo apagado." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7450,7 +7447,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7459,26 +7456,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7492,7 +7489,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7505,7 +7502,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7513,11 +7510,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7551,25 +7548,25 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "Definição inalterada" -#: plinth/package.py:193 +#: plinth/package.py:252 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -7913,6 +7910,16 @@ msgstr "%(percentage)s%% concluída" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Erro ao definir o nome do domínio: {exception}" + +#, fuzzy +#~| msgid "General Configuration" +#~ msgid "Error updating configuration" +#~ msgstr "Configuração Geral" + #, fuzzy #~| msgid "Applications" #~ msgid "Enable selected" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 884e2722e..d75c7e645 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-09-10 07:34+0000\n" "Last-Translator: Artem \n" "Language-Team: Russian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1063,15 +1064,15 @@ msgstr "" "получить доступ к приложению. Все пользователи с доступом могут использовать " "все библиотеки." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Использовать библиотеки электронных книг calibre" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "Электронная библиотека" @@ -1145,7 +1146,7 @@ msgstr "{name} удален." msgid "Could not delete {name}: {error}" msgstr "Не удалось удалить {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1158,7 +1159,7 @@ msgstr "" "многих продвинутых функций, которые, как правило, не требуется. Веб-терминал " "на основе консоли управления также доступен." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1170,7 +1171,7 @@ msgstr "" "использовать для открытия настраиваемых портов брандмауэра и расширенных " "сетей, таких как связывание, мостовое соединение и управление VLAN." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1179,7 +1180,7 @@ msgstr "" "Доступ к нему может получить любой пользователь " "на {box_name}, принадлежащий группе администраторов." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1187,12 +1188,12 @@ msgstr "" "Доступ в Кокпит возможен только через доменное имя. Доступ невозможен, если " "использовать IP-адрес как часть URL." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Администрирование сервера" @@ -1204,7 +1205,7 @@ msgstr "Доступ" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Кокпит будет работать, только если использовать следующие адреса." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1212,11 +1213,11 @@ msgstr "" "Здесь вы можете установить такие опции конфигурации, как имя хоста, доменное " "имя, домашняя страница веб-сервера и тому подобное." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Общие настройки" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1225,7 +1226,7 @@ msgstr "Общие настройки" msgid "Configure" msgstr "Настроить" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1355,7 +1356,7 @@ msgstr "Показать продвинутые приложения и функ msgid "Hiding advanced apps and features" msgstr "Скрыть продвинутые приложения и функции" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1367,7 +1368,7 @@ msgstr "" "коммуникационные серверы могут использовать его для установления вызова " "между сторонами, которые иначе не могут подключиться друг к другу." -#: plinth/modules/coturn/__init__.py:42 +#: 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-" @@ -1381,11 +1382,11 @@ msgstr "" "серверы, как matrix-synapse, должны быть настроены с указанными здесь " "деталями." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "VoIP-помощник" @@ -1403,7 +1404,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Используйте следующий общий секрет аутентификации:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1411,11 +1412,11 @@ msgstr "" "Сервер сетевого времени это программа позволяющая системе синхронизировать " "время с серверами в Интернете." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Дата и Время" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Время синхронизируется с NTP сервером" @@ -1444,11 +1445,11 @@ msgstr "Ошибка установки часового пояса: {exception} msgid "Time zone set" msgstr "Смена часового пояса" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge это клиент BitTorrent, имеющий веб-интерфейс." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1456,17 +1457,17 @@ msgstr "" "Пароль по умолчанию - 'deluge', но вы должны войти в систему и изменить его " "сразу после включения этой службы." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Загружать файлы используя приложения BitTorrent" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Delugе" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "BitTorrent Веб Клиент" @@ -1478,7 +1479,7 @@ msgstr "Папка для загрузок" msgid "Bittorrent client written in Python/PyGTK" msgstr "BitTorrent клиент, написанный на Python/pygtk" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1486,54 +1487,54 @@ msgstr "" "Диагностический тест системы проведёт ряд проверок, чтобы убедиться, что " "приложения и службы работают как положено." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Диагностика" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "успешно" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: 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:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "ошибка" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "МБ" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "ГБ" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" "Вы должны отключить некоторые приложения, чтобы уменьшить использование " "памяти." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Вы не должны устанавливать никаких новых приложений в этой системе." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1542,7 +1543,7 @@ msgstr "" "В системе мало памяти: использовано {percent_used}%, свободно " "{memory_available} {memory_available_unit}. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Мало памяти" @@ -1595,7 +1596,7 @@ msgstr "Результат" msgid "Diagnostic Test" msgstr "Диагностический тест" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1603,12 +1604,12 @@ msgstr "" "diaspora* это децентрализованная социальная сеть, где вы можете держать и " "контролировать ваши данные." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diasporа*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Federated Social Netwоrk" @@ -1668,7 +1669,7 @@ msgstr "Регистрации пользователя включена" msgid "User registrations disabled" msgstr "Приложение отключено" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1679,7 +1680,7 @@ msgstr "" "в 24 часа) это может стать препятствиям, чтобы найти вас в Интернете. Это " "так-же может сделать недоступными предоставляемые {box_name} услуги." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1696,11 +1697,11 @@ msgstr "" "сервер будет назначать DNS-имя на новый IP-адрес, и если кто-то из Интернета " "запрашивает DNS-имя, они будут получать ответ ваш текущий IP-адрес." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Клиент динамического DNS" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Динамическое доменное имя" @@ -1756,12 +1757,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Оставьте это поле пустым, если вы хотите сохранить ваш текущий пароль." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Необязательное значение. Если ваш {box_name} не подключен непосредственно к " "Интернету, (т.е. подключенный к маршрутизатору) этот URL-адрес используется " @@ -1842,12 +1848,18 @@ 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Если вы ищете бесплатный сервер динамического DNS, вы можете найти " "бесплатный сервис GnuDIP на web client. Когда включено, ejabberd доступен всем пользователям {box_name} ." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "еjabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Чат-сервер" @@ -2075,34 +2087,28 @@ msgstr "" "пользователей будет выглядеть как username@%(domainname)s. Вы можете " "настроить ваш домен на странице Настройка." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Чат-сервер" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Ошибка параметра имени домена: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2139,54 +2145,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Не сертификата" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid domain" msgstr "Введите действительное имя пользователя." -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid destination" msgstr "Введите действительное имя пользователя." -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Домен" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "Управление библиотеками" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Включено" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2195,7 +2213,7 @@ msgid "Disabled" msgstr "Выключено" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2215,7 +2233,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2248,49 +2266,32 @@ msgstr "Создать новую резервную копию" msgid "Add" msgstr "Добавить" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Домены" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "Управление снапшотами" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Тип службы" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "Исправление" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Произошла ошибка во время настройки." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Настройки без изменений" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2302,7 +2303,7 @@ msgstr "" "правильно настроенным, чтобы уменьшить риск информационной опасности из " "Интернета." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Брандмауэр" @@ -2425,7 +2426,7 @@ msgstr "Запуск программы установки" msgid "Setup Complete" msgstr "Установка Завершена" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2444,7 +2445,7 @@ msgstr "" "нескольких доступных графических клиентов. И вы можете поделиться своим " "кодом с людьми по всему миру." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2452,15 +2453,15 @@ msgstr "" "Чтобы узнать больше о том, как использовать Git, посетите Git tutorial." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Доступ к Git-репозиторию с возможностью чтения и записи" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Простой хостинг Git" @@ -2574,31 +2575,31 @@ msgstr "Репозиторий отредактирован." msgid "Edit repository" msgstr "Редактировать репозиторий" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Документация" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Руководство" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Получить поддержку" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Отправить отзыв" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2890,7 +2891,7 @@ msgstr "О {box_name}" msgid "{box_name} Manual" msgstr "Руководство {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2902,7 +2903,7 @@ msgstr "" "обеспечивает анонимность, отправляя зашифрованный трафик через сеть, " "управляемую волонтерами, по всему миру." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2910,26 +2911,26 @@ msgstr "" "Более подробную информацию об I2P можно найти на домашней странице их проекта." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" "При первом посещении веб-интерфейса будет запущен процесс конфигурации." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Управление приложением I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Анонимная сеть" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P Прокси" @@ -2974,7 +2975,7 @@ msgstr "" "сети. Скачайте файлы, добавив торренты, или создайте новый торрент, чтобы " "поделиться файлом." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2984,7 +2985,7 @@ msgstr "" "облегченных языков разметки, включая Markdown, и общие функции ведения " "блогов, такие как комментарии и RSS-каналы." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2998,15 +2999,15 @@ msgstr "" "href=\"{users_url}\">Конфигурация пользователей вы можете изменить " "разрешения или добавить новых пользователей." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Вики и Блог" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Просмотр и редактирование приложений Wiki" @@ -3085,11 +3086,11 @@ msgstr "{title} удалён." msgid "Could not delete {title}: {error}" msgstr "Не удалось удалить {title}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted это сервер для Gobby, совместный текстовый редактор." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3100,11 +3101,11 @@ msgstr "" "a>, настольный клиент и установите его. Затем запустите Gobby и выберите " "«Подключиться к серверу» и введите доменное имя вашего {box_name}." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Сервер Gobby" @@ -3125,7 +3126,7 @@ msgstr "" "Запустите Gobby, выберите \"Подключиться к серверу\" и введите доменное имя " "вашего {box_name}." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3133,11 +3134,11 @@ msgstr "" "JSXC является веб-клиентом для XMPP. Обычно он используется с XMPP сервером " "работающим локально." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Чат-клиент" @@ -3146,7 +3147,7 @@ msgstr "Чат-клиент" msgid "JavaScript license information" msgstr "Информация о лицензии JavaScript" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3160,7 +3161,7 @@ msgstr "" "автоматически получать и устанавливать цифровые сертификаты для каждого " "доступного домена." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3173,15 +3174,15 @@ msgstr "" "org/repository/\">Let's Encrypt Subscriber Agreement перед " "использованием этой службы." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Сертификаты" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3286,7 +3287,7 @@ msgstr "Сертификат успешно удален для домена {do msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Не удалось удалить сертификат для домена {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3303,14 +3304,14 @@ msgstr "" "одном сервере Matrix могут общаться с пользователями на всех остальных " "серверах." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3405,7 +3406,7 @@ msgstr "" "Пожалуйста, посетите Let's Encrypt, " "чтобы получить его." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3417,7 +3418,7 @@ msgstr "" "редактируемого сайта. Вы можете использовать mediawiki как сайт, делать " "заметки или работать совместно с друзьями." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3432,7 +3433,7 @@ msgstr "" "перейдя в раздел Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3440,12 +3441,12 @@ msgstr "" "Кто угодно, имея ссылку на wiki, может читать её. Только зарегистрированные " "пользователи могут вносить изменения." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3538,7 +3539,7 @@ msgstr "Скин по умолчанию изменен" msgid "Server URL updated" msgstr "URL сервера удален" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3551,11 +3552,11 @@ msgstr "" "порту (30000). Для подключения к серверу требуется Minetest клиент." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Песочница" @@ -3628,7 +3629,7 @@ msgstr "Конфигурация PVP обновлена" msgid "Damage configuration updated" msgstr "Конфигурация урона обновлена" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3646,15 +3647,15 @@ msgstr "" "медиаплеерами, смартфонами, телевизорами и игровыми системами (такими как " "PS3 и Xbox 360) или такими приложениями, как totem и Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Сервер потоковой передачи мультимедиа" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Простой медиа-сервер" @@ -3699,7 +3700,7 @@ msgstr "Указанный каталог не существует." msgid "Updated media directory" msgstr "Обновленный каталог медиа" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3710,7 +3711,7 @@ msgstr "" "пиринговый сетях, таких, как eDonkey, Kademlia, Overnet, BitTorrent и " "DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3721,7 +3722,7 @@ msgstr "" "это с помощью любого мобильного или десктопного фронтэнда или через telnet. " "Смотри руководство." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3729,16 +3730,16 @@ msgstr "" "В {box_name}, загруженные Файлы могут быть найдены в /var/lib/mldonkey/ " "directory." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Загрузить файлы, используя приложение eDonkey" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Файлообмен P2P" @@ -3750,7 +3751,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3769,7 +3770,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\">Monkeysphere SSH documentation " "для подробностей." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3787,7 +3788,7 @@ msgstr "" "может потребоваться программное обеспечение, которое доступно на сайте Monkeysphere ." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "MonkeySphere" @@ -3806,6 +3807,10 @@ msgstr "Отмена" msgid "Service" msgstr "Служба" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Домены" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3911,7 +3916,7 @@ msgstr "Опубликованый ключ на сервере ключей." msgid "Error occurred while publishing key." msgstr "Произошла ошибка при публикации ключа." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3919,7 +3924,7 @@ msgstr "" "Mumble это шифрованый чат с высоким качеством голоса, низкой задержкой и " "открытым исходным кодом." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3929,11 +3934,11 @@ msgstr "" "64738. На Клиенты вы можете найти " "клиенты для вашего компьютера и Android устройств." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Голосовой чат" @@ -3961,7 +3966,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "Пароль суперпользователя успешно обновлён." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3974,7 +3979,7 @@ msgstr "" "каждого типа имени отображается, включены или отключены службы HTTP, HTTPS и " "SSH для входящих подключений через данное имя." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Название услуги" @@ -3990,7 +3995,7 @@ msgstr "Все веб-приложения" msgid "Services" msgstr "Службы" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3998,7 +4003,7 @@ msgstr "" "Настроить сетевые устройства. Подключайтесь к Интернету через Ethernet, Wi-" "Fi или PPPoE. Поделитесь этим подключением с другими устройствами в сети." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4006,11 +4011,11 @@ msgstr "" "Устройства, администрируемые другими методами, могут быть недоступны для " "настройки здесь." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Сети" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Использовать DNSSEC на IPv{kind}" @@ -4553,7 +4558,7 @@ msgstr "DNS-сервер" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "По умолчанию" @@ -4566,7 +4571,7 @@ msgid "This connection is not active." msgstr "Это подключение не активно." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Безопасность" @@ -5105,7 +5110,7 @@ msgstr "Универсальный" msgid "TUN or TAP interface" msgstr "Сетевой интерфейс" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5202,7 +5207,7 @@ msgstr "Подключение {name} удалено." msgid "Failed to delete connection: Connection not found." msgstr "Не удалось удалить подключение: соединение не найдено." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5220,22 +5225,22 @@ msgstr "" "также получить доступ к остальной части Интернет через {box_name} для " "дополнительной безопасности и анонимности." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection to Server" msgid "Connect to VPN services" msgstr "Подключение к серверу" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Виртуальная частная сеть" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5309,7 +5314,7 @@ msgstr "" msgid "Download my profile" msgstr "Скачать мой профиль" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5322,19 +5327,19 @@ msgstr "" "недоступны из остальной части интернета. Это включает в себя следующие " "ситуации:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} ограничен брандмауэром." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} подключен к маршрутизатору (беспроводному), который вы не " "контролируете." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5342,7 +5347,7 @@ msgstr "" "Ваш провайдер не предоставляет вам внешний IP-адрес и вместо этого " "обеспечивает подключение к Интернету через NAT." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5350,11 +5355,11 @@ msgstr "" "Ваш провайдер не предоставляет вам статический IP-адрес, и ваш-IP адрес " "изменяется каждый раз при подключении к Интернету." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Ваш провайдер ограничивает входящие соединения." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5367,15 +5372,15 @@ msgstr "" "услуг pagekite, например pagekite.net. " "В будущем, для этого возможно будет использовать {box_name} вашего приятеля." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PаgeKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Публичная видимость" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "PageKite Домен" @@ -5518,12 +5523,12 @@ msgstr "" "Инструкции " "по настройке клиента SSH" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Производительность" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5534,7 +5539,7 @@ msgstr "" "представление о шаблонах использования и о том, перегружено ли оборудование " "пользователями и службами." -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5542,15 +5547,15 @@ msgstr "" "Метрики производительности собираются Performance Co-Pilot и могут быть " "просмотрены с помощью приложения Cockpit." -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Системный мониторинг" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Перезагрузка или завершение работы системы." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Pоwer" @@ -5615,7 +5620,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Завершить работу сейчас" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5626,7 +5631,7 @@ msgstr "" "HTTP, контроля доступа и удаления рекламы и прочего неприятного мусора в " "интернете. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5641,20 +5646,20 @@ msgstr "" "config.privoxy.org\">http://config.privoxy.org или http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Web-прокси" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Доступ к {url} с прокси {proxy} на tcp{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5671,7 +5676,7 @@ msgstr "" "клиентов. Для этого могут использоваться как клиенты настольного компьютера, " "так и мобильные версии." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your для десктопов и мобильных устройств." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "IRC-клиент" @@ -5695,7 +5700,7 @@ msgstr "IRC-клиент" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5710,7 +5715,7 @@ msgstr "" "supported-clients\">поддерживаемое клиентское приложение. Доступ к " "Radicale может получить любой пользователь с логином {box_name}." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5720,12 +5725,12 @@ msgstr "" "создание новых календарей и адресных книг. Он не поддерживает добавление " "событий или контактов, для этого требуется отдельный клиент." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Календарь и Адресная книга" @@ -5807,7 +5812,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Конфигурация прав доступа обновлена" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5819,7 +5824,7 @@ msgstr "" "которую вы ожидаете от почтового клиента, включая поддержку MIME, адресную " "книгу, управление папками, поиск сообщений и проверку орфографии." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5833,7 +5838,7 @@ msgstr "" "example.com. Для IMAP через SSL (рекомендуется) заполните поле " "сервера, например imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5849,11 +5854,11 @@ msgstr "" "security/lesssecureapps\" >https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "Почтовый клиент" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5861,7 +5866,7 @@ msgstr "" "Samba позволяет обмениваться файлами и папками между FreedomBox и другими " "компьютерами в вашей локальной сети." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5874,11 +5879,11 @@ msgstr "" "вашем компьютере по адресу \\\\{hostname} (в Windows) или smb://{hostname}." "local (в Linux и Mac). Вы можете выбрать один из трёх типов: " -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "Открытый общий ресурс - доступен всем в вашей локальной сети." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5886,7 +5891,7 @@ msgstr "" "Общий доступ к группе - доступен только пользователям FreedomBox, которые " "находятся в группе Freedombox-share." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5894,15 +5899,15 @@ msgstr "" "Домашняя папка - каждый пользователь в группе Freedombox-share может иметь " "собственное личное пространство." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Доступ к частным общим ресурсам" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Сетевое хранилище файлов" @@ -5993,11 +5998,11 @@ msgstr "Действие" msgid "FreedomBox OS disk" msgstr "FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Открытый ресурс" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Групповой ресурс" @@ -6023,7 +6028,7 @@ msgstr "Общий доступ отключён." msgid "Error disabling share: {error_message}" msgstr "Ошибка отключения общего доступа: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6031,7 +6036,7 @@ msgstr "" "Searx - это конфиденциальная метапоисковая система. Она агрегирует и " "показывает результаты с разных поисковых систем." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6039,15 +6044,15 @@ msgstr "" "Searx может быть использован, чтобы избежать отслеживания и профилирования " "поисковыми системами. Она не хранит никаких файлов cookie по умолчанию." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Поиск в интернете" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Веб-поиск" @@ -6230,11 +6235,11 @@ msgstr "Ошибка настройки ограничения доступа: { msgid "Updated security configuration" msgstr "Обновлена настройка безопасности" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli позволяет вам сохранять и обмениваться закладками." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6242,15 +6247,15 @@ msgstr "" "Обратите внимание, что Shaarli поддерживает только одну учетную запись " "пользователя, которую вам нужно будет настроить при первом посещении." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shаarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Закладки" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6260,7 +6265,7 @@ msgstr "" "защитить ваш интернет-трафик. Он может использоваться для обхода Интернет-" "фильтрации и цензуры." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6272,7 +6277,7 @@ msgstr "" "к серверу Shadowsocks. Он также запускать SOCKS5 прокси.Локальные устройства " "могут подключиться к этому прокси, и их данные будут зашифрованы." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6280,11 +6285,11 @@ msgstr "" "Чтобы использовать Shadowsocks после установки, смените URL-адрес SOCKS5 " "прокси в браузере или ином приложении на http://freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Socks5 Прокси" @@ -6315,7 +6320,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "Метод шифрования. Должен соответствовать параметру на сервере." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6423,7 +6428,7 @@ msgstr "Редактировать общий ресурс" msgid "Share deleted." msgstr "Общий ресурс удалён." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6433,7 +6438,7 @@ msgstr "" "btrfs. Они могут использоваться для отката системы к последнему рабочему " "состоянию в случае неприемлемых изменений в системе." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6444,7 +6449,7 @@ msgstr "" "до и после инсталляции программного обеспечения. Старые снимки автоматически " "удаляются в соответствии с установками ниже." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups, так как они хранятся на том же разделе. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Хранилище снимков" @@ -6659,7 +6664,7 @@ msgstr "Необходимо перезагрузить систему для з msgid "Rollback to Snapshot" msgstr "Откат к снимку" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6671,7 +6676,7 @@ msgstr "" "может выполнять задачи администрирования, копировать файлы или запускать " "другие услуги с использованием таких соединений." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) сервер" @@ -6717,7 +6722,7 @@ msgstr "SSH-аутентификация с отключенным пароле msgid "SSH authentication with password enabled." msgstr "SSH-аутентификация с включённым паролем." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Единый вход" @@ -6725,7 +6730,7 @@ msgstr "Единый вход" msgid "Login" msgstr "Логин" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6736,107 +6741,107 @@ msgstr "" "{box_name}. Вы можете видеть, какие носители используются, монтировать и " "размонтировать подключаемые носители, увеличивать корневой раздел итп." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Хранилище" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} байт" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} КиБ" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Миб" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Гиб" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Тиб" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Операция не удалась." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Операция была отменена." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Устройство уже отключается." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Операция не поддерживается из-за отсутствия поддержки драйвера или утилиты." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "Время операции вышло." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Операция пробудит диск, находящийся в режиме глубокого сна." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Попытка отключения устройства, которое используется." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "Операция уже отменена." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "Отсутствует авторизация для выполнения запрошенной операции." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Устройство уже подключено." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Устройство не подключено." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "Использование запрошенной опции не разрешено." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Устройство подключено другим пользователем." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Недостаточно места в системном разделе: использовано {percent_used}%, " "свободно {free_space}." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Недостаточно места на диске" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "Неизбежный сбой диска" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6845,39 +6850,39 @@ msgstr "" "Диск {id} сообщает, что в ближайшем будущем он может выйти из строя. " "Скопируйте любые данные, пока еще можете, и замените диск." -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Неверное имя каталога." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Каталог не существует." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Путь не каталог." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "Каталог не читается пользователем." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "Каталог не доступен для записи пользователем." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Каталог" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Подкаталог (необязательно)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Поделиться" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Другой каталог (укажите ниже)" @@ -6962,7 +6967,7 @@ msgstr "Устройство может быть безопасно отсоед msgid "Error ejecting device: {error_message}" msgstr "Ошибка извлечения устройства: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6974,7 +6979,7 @@ msgstr "" "или удаление файлов на одном устройстве будет автоматически реплицироваться " "на все другие устройства, на которых работает Syncthing." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6993,20 +6998,20 @@ msgstr "" "собственный набор папок. Веб-интерфейс доступен только для пользователей, " "принадлежащих к группе «admin» или «syncthing-access»." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Администрирование приложения Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Синхронизация файлов" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7018,7 +7023,7 @@ msgstr "" "распределенной сети узлов хранения файлов. Если некоторые узлы будут " "недоступны, вы можете получить ваши файлы от оставшихся узлов." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7029,11 +7034,11 @@ msgstr "" "быть добавлены дополнительные посредники, которые вводят этот узел в другие " "узлы хранения." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Распределенное Хранилище Файлов" @@ -7072,7 +7077,7 @@ msgstr "Подключенные посредники" msgid "Remove" msgstr "Удалить" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7086,40 +7091,40 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Сервис Tor Onion" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Tor Socks прокси" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Ретранслятор Tor типа мост" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Доступен порт трансляции Tor" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 транспорт зарегестрирован" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 транспорт зарегистрирован" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Доступ к {url} по tcp{kind} через Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Подтверждение использования Tor в {url} по tcp {kind}" @@ -7268,11 +7273,15 @@ msgstr "SОCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Порт Tor SOCKS вашего %(box_name)s доступен по порту TCP 9050." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Настройки без изменений" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission это клиент BitTorrent, имеющий веб-интерфейс." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7280,16 +7289,16 @@ msgstr "" "BitTorrent является протокол обмена файлами peer-to-peer. Обратите внимание, " "что BitTorrent не является анонимным." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmissiоn" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7298,7 +7307,7 @@ msgstr "" "Tiny Tiny RSS это новый (RSS/Atom) агрегатор новостей, позволяющий читать " "новости из любого места, так же удобно, как и в настольных приложениях." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any пользователь с логином {box_name}." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7316,15 +7325,15 @@ msgstr "" "Tiny RSS используйте URL / tt-rss-app для " "подключения." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Чтение и подписка на ленты новостей" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Чтение ленты новостей" @@ -7332,12 +7341,12 @@ msgstr "Чтение ленты новостей" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "Проверьте и установите новейшие программы и обновления безопасности." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7351,7 +7360,7 @@ msgstr "" "выполняется автоматически в 02:00, в результате чего все приложения на " "короткое время становятся недоступными." -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7588,7 +7597,7 @@ msgstr "Сбой при запуске обновления." msgid "Frequent feature updates activated." msgstr "Активированы частые обновления функций." -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7600,7 +7609,7 @@ msgstr "" "запись пользователя была частью группы, чтобы разрешить пользователю доступ " "к приложению." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7612,15 +7621,15 @@ msgstr "" "пользователи группы admin могут изменять приложения или системные " "настройки." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Пользователи и группы" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Доступ ко всем сервисам и настройкам системы" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Проверьте запись LDAP \"{search_item}\"" @@ -7867,11 +7876,11 @@ msgstr "Изменить пароль" msgid "Password changed successfully." msgstr "Пароль успешно изменён." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard - это быстрый, современный и безопасный VPN-туннель." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7881,7 +7890,7 @@ msgstr "" "поддерживает WireGuard, и для маршрутизации всего исходящего трафика от " "{box_name} через VPN." -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8200,7 +8209,7 @@ msgstr "Удалить соединение с сервером" msgid "Server deleted." msgstr "Сервер удален." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8209,7 +8218,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8218,28 +8227,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Адрес" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8257,7 +8266,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8270,7 +8279,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8278,11 +8287,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -8318,23 +8327,23 @@ msgstr "PPPоE" msgid "Generic" msgstr "Универсальный" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Ошибка во время установки" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "Установка" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "Загрузка" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "изменение медиа" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "Файл настроек: {file}" @@ -8707,6 +8716,16 @@ msgstr "%(percentage)s%% завершено" msgid "Gujarati" msgstr "Гуджарати" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Ошибка параметра имени домена: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Произошла ошибка во время настройки." + #, fuzzy #~| msgid "Directory does not exist." #~ msgid "User does not exist" diff --git a/plinth/locale/si/LC_MESSAGES/django.po b/plinth/locale/si/LC_MESSAGES/django.po index 0df026566..e850aea4e 100644 --- a/plinth/locale/si/LC_MESSAGES/django.po +++ b/plinth/locale/si/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-04-27 13:32+0000\n" "Last-Translator: HelaBasa \n" "Language-Team: Sinhala calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1048,7 +1049,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1057,7 +1058,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1065,25 +1066,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1095,17 +1096,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1114,7 +1115,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1228,7 +1229,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1236,7 +1237,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1703,7 +1703,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "පිළිබඳව" @@ -1730,13 +1730,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1848,30 +1848,26 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1904,46 +1900,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1952,7 +1958,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1970,7 +1976,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -1995,43 +2001,28 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2039,7 +2030,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2146,7 +2137,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2157,21 +2148,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2283,31 +2274,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2532,7 +2523,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2540,31 +2531,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2601,14 +2592,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2617,15 +2608,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2702,11 +2693,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2714,11 +2705,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2737,17 +2728,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2756,7 +2747,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2766,7 +2757,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2774,15 +2765,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2883,7 +2874,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2893,14 +2884,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -2971,7 +2962,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2979,7 +2970,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2988,18 +2979,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3081,7 +3072,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3090,11 +3081,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3160,7 +3151,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3171,15 +3162,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3219,36 +3210,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3260,7 +3251,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3272,7 +3263,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3283,7 +3274,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3302,6 +3293,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3405,24 +3400,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3448,7 +3443,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3457,7 +3452,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3473,23 +3468,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3957,7 +3952,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -3970,7 +3965,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4411,7 +4406,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4500,7 +4495,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4511,20 +4506,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4588,7 +4583,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4597,33 +4592,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4632,15 +4627,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4774,33 +4769,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4853,14 +4848,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4870,20 +4865,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4894,7 +4889,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4914,7 +4909,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4924,19 +4919,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5003,7 +4998,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5011,7 +5006,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5020,7 +5015,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5030,17 +5025,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5049,31 +5044,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5151,11 +5146,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5181,27 +5176,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5356,32 +5351,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5390,17 +5385,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5429,7 +5424,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5529,14 +5524,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5544,14 +5539,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5741,7 +5736,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5749,7 +5744,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5790,7 +5785,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5798,7 +5793,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5806,143 +5801,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6017,7 +6012,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6025,7 +6020,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6037,20 +6032,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6058,7 +6053,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6066,11 +6061,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6105,7 +6100,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6114,40 +6109,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6273,54 +6268,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6328,12 +6327,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6341,7 +6340,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6537,14 +6536,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6552,15 +6551,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6786,18 +6785,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7091,7 +7090,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7100,7 +7099,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7109,26 +7108,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7142,7 +7141,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7155,7 +7154,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7163,11 +7162,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7201,23 +7200,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index 0fae80761..76e70bfd3 100644 --- a/plinth/locale/sl/LC_MESSAGES/django.po +++ b/plinth/locale/sl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Slovenian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1169,7 +1170,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1182,7 +1183,7 @@ msgstr "" "običajno niso zahtevane. Na voljo je tudi spletni ternimal za opravila z " "ukazno vrstico." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1190,7 +1191,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -1205,18 +1206,18 @@ msgstr "" "\"{users_url}\">katerikoli uporabnik na {box_name}, ki je član skupine " "skrbnikov." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Skrbništvo strežnika" @@ -1228,17 +1229,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1247,7 +1248,7 @@ msgstr "" msgid "Configure" msgstr "Nastavitve" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1371,7 +1372,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1379,7 +1380,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1851,7 +1851,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1878,13 +1878,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1996,32 +1996,28 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Domain Name Server" msgid "Email Server" msgstr "Strežnik z imenom domene" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2054,52 +2050,62 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid hostname" msgid "Enter a valid domain" msgstr "Neveljavno ime gostitelja" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid hostname" msgid "Enter a valid destination" msgstr "Neveljavno ime gostitelja" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Create new repository" msgid "Aliases" msgstr "Ustvari novo skladišče" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2108,7 +2114,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2126,7 +2132,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Create new repository" msgid "Manage Aliases" @@ -2157,47 +2163,32 @@ msgstr "Ustvari oddaljeno skladišče za rezervne kopije" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Create new repository" msgid "Manage Spam" msgstr "Ustvari novo skladišče" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Discovery" msgid "Service Alert" msgstr "Odkrivanje storitev" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2205,7 +2196,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2312,7 +2303,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2323,21 +2314,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2474,31 +2465,31 @@ msgstr "Ne najdem skladišča" msgid "Edit repository" msgstr "Ustvari novo skladišče" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2723,7 +2714,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2731,31 +2722,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2792,14 +2783,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2808,15 +2799,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2894,11 +2885,11 @@ msgstr "Arhiv je izbrisan." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2906,11 +2897,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2929,17 +2920,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2948,7 +2939,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2958,7 +2949,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2966,15 +2957,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3075,7 +3066,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3085,14 +3076,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3163,7 +3154,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3171,7 +3162,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3180,18 +3171,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3275,7 +3266,7 @@ msgstr "" msgid "Server URL updated" msgstr "Arhiv je izbrisan." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3284,11 +3275,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3354,7 +3345,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3365,15 +3356,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3413,36 +3404,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3454,7 +3445,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3466,7 +3457,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3477,7 +3468,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3496,6 +3487,10 @@ msgstr "Prekliči" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3599,24 +3594,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3644,7 +3639,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3653,7 +3648,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3671,23 +3666,23 @@ msgstr "" msgid "Services" msgstr "Odkrivanje storitev" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4155,7 +4150,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4168,7 +4163,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4621,7 +4616,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4710,7 +4705,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4721,22 +4716,22 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection refused" msgid "Connect to VPN services" msgstr "Povezava je zavrnjena" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4800,7 +4795,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4809,33 +4804,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4844,15 +4839,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4986,33 +4981,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -5065,14 +5060,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5082,20 +5077,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5106,7 +5101,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -5126,7 +5121,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5136,19 +5131,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5215,7 +5210,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5223,7 +5218,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5232,7 +5227,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5242,17 +5237,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5261,31 +5256,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5367,11 +5362,11 @@ msgstr "Šifriranje" msgid "FreedomBox OS disk" msgstr "FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5399,27 +5394,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "Napaka ob nameščanju aplikacije: {error}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5576,32 +5571,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5610,17 +5605,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5649,7 +5644,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5749,14 +5744,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5764,14 +5759,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5963,7 +5958,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5971,7 +5966,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6014,7 +6009,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6022,7 +6017,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6030,145 +6025,145 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "Neveljavno ime gostitelja" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6243,7 +6238,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6251,7 +6246,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6263,20 +6258,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6284,7 +6279,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6292,11 +6287,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6331,7 +6326,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6340,40 +6335,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6499,33 +6494,37 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -6540,21 +6539,21 @@ msgstr "" "\"{users_url}\">katerikoli uporabnik na {box_name}, ki je član skupine " "skrbnikov." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6562,12 +6561,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6575,7 +6574,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6775,14 +6774,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6790,15 +6789,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7028,18 +7027,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7365,7 +7364,7 @@ msgstr "Napaka ob nameščanju aplikacije: {error}" msgid "Server deleted." msgstr "Arhiv je izbrisan." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7374,7 +7373,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7383,26 +7382,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7416,7 +7415,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7429,7 +7428,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7437,11 +7436,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7475,23 +7474,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/sq/LC_MESSAGES/django.po b/plinth/locale/sq/LC_MESSAGES/django.po index 5cf0818d7..4bdb646eb 100644 --- a/plinth/locale/sq/LC_MESSAGES/django.po +++ b/plinth/locale/sq/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-06-07 12:34+0000\n" "Last-Translator: Besnik Bleta \n" "Language-Team: Albanian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1061,15 +1062,15 @@ msgstr "" "gjendje të përdorin aplikacionin. Krejt përdoruesit e lejuar mund të hyjnë " "në të gjitha bibliotekat." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Përdorni biblioteka calibre e-librash" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "Bibliotekë E-librash" @@ -1143,7 +1144,7 @@ msgstr "{name} u fshi." msgid "Could not delete {name}: {error}" msgstr "S’u fshi dot {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1157,7 +1158,7 @@ msgstr "" "domosdoshme. Ka gjithashtu edhe një terminal me bazë web, për veprime që nga " "një konsol." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1170,7 +1171,7 @@ msgstr "" "fjala <em>bonding</em>, <em>bridging</em> dhe " "administrmi VLAN-i." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1179,7 +1180,7 @@ msgstr "" "Mund të përdoret nga cilido përdorues në " "{box_name} që është pjesë e grupit të përgjegjësve." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1187,12 +1188,12 @@ msgstr "" "Cockpit lyp përdorim që nga një emër përkatësie. S’do të funksionojë, nëse " "provohet duke përdorur një adresë IP, si pjesë e URL-së." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Administrim Shërbyesi" @@ -1205,7 +1206,7 @@ msgid "Cockpit will only work when accessed using the following URLs." msgstr "" "Cockpit do të funksionojë vetëm kur në të hyhet duke përdorur URL-të vijuese." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1213,11 +1214,11 @@ msgstr "" "Këtu mund të caktoni disa nga mundësitë e përgjithshme të formësimit, bie " "fjala strehëemër, emër përkatësie, faqe hyrëse e sgërbyesit." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Formësim i Përgjithshëm" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1226,7 +1227,7 @@ msgstr "Formësim i Përgjithshëm" msgid "Configure" msgstr "Formësoni" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1357,7 +1358,7 @@ msgstr "Me aplikacione dhe veçori të thelluara shfaqur" msgid "Hiding advanced apps and features" msgstr "Me aplikacione dhe veçori të thelluara fshehur" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1370,7 +1371,7 @@ msgstr "" "thirrje mes palësh që, përndryshe, s’janë në gjendje të lidhen me njëri-" "tjetrin." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Nëse po kërkoni për një llogari falas DNS-je dinamike, mund të gjeni një " "shërbim GnuDIP të lirë, te web client me hyrje {box_name}." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Shërbyes Fjalosjesh" @@ -2081,34 +2093,28 @@ msgstr "" "Përkatësinë tuaj mund ta ujdisni te faqja Formësoni e sistemit." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "Shërbyes Fjalosjesh" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Gabim në caktimin e emrin të përkatësisë: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2145,54 +2151,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "S’ka dëshmi" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid domain" msgstr "Jepni një emër përdoruesi të vlefshëm." -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid destination" msgstr "Jepni një emër përdoruesi të vlefshëm." -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Përkatësi" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Lidhje parësore" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "Administroni Biblioteka" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "E aktivizuar" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2201,7 +2219,7 @@ msgid "Disabled" msgstr "E çaktivizuar" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2221,7 +2239,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2254,49 +2272,32 @@ msgstr "Krijoni një kopjeruajtje të re" msgid "Add" msgstr "Shtoje" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Përkatësi" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Snapshots" msgid "Manage Spam" msgstr "Administroni Fotografime" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Lloj Shërbimi" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Ndodhi një gabim gjatë formësimit." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2307,7 +2308,7 @@ msgstr "" "në rrjet te {box_name} juaj. Mbajta e një firewall-i të aktivizuar dhe të " "formësuar si duhet ul rrezikun e kërcënimeve të sigurisë nga Interneti." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Firewall" @@ -2430,7 +2431,7 @@ msgstr "Nis Ujdisjen" msgid "Setup Complete" msgstr "Ujdisje e Plotësuar" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2448,7 +2449,7 @@ msgstr "" "rreshti urdhrash ose përmes klientësh të shumta grafikë të gatshëm. Dhe mund " "ta ndani kodin tuaj me njerëz anembanë botës." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2456,15 +2457,15 @@ msgstr "" "Për të mësuar më tepër se si të përdoret Git, vizitoni përkujdesore Git-i." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Hyrje për shkrim-lexim në depo Git" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Strehim i Thjeshtë Git" @@ -2576,31 +2577,31 @@ msgstr "Depoja u përpunua." msgid "Edit repository" msgstr "Përpunoni depon" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Dokumentim" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Doracak" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Merrni Asistencë" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Parashtroni Përshtypjet" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2897,7 +2898,7 @@ msgstr "Mbi {box_name}" msgid "{box_name} Manual" msgstr "Doracak për {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2909,7 +2910,7 @@ msgstr "" "dërguar trafik të fshehtëzuar, përmes një rrjeti të mbajtur në këmbë nga " "vullnetarë, të shpërndarë anembanë botës." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2917,26 +2918,26 @@ msgstr "" "Më më tepër informacion rreth I2P-së mund të gjeni që nga faqja hyrëse e vetë projektit." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" "Vizita e parë te ndërfaqja web e dhënë do të fillojë procesin e formësimit." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Administroni aplikacion I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Rrjet Anonimiteti" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Ndërmjetës I2P" @@ -2982,7 +2983,7 @@ msgstr "" "një rrjet “peer-to-peer”. Shkarkoni kartela duke shtuar rrëkeza, ose krijoni " "një rrëkezë të re për të ndarë një kartelë me të tjerët." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2992,7 +2993,7 @@ msgstr "" "markup-i të lehta, përfshi Markdown, dhe funksione të rëndomtë blogimi, bie " "fjala, komente dhe prurje RSS." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3006,15 +3007,15 @@ msgstr "" "ekzistueset. Te Formësim Përdoruesish mund të " "ndryshoni këto leje ose të shtoni përdorues të rinj." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki dhe Blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Shihni dhe përpunoni aplikacione wiki" @@ -3093,13 +3094,13 @@ msgstr "{title} u fshi." msgid "Could not delete {title}: {error}" msgstr "S’u fshi dot {title}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted është një shërbyes për Gobby, një përpunues tekstesh në " "bashkëpunim." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3110,11 +3111,11 @@ msgstr "" "klientin desktop, dhe instalojeni. Mandej nisni Gobby-n dhe përzgjidhni " "“Lidhu me Shërbyes” dhe jepni emrin e përkatësisë së {box_name} tuaj." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Shërbyes Gobby" @@ -3135,7 +3136,7 @@ msgstr "" "Niseni Gobby-n dhe përzgjidhni “Lidhu me Shërbyes” dhe jepni emrin e " "përkatësisë tuaj {box_name}." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3143,11 +3144,11 @@ msgstr "" "JSXC është një klient web për XMPP-në. Zakonisht përdoret me një shërbyes " "XMPP që xhiron lokalisht." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Klient Fjalosjesh" @@ -3156,7 +3157,7 @@ msgstr "Klient Fjalosjesh" msgid "JavaScript license information" msgstr "Hollësi licence JavaScript" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3171,7 +3172,7 @@ msgstr "" "përkatësi të pranishme. Këtë e bën duke dëshmuar për veten se është i zoti " "i një përkatësie nga Let’s Encrypt, një autoritet dëshmish (AD)." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3184,15 +3185,15 @@ msgstr "" "pajtohuni me Marrëveshje " "Pajtimtari Let’s Encrypt before using this service." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Dëshmi" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3297,7 +3298,7 @@ msgstr "Dëshmi e fshirë me sukses për përkatësinë {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "S’u arrit të fshihet dëshmi për përkatësinë {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3307,14 +3308,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3406,7 +3407,7 @@ msgstr "" "Ju lutemi, kaloni te Let's Encrypt, që " "të merrni një të tillë." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3419,7 +3420,7 @@ msgstr "" "strehuar sajt të llojit wiki, për të mbajtur shënime ose për të bashkëpunuar " "me shokë në projekte." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3434,7 +3435,7 @@ msgstr "" "href=\"/mediawiki/index.php/Special:CreateAccount\">Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3442,12 +3443,12 @@ msgstr "" "Cilido me një lidhje për te kjo wiki mund ta lexojë atë. Ndryshime te lënda " "mund të bëjnë vetëm përdorues që kanë bërë hyrjen në llogaritë e tyre." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3540,7 +3541,7 @@ msgstr "Lëkurçja parazgjedhje u ndryshua" msgid "Server URL updated" msgstr "URL-ja e shërbyesit u përditësua" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3549,11 +3550,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3627,7 +3628,7 @@ msgstr "Formësimi PVP u përditësua" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3645,15 +3646,15 @@ msgstr "" "telefona të mençur, televizorë, dhe sisteme lojërash (të tillë si PS3 dhe " "Xbox 360), ose aplikacione të tillë si totem dhe Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Shërbyes transmetimi mediash" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Shërbyes i Thjeshtë Mediash" @@ -3698,7 +3699,7 @@ msgstr "Drejtoria e dhënë s’ekziston." msgid "Updated media directory" msgstr "U përditësua drejtori mediash" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3709,7 +3710,7 @@ msgstr "" "tek-për-tek të shumtë, përshi eDonkey, Kademlia, Overnet, BitTorrent dhe " "DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3720,7 +3721,7 @@ msgstr "" "edhe përmes çfarëdo ndërfaqeje më vete, për celular ose desktop, ose telnet. " "Shihni doracakun." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3728,16 +3729,16 @@ msgstr "" "Te {box_name}, kartelat e shkarkuara mund të gjenden te drejtoria /var/lib/" "mldonkey/." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Shkarkoni kartela duke përdorur aplikacione eDonkey" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Dhënie-marrje Kartelash Tek-për-tek" @@ -3749,7 +3750,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3769,7 +3770,7 @@ msgstr "" "OpenPGP. Për më tepër hollësi, shihni dokumentimin e Monkeysphere-s për SSH." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3787,7 +3788,7 @@ msgstr "" "instalojë ndonjë program që që mund të kihet prej sajtit Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3806,6 +3807,10 @@ msgstr "Anuloje" msgid "Service" msgstr "Shërbim" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Përkatësi" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3912,7 +3917,7 @@ msgstr "U publikuar te shërbyes kyçesh." msgid "Error occurred while publishing key." msgstr "Gabim gjatë botimit të kyçit." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3920,7 +3925,7 @@ msgstr "" "Mumble është një <em>software</em> me burim të hapur, për " "fjalosje me zë, të fshehtëzuar, <em>low-latency</em>." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3930,11 +3935,11 @@ msgstr "" "64738. Ka klientë klientë të gatshëm për " "t’u lidhur me Mumble-in që nga desktopi apo pajisjet tuaja Android." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Fjalosje Me Zë" @@ -3963,7 +3968,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "Fjalëkalimi i superpërdoruesit u përditësua me sukses." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3977,7 +3982,7 @@ msgstr "" "HTTPS, dhe SSH janë të aktivizuara apo të çaktivizuara për lidhje ardhëse " "përmes emrit të dhënë." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Shërbime Emrash" @@ -3993,7 +3998,7 @@ msgstr "Krejt aplikacionet web" msgid "Services" msgstr "Shërbime" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4001,7 +4006,7 @@ msgstr "" "Formësoni pajisje rrjeti. Lidhuni në Internet përmes Ethernet-i, Wi-Fi ose " "PPPoE. Ndajeni atë lidhje me pajisje të tjera në rrjet." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4009,11 +4014,11 @@ msgstr "" "Pajisjet e administruara përmes metodash të tjera mund të mos jenë të " "pranishme për formësim këtu." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Rrjete" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Po përdoret DNSSEC në IPv{kind}" @@ -4570,7 +4575,7 @@ msgstr "Shërbyes DNS" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Gjendje" @@ -4583,7 +4588,7 @@ msgid "This connection is not active." msgstr "Kjo lidhje s’është aktive." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Siguri" @@ -5073,7 +5078,7 @@ msgstr "elementare" msgid "TUN or TAP interface" msgstr "Ndërfaqe TUN ose TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5163,7 +5168,7 @@ msgstr "Lidhja {name} u fshi." msgid "Failed to delete connection: Connection not found." msgstr "S’u arrit të fshihet lidhje: S’u gjet lidhje." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5180,20 +5185,20 @@ msgstr "" "brendshme të dhëna nga {box_name}. Mund të hyni edhe në Internet përmes " "{box_name}-it, për më tepër siguri dhe anonimitet." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "Lidhuni me shërbime VPN" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Rrjet Virtual Privat" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5274,7 +5279,7 @@ msgstr "" msgid "Download my profile" msgstr "Shkarko profilin tim" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5287,19 +5292,19 @@ msgstr "" "{box_name}-it tuaj janë të pakapshme nga pjesa tjetër e Internetit. Kjo " "përfshin gjendjet vijuese:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} gjendet pas një firewall-i të kufizuar." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} është i lidhur te një rrugëzues (pa fill), të cilin nuk e " "kontrolloni ju." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5307,7 +5312,7 @@ msgstr "" "ISP-ja juaj s’ju furnizon një adresë IP të jashtme dhe në vend të kësaj ju " "jep lidhje Internet përmes NAT-i." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5315,11 +5320,11 @@ msgstr "" "ISP-ja juaj s’ju furnizon një adresë IP statike dhe adresa juaj IP ndryshon " "sa herë që lidheni në Internet." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "ISP-ja juaj kufizon lidhjet ardhëse." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5334,15 +5339,15 @@ msgstr "" "të ardhmen mund të jetë e mundshme të përdorni {box_name}-in e një shokut " "tuaj për këtë." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "E dukshme Publikisht" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "Përkatësi PageKite" @@ -5488,12 +5493,12 @@ msgstr "" "Shihni udhëzime ujdisjeje klienti SSH" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Funksionim" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5504,7 +5509,7 @@ msgstr "" "rregullsi përdorimi dhe nëse hardware-i është apo jo i mbingarkuar nga " "përdorues dhe shërbime." -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5512,15 +5517,15 @@ msgstr "" "Matjet mbi funksionimin grumbullohen nga Performance Co-Pilot dhe mund të " "shihen duke përdorur aplikacionin Cockpit." -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Mbikëqyrje Sistemi" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Rinisni ose fikeni sistemin." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Energji" @@ -5583,7 +5588,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Fike Tani" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5594,7 +5599,7 @@ msgstr "" "faqesh web dhe kryesh HTTP, kontrollim hyrjesh, dhe heqje reklamash dhe të " "tjera hedhurina të papëlqyeshme Internet. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5609,20 +5614,20 @@ msgstr "" "për të mund të shihni te http://config." "privoxy.org/ ose http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Ndërmjetës Web" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Hapni {url} me ndërmjetësin {proxy} në tcp{kind}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5639,7 +5644,7 @@ msgstr "" "në linjë dhe një ose më tepër klientë Quassel prej një desktopi ose celulari " "mund të përdoren për t’u lidhur dhe shkëputur prej tij." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktopi dhe celulari juaj." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "Klient IRC" @@ -5663,7 +5668,7 @@ msgstr "Klient IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5679,7 +5684,7 @@ msgstr "" "Radicale mund të hyhet nga cilido përdorues me kredenciale hyrjeje në " "{box_name}." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5689,12 +5694,12 @@ msgstr "" "të ri dhe librash adresash. Nuk mbulon shtim veprimtarish ose kontaktesh, " "çka duhen bërë duke përdorur një tjetër klient." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Kalendar dhe Libër adresash" @@ -5776,7 +5781,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Formësimi i të drejtave për hyrje u përditësua" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5789,7 +5794,7 @@ msgstr "" "për MIME, libër adresash, manipulim dosjesh, kërkim në mesazhe dhe kontroll " "drejtshkrimi." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5803,7 +5808,7 @@ msgstr "" "IMAP përmes SSL (e rekomanduar), plotësoni fushën e shërbyesit, bie fjala, " "imaps://imap.shembull.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5819,11 +5824,11 @@ msgstr "" "Google (https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "Klient Email" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5831,7 +5836,7 @@ msgstr "" "Samba lejon të ndani me të tjerë kartela dhe dosje mes FreedomBox-it dhe " "kompjuterave të tjerë në rrjetin tuaj vendor." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5845,11 +5850,11 @@ msgstr "" "{hostname}.local (në Linux dhe Mac). Ka tre lloje ndarjesh nga mund të " "zgjidhni " -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "Pjesë e hapët - e përdorshme nga cilido në rrjetin tuaj vendor." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5857,7 +5862,7 @@ msgstr "" "Pjesë grupi - e përdorshme vetëm nga përdorues të FreedomBox-it të cilët " "janë pjesë e grupit freedombox-share." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5865,15 +5870,15 @@ msgstr "" "Pjesë Home - cilido përdorues në grupin freedombox-share mund të ketë " "hapësirën e vet private." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Hyrje te ndarje private" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Depozitë Kartelash Në Rrjet" @@ -5961,11 +5966,11 @@ msgstr "Veprim" msgid "FreedomBox OS disk" msgstr "Disk FreedomBox OS" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Pjesë e Hapët" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Pjesë Grupi" @@ -5991,7 +5996,7 @@ msgstr "Pjesa u çaktivizua." msgid "Error disabling share: {error_message}" msgstr "Gabim teksa çaktivizohej pjesë: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5999,7 +6004,7 @@ msgstr "" "Searx është një motor tejkërkimesh Internet që respekton privatësinë. " "Grumbullon dhe shfaq përfundime prej shumë motorësh kërkimi." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6007,15 +6012,15 @@ msgstr "" "Searx mund të përdoret për të shmangur gjurmim dhe profilizim nga motorë " "kërkimesh. Si parazgjedhje, nuk depoziton cookies." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Kërkoni në internet" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Kërkim në Web" @@ -6192,11 +6197,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:21 +#: plinth/modules/shaarli/__init__.py:17 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:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6204,15 +6209,15 @@ msgstr "" "Mbani parasysh se Shaarli mbulon vetëm një llogari të vetme përdoruesi, të " "cilën duhet ta ujdisni gjatë vizitës fillestare." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Faqerojtës" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6222,7 +6227,7 @@ msgstr "" "konceptuar të mbrojë trafikun tuaj Internet. Mund të përdoret për të " "anashkaluar filtrim dhe censurim Interneti." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6235,7 +6240,7 @@ msgstr "" "Pajisjet vendore mund të lidhen te ky ndërmjetës, dhe të dhënat e tyre do të " "fshehtëzohen dhe ndërmjetësohen përmes shërbyesit Shadowsocks." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6244,11 +6249,11 @@ msgstr "" "pajisjen, shfletuesin ose aplikacionin tuaj caktoni http://" "freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Ndërmjetës SOCKS5" @@ -6279,7 +6284,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "Metodë fshehtëzimi. Duhet të përputhet me atë të caktuar te shërbyesi." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6387,7 +6392,7 @@ msgstr "Përpunoni Pjesë" msgid "Share deleted." msgstr "Pjesa u fshi." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6397,7 +6402,7 @@ msgstr "" "kartelash. Këto mund të përdoren për të kthyer sistemin te një gjendje e " "mëparshme e njohur si e mirë, në rast ndryshimesh të padëshiruar te sistemi." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6408,7 +6413,7 @@ msgstr "" "dhe gjithashtu para dhe pas instalimit të një software-i. Fotografimet e " "vjetra do të spastrohen automatikisht, në përputhje me rregullimet më poshtë." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for kopjeruajtjet, ngaqë mund të rikthehen vetëm në të " "njëjtën pjesë. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Depozito Fotografime" @@ -6624,7 +6629,7 @@ msgstr "Që të plotësohet prapakthimi, duhet rinisur sistemi." msgid "Rollback to Snapshot" msgstr "Prapaktheje te Fotografim" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6636,7 +6641,7 @@ msgstr "" "një kompjuter i largët i autorizuar mund të kryejë punë administrimi, të " "kopjojë kartela ose të xhirojë shërbime të tjera." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Shërbyes Shelli të Sigurt (SSH)" @@ -6682,7 +6687,7 @@ msgstr "Mirëfilltësimi SSH me fjalëkalim u çaktivizua." msgid "SSH authentication with password enabled." msgstr "Mirëfilltësimi SSH me fjalëkalim u aktivizua." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Hyrje Njëshe" @@ -6690,7 +6695,7 @@ msgstr "Hyrje Njëshe" msgid "Login" msgstr "Hyrje" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6702,107 +6707,107 @@ msgstr "" "përdorim, të montoni dhe çmontoni media të heqshme, të zgjeroni pjesën " "rrënjë, etj." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Depozitë" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bajte" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Veprimi dështoi." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Veprimi u anulua." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Pajisja po çmontohet tashmë." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Veprimi nuk mbulohet, për shkak se mungon mbulimi për përudhësin/mjetin." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "Veprimit i mbaroi koha." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Veprimi do të zgjonte një disk që është në gjendjen “deep-sleep”." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Po përpiqet të çmontohet një pajisje që është e zënë." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "Veprimi është anuluar tashmë." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "I paautorizuar për kryerjen e veprimit të kërkuar." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Pajisja është e çmontuar tashmë." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Pajisja s’është e montuar." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "S’i lejohet të përdorë mundësinë e kërkuar." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Pajisja është montuar nga tjetër përdorues." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Hapësirë e ulët në pjesë sistemi: {percent_used}% të përdorura, {free_space} " "të lira." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Hapësirë disku e pamjaftueshme" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "Shumë afër dështimi disku" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6811,39 +6816,39 @@ msgstr "" "Disku {id} po raporton se ka gjasa të dështojë tani afër. Kopjoni çfarëdo të " "dhënash që mundeni ende dhe zëvendësoni diskun." -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Listë e pavlefshme emrash." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Drejtoria s’ekziston." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Shtegu s’është drejtori." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "Drejtoria s’është e lexueshme nga përdoruesi." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "Drejtoria s’është e shkrueshme nga përdoruesi." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Drejtori" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Nëndrejtori (opsionale)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Drejtori tjetër (jepeni më poshtë)" @@ -6926,7 +6931,7 @@ msgstr "Pajisja mund të hiqet pa rrezik." msgid "Error ejecting device: {error_message}" msgstr "Gabim në nxjerrje pajisjeje: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6934,7 +6939,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6946,20 +6951,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Administroni aplikacionin Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Njëkohësim Kartelash" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6972,7 +6977,7 @@ msgstr "" "nëse dështojnë disa nga nyjat. kartelat tuaja mund të rimerren nga nyjat e " "mbetura." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6983,11 +6988,11 @@ msgstr "" "Mund të shtohen paraqitës shtesë, të cilët do të paraqesin këtë nyjë dhe " "nyja të tjera depozitimi." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Depozitim i Shpërndarë Kartelash" @@ -7026,7 +7031,7 @@ msgstr "Paraqitës të lidhur" msgid "Remove" msgstr "Hiqe" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7040,40 +7045,40 @@ msgstr "" "përdorni Shfletuesin Tor." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Shërbim Onion Tor" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Ndërmjetës SOCKS Tor" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Rele Ure Tor" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Portë releje Tor e gatshme" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "URL hyrjesh {url} në tcp{kind} përmes Tor-i" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Ripohoni përdorim Tor-i te {url} në tcp{kind}" @@ -7206,54 +7211,58 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Lexues Prurjesh Lajmesh" @@ -7261,12 +7270,12 @@ msgstr "Lexues Prurjesh Lajmesh" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7274,7 +7283,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7470,14 +7479,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7485,15 +7494,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Përdorues dhe Grupe" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7719,18 +7728,18 @@ msgstr "Ndryshoni Fjalëkalimin" msgid "Password changed successfully." msgstr "Fjalëkalimi u ndryshua me sukses." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8024,7 +8033,7 @@ msgstr "Fshije Lidhjen me Shërbyesin" msgid "Server deleted." msgstr "Shërbyesi u fshi." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8033,7 +8042,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8042,28 +8051,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Adresë" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8081,7 +8090,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8094,7 +8103,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8102,11 +8111,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "Sistemues Fotografish" @@ -8140,23 +8149,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Elementar" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Gabim gjatë instalimit" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "po instalohet" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "po shkarkohet" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "ndryshim media" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "kartelë formësimi: {file}" @@ -8493,6 +8502,16 @@ msgstr "" msgid "Gujarati" msgstr "Gujaratase" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Gabim në caktimin e emrin të përkatësisë: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Ndodhi një gabim gjatë formësimit." + #, fuzzy #~| msgid "Directory does not exist." #~ msgid "User does not exist" diff --git a/plinth/locale/sr/LC_MESSAGES/django.po b/plinth/locale/sr/LC_MESSAGES/django.po index 604e0893c..1734e7a76 100644 --- a/plinth/locale/sr/LC_MESSAGES/django.po +++ b/plinth/locale/sr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Serbian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1113,7 +1114,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1125,7 +1126,7 @@ msgstr "" "{box_name} ima specijalne funkcije koje nisu obično moguće. Web terminal je " "takođe dostupan." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1133,7 +1134,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1142,7 +1143,7 @@ msgstr "" "Pristup moguć korisnik na {box_name} koja " "pripada admin grupi." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1150,12 +1151,12 @@ msgstr "" "Cockpit-u se pristupa isključivo preko domena. Neće raditi preko IP adrese " "kao URL." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Kokpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Administracija Servera" @@ -1167,17 +1168,17 @@ msgstr "Pristup" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Kokpit radi samo preko sledećih URL-ova." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1186,7 +1187,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1300,7 +1301,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1308,7 +1309,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1775,7 +1775,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1802,13 +1802,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1920,32 +1920,28 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Domain Name Server" msgid "Email Server" msgstr "Domain Name Server" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1978,46 +1974,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2026,7 +2032,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2044,7 +2050,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -2073,45 +2079,30 @@ msgstr "Kreiraj novu rezervnu kopiju" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Discovery" msgid "Service Alert" msgstr "Otkrivanje Servisa" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2119,7 +2110,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2226,7 +2217,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2237,21 +2228,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2363,31 +2354,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2612,7 +2603,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2620,31 +2611,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2681,14 +2672,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2697,15 +2688,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2782,11 +2773,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2794,11 +2785,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2817,17 +2808,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2836,7 +2827,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2846,7 +2837,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2854,15 +2845,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2963,7 +2954,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2973,14 +2964,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3051,7 +3042,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3059,7 +3050,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3068,18 +3059,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3163,7 +3154,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3172,11 +3163,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3242,7 +3233,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3253,15 +3244,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3301,36 +3292,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3342,7 +3333,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3354,7 +3345,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3365,7 +3356,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3384,6 +3375,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3487,24 +3482,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3530,7 +3525,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3539,7 +3534,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3557,23 +3552,23 @@ msgstr "" msgid "Services" msgstr "Služi" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4041,7 +4036,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4054,7 +4049,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4501,7 +4496,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4592,7 +4587,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4603,20 +4598,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4680,7 +4675,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4689,33 +4684,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4724,15 +4719,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4866,33 +4861,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4945,14 +4940,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4962,20 +4957,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4986,7 +4981,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -5006,7 +5001,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5016,19 +5011,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5097,7 +5092,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5105,7 +5100,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5114,7 +5109,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5124,17 +5119,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5143,31 +5138,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5247,11 +5242,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "KutijaSlobode" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5277,27 +5272,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5452,32 +5447,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5486,17 +5481,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5525,7 +5520,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5625,14 +5620,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5640,14 +5635,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5839,7 +5834,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5847,7 +5842,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5888,7 +5883,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5896,7 +5891,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5904,143 +5899,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6115,7 +6110,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6123,7 +6118,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6135,20 +6130,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6156,7 +6151,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6164,11 +6159,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6203,7 +6198,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6212,40 +6207,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6371,54 +6366,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6426,12 +6425,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6439,7 +6438,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6635,14 +6634,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6650,15 +6649,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6884,18 +6883,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7189,7 +7188,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7198,7 +7197,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7207,26 +7206,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7240,7 +7239,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7253,7 +7252,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7261,11 +7260,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7299,23 +7298,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index e86a3a907..8df107ca6 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-11-13 03:49+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1060,15 +1061,15 @@ msgstr "" "Endast användare som tillhör calibre -gruppen kan komma åt appen. " "Alla användare med åtkomst kan använda alla bibliotek." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Använd calibre e-bokbibliotek" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "E-bok Bibliotek" @@ -1142,7 +1143,7 @@ msgstr "{name} borttagen." msgid "Could not delete {name}: {error}" msgstr "Kunde inte ta bort {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1155,7 +1156,7 @@ msgstr "" "tillgängliga för många avancerade funktioner som vanligtvis inte krävs. En " "webbaserad terminal för konsoloperationer är också tillgänglig." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1167,7 +1168,7 @@ msgstr "" "anpassade brandväggsportar och avancerade nätverk som bindning, bryggning " "och VLAN-hantering." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1176,7 +1177,7 @@ msgstr "" "Den kan nås genom att alla användar på " "{box_name} som hör till administratörsgruppen." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1184,12 +1185,12 @@ msgstr "" "Cockpit kräver att du öppnar den via ett domännamn. Det kommer inte att " "fungera när de nås med en IP-adress som en del av webbadressen." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Server administrering" @@ -1201,7 +1202,7 @@ msgstr "Tillgång" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit fungerar bara vid åtkomst med följande webbadresser." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1209,11 +1210,11 @@ msgstr "" "Här kan du ställa in några allmänna konfigurationsalternativ som värdnamn, " "domännamn, webserver, hemsida etc." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Allmän Konfiguration" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1222,7 +1223,7 @@ msgstr "Allmän Konfiguration" msgid "Configure" msgstr "Konfigurera" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1351,7 +1352,7 @@ msgstr "Visar avancerade appar och funktioner" msgid "Hiding advanced apps and features" msgstr "Dölja avancerade appar och funktioner" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1363,7 +1364,7 @@ msgstr "" "WebRTC, SIP och andra kommunikationsservrar kan använda den för att upprätta " "ett samtal mellan parter som annars inte kan ansluta till varandra." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse eller ejabberd måste " "konfigureras med de uppgifter som tillhandahålls här." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "VoIP-hjälpare" @@ -1395,7 +1396,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Använd följande delade autentiseringshemligheter:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1403,11 +1404,11 @@ msgstr "" "Network time server är ett program som upprätthåller synkronisering av " "systemtiden med servrar på Internet." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Datum och Tid" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Tid synkroniserad till NTP-server" @@ -1436,13 +1437,13 @@ msgstr "Fel i inställning av tidszon: {exception}" msgid "Time zone set" msgstr "Tidszon inställd" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" "Deluge är en BitTorrentklient som inkluderar ett Webbaserat " "användargränssnitt." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1450,17 +1451,17 @@ msgstr "" "Standardlösenordet är \"deluge\", men du bör logga in och ändra det " "omedelbart efter att du har aktiverat den här tjänsten." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Ladda ner filer med BitTorrent-applikationer" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "BitTorrent Webbklient" @@ -1472,7 +1473,7 @@ msgstr "Ladda ner katalog" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent-klient skriven i Python / PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1480,52 +1481,52 @@ msgstr "" "Systemets diagnostiktest utför ett antal kontroller av ditt system för att " "bekräfta att program och tjänster fungerar som de ska." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Diagnostik" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "passerade" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "misslyckades" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "fel" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "varning" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GiB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "Du bör inaktivera vissa appar för att minska minnesanvändningen." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Du bör inte installera några nya appar på det här systemet." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1534,7 +1535,7 @@ msgstr "" "Systemet är ont om minne: {percent_used}% används, {memory_available}" "·{memory_available_unit} ledig. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Låg minne" @@ -1587,7 +1588,7 @@ msgstr "Resultat" msgid "Diagnostic Test" msgstr "Diagnostiktest" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1595,12 +1596,12 @@ msgstr "" "diaspora * är ett decentraliserat socialt nätverk där du kan lagra och " "kontrollera dina egna data." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Federerat Social Network" @@ -1661,7 +1662,7 @@ msgstr "Användarregistreringar aktiverade" msgid "User registrations disabled" msgstr "Användarregistreringar avaktiveras" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1672,7 +1673,7 @@ msgstr "" "kan det vara svårt för andra att hitta dig på nätet. Detta förhindrar andra " "att nå de tjänster som tillhandahålls av denna {box_name}." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1689,11 +1690,11 @@ msgstr "" "servern ditt DNS-namn till din nya IP, och om någon från Internet ber om " "ditt DNS-namn, kommer hen att få din aktuella IP som svar." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Klient för Dynamisk DNS" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Dynamiskt Domännamn" @@ -1749,12 +1750,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Lämna fältet tomt om du vill behålla ditt nuvarande lösenord." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Tillval. Om din {box_name} inte är direkt ansluten till Internet (dvs " "anslutna via en NAT-router) används denna webbadress för att hitta din " @@ -1835,12 +1841,18 @@ msgid "Please provide a password" msgstr "Ange ett lösenord" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Om du önskar ett gratis konto för dynamiskt DNS, kan du hitta en gratis " "GnuDIP-tjänst på " @@ -1902,7 +1914,7 @@ msgstr "" msgid "Last update" msgstr "Senaste uppdatering" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Om" @@ -1929,7 +1941,7 @@ msgstr "Konfigurera Dynamisk DNS" msgid "Dynamic DNS Status" msgstr "Dynamisk DNS (Domän Namns Server) status" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1937,7 +1949,7 @@ msgstr "" "XMPP är en öppen och standardiserad kommunikationsprotokoll. Här kan du köra " "din XMPP-server (kallad ejabberd)." -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client användare med en {box_name} inloggning." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn eller konfigurera en extern server." -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabbert" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Chat-Server" @@ -2073,7 +2085,7 @@ msgstr "" "kommer att se ut som användarnamn@%(domainname)s. Du kan ställa in " "din domän på systemet Konfigurera sidan." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." @@ -2081,25 +2093,21 @@ msgstr "" "Roundcube app ger användarna " "webbgränssnitt för att komma åt e-post." -#: plinth/modules/email_server/__init__.py:57 +#: plinth/modules/email_server/__init__.py:33 msgid "" "During installation, any other email servers in the system will be " "uninstalled." msgstr "" "Under installationen avinstalleras alla andra e-postservrar i systemet." -#: plinth/modules/email_server/__init__.py:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "E-postserver" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Drivs av Postfix, Dovecot och Rspamd" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "Konfiguration av Postfix domännamn" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "Integrering av Postfix-Dovecot SASL" @@ -2132,46 +2140,58 @@ msgstr "Postfix använder ett TLS -certifikat" msgid "Has a TLS certificate" msgstr "Har ett TLS-certifikat" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "Ange ett giltigt domän" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "Ange ett giltigt destination" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "domain" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Primär anslutning" + +#: 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 "Nytt alias (utan @domän)" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "Innehåller otillåtna tecken" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "Måste börja och sluta med a-z eller 0-9" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "Kan inte vara ett nummer" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "Aliasnamn" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktiverad" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2180,7 +2200,7 @@ msgid "Disabled" msgstr "Inaktiverad" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2198,7 +2218,7 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "Hantera alias" @@ -2223,43 +2243,28 @@ msgstr "Skapa ett nytt e -postalias" msgid "Add" msgstr "Lägg till" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domäner" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "Hantera skräppost" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "Servicevarning" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "Reparera" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "Internt fel i {0}" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "Kontrollera syslog för mer information" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "Fel vid uppdatering av konfiguration" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Instänllningar oförändrade" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2270,7 +2275,7 @@ msgstr "" "nätverkstrafiken på din {box_name}. Att ha en brandvägg aktiverad och " "korrekt konfigurerad minskar risken för säkerhetshot från Internet." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Brandvägg" @@ -2391,7 +2396,7 @@ msgstr "Starta installationsprogrammet" msgid "Setup Complete" msgstr "Installationen Klar" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2409,7 +2414,7 @@ msgstr "" "Git-klient eller med flera tillgängliga grafiska klienter. Och du kan dela " "din kod med människor runt om i världen." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2417,15 +2422,15 @@ msgstr "" "För att lära dig mer om hur du använder Git besökGit handledning." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Läs-skrivåtkomst till Git-respositories" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Enkelt Git hosting" @@ -2538,31 +2543,31 @@ msgstr "Respository redigerad." msgid "Edit repository" msgstr "Redigera respository" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Handledning" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Få support" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Skicka feedback" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2855,7 +2860,7 @@ msgstr "Om {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Manual" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2867,7 +2872,7 @@ msgstr "" "anonymitet genom att skicka krypterad trafik via ett volontärstyrt nätverk " "distribuerat över hela världen." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2875,7 +2880,7 @@ msgstr "" "För att hitta mer information om I2P på deras projekthemsida." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2883,19 +2888,19 @@ msgstr "" "Det första besöket i det medföljande webbgränssnittet kommer att initiera " "konfigurationsprocessen." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Hantera I2P appen" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Anonymitetsnätverk" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P proxy" @@ -2940,7 +2945,7 @@ msgstr "" "to-peer-nätverk. Ladda ner filer genom att lägga till torrenter eller skapa " "en ny torrent för att dela en fil." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2950,7 +2955,7 @@ msgstr "" "lightweight pålägg språken, inklusive markdown, och gemensam blogging " "funktionellitet sådan som kommentarerna och RSS feeds." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2963,15 +2968,15 @@ msgstr "" "redigera befindliga. I Användarkonfiguration kan du ändra dessa behörigheter eller lägga till nya användare." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "Ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki och Blogg" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Visa och redigera wiki-applikationer" @@ -3050,11 +3055,11 @@ msgstr "{title} borttagen." msgid "Could not delete {title}: {error}" msgstr "Kunde inte ta bort {title}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted är en server för Gobby, en kollaborativ textredigerare." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3065,11 +3070,11 @@ msgstr "" ", desktop client och installera det. Starta sedan Gobby och välj " "\"Anslut till server\" och ange ditt {box_name} domännamn." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "Infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Gobby-Server" @@ -3090,7 +3095,7 @@ msgstr "" "Starta Gobby och välj \"Anslut till server\" och ange ditt {box_name} " "domännamn." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3098,11 +3103,11 @@ msgstr "" "JSXC är en webbklient för XMPP. Vanligtvis används den med en XMPP-server " "som körs lokalt." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Chat klient" @@ -3111,7 +3116,7 @@ msgstr "Chat klient" msgid "JavaScript license information" msgstr "JavaScript-licensinformation" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3126,7 +3131,7 @@ msgstr "" "domän. Detta sker genom att den bevisar sig vara ägare till en domän för " "Let's Encrypt, en auktoriserad certifikatutfärdare ." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3138,15 +3143,15 @@ msgstr "" "Läs igenom och acceptera Let's Encrypt användaravtal innan du använder denna tjänst." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Låt oss kryptera" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Certifikaterna" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "Kan inte testa: Inga domäner är konfigurerade." @@ -3251,7 +3256,7 @@ msgstr "Certifikatet framgångsrikt återkallat för domänen {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Det gick inte att ta bort certifikatet för domänen {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3268,7 +3273,7 @@ msgstr "" "fungera. Användare på en given Matrix-server kan samtala med användare på " "alla andra Matrix-servrar via federation." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3277,7 +3282,7 @@ msgstr "" "Matrix Synapse behöver en STUN/TURN-server för ljud-/videosamtal. Installera " "Coturn-appen eller konfigurera en extern server." -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3372,7 +3377,7 @@ msgstr "" "certifikat. Gå till Let's Encrypt för " "att få en sådan." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3384,7 +3389,7 @@ msgstr "" "kan använda Media att vara värd för en wiki-liknande webbplats, göra " "anteckningar eller samarbeta med vänner på projekt." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3398,7 +3403,7 @@ msgstr "" "fler användarkonton från MediaWiki själv genom att gå till Special: Skapa konto sida." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3406,12 +3411,12 @@ msgstr "" "Alla som har en länk till denna wiki kan läsa den. Endast användare som är " "inloggade kan göra ändringar i innehållet." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3504,7 +3509,7 @@ msgstr "Standardskal ändrat" msgid "Server URL updated" msgstr "Serverns URL har uppdaterats" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3517,11 +3522,11 @@ msgstr "" "(30000). För att ansluta till servern, en Minetest klient behövs." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Block sandbox" @@ -3592,7 +3597,7 @@ msgstr "PVP-konfiguration uppdaterad" msgid "Damage configuration updated" msgstr "Skadekonfiguration uppdaterad" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3609,15 +3614,15 @@ msgstr "" "certifiering som bärbara mediaspelare, smartphones, TV-apparater och " "spelsystem (såsom PS3 och Xbox 360) eller applikationer som totem och Kodi." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Media Streaming Server" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Enkel mediaserver" @@ -3662,7 +3667,7 @@ msgstr "Den angivna katalogen finns inte." msgid "Updated media directory" msgstr "Uppdaterad mediekatalog" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3672,7 +3677,7 @@ msgstr "" "stora filer. Det kan delta i flera peer-to-peer-nätverk, inklusive eDonkey, " "Kademlia, Overnet, BitTorrent och DirectConnect." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3683,23 +3688,23 @@ msgstr "" "någon av de separata mobil-eller skrivbords frontend-ändarna eller ett " "Telnet-gränssnitt. Se manualen." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" "På {box_name}, kan nedladdade filer hittas i /var/lib/mldonkey/ mappen." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Ladda ner filer med eDonkey program" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "Mldonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Peer-to-peer fildelning" @@ -3711,7 +3716,7 @@ msgstr "KML Donkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3731,7 +3736,7 @@ msgstr "" "Se " "Monkeysphere SSH dokumentation för mer information." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3749,7 +3754,7 @@ msgstr "" "program som finns på Monkeyshere webbsida." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3768,6 +3773,10 @@ msgstr "Avbryt" msgid "Service" msgstr "Tjänst" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domäner" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3873,7 +3882,7 @@ msgstr "Publicerade nyckeln till nyckelserver." msgid "Error occurred while publishing key." msgstr "Fel uppstod när nyckeln publicerades." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3881,7 +3890,7 @@ msgstr "" "Mumble är ett program för röstchatt med öppen källkod, låg latens, " "kryptering och hög ljudkvalitet." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3891,11 +3900,11 @@ msgstr "" "\"http://mumble.info\"> Appar finns för att ansluta till Mumble från din " "dator- och Android-enheter." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Röstchatt" @@ -3924,7 +3933,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "SuperUser lösenord har uppdaterats." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3937,7 +3946,7 @@ msgstr "" "typ av namn visas om HTTP-, HTTPS-och SSH-tjänsterna är aktiverade eller " "inaktiverade för inkommande anslutningar via det angivna namnet." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Namntjänster" @@ -3953,7 +3962,7 @@ msgstr "Alla webbappar" msgid "Services" msgstr "Tjänster" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3961,7 +3970,7 @@ msgstr "" "Konfigurera nätverksenheter. Anslut till Internet via Ethernet, Wi-Fi eller " "PPPoE. Dela den anslutningen med andra enheter i nätverket." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3969,11 +3978,11 @@ msgstr "" "Enheter som administreras via andra metoder kanske inte är tillgängliga för " "konfiguration här." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Nätverk" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Använder DNSSEC på IPv{kind}" @@ -4528,7 +4537,7 @@ msgstr "DNS-Server" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Standard" @@ -4541,7 +4550,7 @@ msgid "This connection is not active." msgstr "Den här anslutningen är inte aktiv." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Säkerhet" @@ -5029,7 +5038,7 @@ msgstr "generisk" msgid "TUN or TAP interface" msgstr "TUN- eller TAP-gränssnitt" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5120,7 +5129,7 @@ msgstr "Anslutning {name} borttagen." msgid "Failed to delete connection: Connection not found." msgstr "Det gick inte att ta bort anslutning: Anslutning hittades inte." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5137,20 +5146,20 @@ msgstr "" "tillhandahålls av {box_name}. Du kan också komma åt resten av Internet via " "{box_name} för ökad säkerhet och anonymitet." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "Ansluta till VPN-tjänster" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuellt privat nätverk" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5231,7 +5240,7 @@ msgstr "" msgid "Download my profile" msgstr "Ladda ner min profil" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5244,18 +5253,18 @@ msgstr "" "tjänster inte kan nås från resten av Internet. Detta inkluderar följande " "situationer:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} är bakom en begränsad brandvägg." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} är anslutet till en (trådlös) router som du inte kontrollerar." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5263,7 +5272,7 @@ msgstr "" "Din ISP ger dig inte en extern IP-adress och ger istället Internet " "uppkoppling via NAT." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5271,11 +5280,11 @@ msgstr "" "Din ISP ger dig inte en statisk IP-adress och din IP-adress ändras varje " "gång du ansluter till Internet." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Din ISP begränsar inkommande anslutningar." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5289,15 +5298,15 @@ msgstr "" "pagekite. net . I framtiden kan det vara möjligt att använda din kompis " "{box_name} för detta." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Offentlig Synlighet" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "PageKite domän" @@ -5444,12 +5453,12 @@ msgstr "" "Se SSH-klientinstallation instruktioner" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Prestanda" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5460,7 +5469,7 @@ msgstr "" "användningsmönster och om hårdvaran är överbelastad av användare och " "tjänster." -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5468,15 +5477,15 @@ msgstr "" "Prestandamätvärden samlas in av Performance Co-Pilot och kan visas med " "Cockpit-appen." -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Systemövervakning" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Starta om eller stänga av systemet." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Ström" @@ -5539,7 +5548,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Stäng av nu" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5549,7 +5558,7 @@ msgstr "" "för att förbättra sekretessen, ändra webbsidan data och HTTP-huvuden, " "kontrollera åtkomst och ta bort annonser och andra avskyvärda Internet Junk. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5564,20 +5573,20 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ eller http://p.p." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Webbproxy" -#: plinth/modules/privoxy/__init__.py:120 +#: 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}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5594,7 +5603,7 @@ msgstr "" "quassel-klienter från ett skrivbord eller en mobil kan användas för att " "ansluta och koppla från den." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your Desktop och mobila-enheter är tillgängliga." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "IRC-klient" @@ -5618,7 +5627,7 @@ msgstr "IRC-klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5633,7 +5642,7 @@ msgstr "" "clients\">stöds klientprogram. Radicale kan nås av alla användare med en " "{box_name} inloggning." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5643,12 +5652,12 @@ msgstr "" "skapandet av nya kalendrar och adressböcker. Det stöder inte att lägga till " "händelser eller kontakter, som måste göras med hjälp av en separat klient." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Kalender och adressbok" @@ -5729,7 +5738,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Konfiguration av åtkomsträttigheter uppdaterad" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5741,7 +5750,7 @@ msgstr "" "förväntar dig från en e-postklient, inklusive MIME-stöd, adressbok, " "mappmanipulering, meddelande sökning och stavningskontroll." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5755,7 +5764,7 @@ msgstr "" "kryptering (rekommenderas), fyll server fält som imaps://imap.exempel." "kom." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5771,11 +5780,11 @@ msgstr "" "security/lesssecureapps\" >https://www.Google.com/settings/Security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "E-postklient" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5783,7 +5792,7 @@ msgstr "" "Samba gör det möjligt att dela filer och mappar mellan FreedomBox och andra " "datorer i ditt lokala nätverk." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5796,11 +5805,11 @@ msgstr "" "\\{hostname} (på Windows) eller SMB://{hostname}. local (på Linux och Mac). " "Det finns tre typer av shares som du kan välja mellan: " -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "Öppen delning - tillgänglig för alla i ditt lokala nätverk." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5808,7 +5817,7 @@ msgstr "" "Gruppdelning - endast tillgänglig för FreedomBox-användare som ingår i " "freedombox-delningsgruppen." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5816,15 +5825,15 @@ msgstr "" "Hemdelning - varje användare i gruppen freedombox-share kan ha sitt eget " "privata utrymme." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Tillgång till de privata shares" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Nätverk För Fillagring" @@ -5910,11 +5919,11 @@ msgstr "Åtgärder" msgid "FreedomBox OS disk" msgstr "FreedomBox OS-disk" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Öppna Share" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Grupp Share" @@ -5940,7 +5949,7 @@ msgstr "Share resurs inaktiverat." msgid "Error disabling share: {error_message}" msgstr "Fel vid inaktivering av resurs: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5948,7 +5957,7 @@ msgstr "" "Searx är en sekretess-respektera Internet metasökning motor. Det aggregrates " "och visar resultat från flera sökmotorer." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -5956,15 +5965,15 @@ msgstr "" "Searx kan användas för att undvika spårning och profilering av sökmotorer. " "Den lagrar inga cookies som standard." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Sök på webben" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Webbsökning" @@ -6144,11 +6153,11 @@ msgstr "Fel vid inställning av begränsad åtkomst: {exception}" msgid "Updated security configuration" msgstr "Uppdaterad säkerhetskonfiguration" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli kan du spara och dela bokmärken." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6156,15 +6165,15 @@ msgstr "" "Observera att Shaarli endast stöd för ett enskilt användarkonto, som du " "behöver för att ställa den första besök." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Bokmärken" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6174,7 +6183,7 @@ msgstr "" "Internet-trafik. Det kan användas för att kringgå Internetfiltrering och " "censur." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6187,7 +6196,7 @@ msgstr "" "enheter kan ansluta till denna proxy och deras data kommer att krypteras och " "proxied via Shadowsocks-servern." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6195,11 +6204,11 @@ msgstr "" "Till använda Shadowsocks efter setup, sätta den SOCKS5 genom fullmakt URL i " "din anordning, beter eller applicering till http://freedombox_address: 1080/" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Socks5 proxy" @@ -6229,7 +6238,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "Krypteringsmetod. Måste matcha inställningen på servern." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6335,7 +6344,7 @@ msgstr "Redigera share" msgid "Share deleted." msgstr "Share borttagen." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6345,7 +6354,7 @@ msgstr "" "Dessa kan användas för att återställa systemet till ett tidigare känt skick " "i händelse av oönskade ändringar i systemet." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6356,7 +6365,7 @@ msgstr "" "även före och efter en programvaruinstallation. Äldre ögonblicksbilder " "kommer att rensas automatiskt enligt inställningarna nedan." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for säkerhetskopior eftersom de bara kan lagras på " "samma partition. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Ögonblicksbilder av lagring" @@ -6572,7 +6581,7 @@ msgstr "Systemet måste startas om för att slutföra återställningen." msgid "Rollback to Snapshot" msgstr "Återställning till ögonblicksbild" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6584,7 +6593,7 @@ msgstr "" "administrativa uppgifter, kopiera filer eller köra andra tjänster med sådana " "anslutningar." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell-Server (SSH)" @@ -6630,7 +6639,7 @@ msgstr "SSH-autentisering med lösenord inaktiverat." msgid "SSH authentication with password enabled." msgstr "SSH-autentisering med lösenord aktiverat." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Enkel inloggning på" @@ -6638,7 +6647,7 @@ msgstr "Enkel inloggning på" msgid "Login" msgstr "Logga in" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6649,106 +6658,106 @@ msgstr "" "{box_name}. Du kan visa lagringsmedia som för närvarande används, montera " "och demontera flyttbara media, expandera rotpartitionen etc." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Lagring" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} Kib" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Mib" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Gib" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Tib" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Åtgärden misslyckades." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Operationen avbröts." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Enheten lossnar redan." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "Åtgärden stöds inte på grund av saknade drivrutiner/verktygsstöd." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "Åtgärden orsakade timeout." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Åtgärden skulle väcka en disk som är i ett djupviloläge." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Försöker avmontera en enhet som är upptagen." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "Operationen har redan avbrutits." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "Inte behörig att utföra den begärda åtgärden." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Enheten är redan monterad." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Enheten är inte monterad." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "Inte tillåtet att använda det begärda alternativet." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Enheten monteras av en annan användare." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Lågt utrymme på systempartitionen: {percent_used}% används, {free_space} " "fritt." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Lågt diskutrymme" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "Diskfel förestående" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6757,39 +6766,39 @@ msgstr "" "Disk {id} rapporterar att den sannolikt kommer att misslyckas inom en snar " "framtid. Kopiera all data medan du fortfarande kan och byt ut enheten." -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Ogiltigt katalognamn." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Katalogen finns inte." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Sökvägen är inte en katalog." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "Katalogen är inte läsbar av användaren." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "Katalogen är inte skrivbar av användaren." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Katalog" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Underkatalog (valfritt)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Share" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Annan katalog (specificera nedan)" @@ -6872,7 +6881,7 @@ msgstr "Enheten kan kopplas ur på ett säkert sätt." msgid "Error ejecting device: {error_message}" msgstr "Fel mata ut enhet: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6884,7 +6893,7 @@ msgstr "" "filer på en enhet kommer att replikeras automatiskt på alla andra enheter " "som också kör Syncthing." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6903,20 +6912,20 @@ msgstr "" "{box_name} är endast tillgängligt för användare som tillhör gruppen \"admin" "\" eller \"syncthing-access\"." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Administrera Syncthing-program" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Filsynkronisering" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6928,7 +6937,7 @@ msgstr "" "av lagringsnoder. Även om vissa noder misslyckas, kan dina filer hämtas från " "de återstående noderna." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6939,11 +6948,11 @@ msgstr "" "standard. Ytterligare introducerare kan läggas till, vilket kommer att " "introducera den här noden till andra lagringsnoder." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Distribuerad fillagring" @@ -6982,7 +6991,7 @@ msgstr "Anslutna introducerare" msgid "Remove" msgstr "Ta bort" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6996,40 +7005,40 @@ msgstr "" "använder TOR Browser." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Tor Onion service" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Tor SOCKS-proxy" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Tor relä port tillgänglig" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registrerad" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registrerad" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tillgång URL {url} på TCP {kind} via Tor" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekräfta Tor-användning vid {url} på TCP {kind}" @@ -7179,13 +7188,17 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "En Tor SOCKS-port finns på din %(box_name)s på TCP-port 9050." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Instänllningar oförändrade" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission är en BitTorrentklient som inkluderar ett Webbaserat " "användargränssnitt." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7193,16 +7206,16 @@ msgstr "" "BitTorrent är ett peer-to-peer-fildelningsprotokoll. Observera att " "BitTorrent inte är anonym." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "Vänligen ändra inte standardporten för transmissionsdemonen." -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7212,7 +7225,7 @@ msgstr "" "utformats för att läsa nyheter från vilken plats som helst, samtidigt som du " "känner dig så nära en riktig stationär applikation som möjligt." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any användare med en {box_name} login." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7229,15 +7242,15 @@ msgstr "" "När du använder en mobil eller stationär applikation för Tiny Tiny RSS, " "Använd URL/tt-rss-app/\" för att ansluta." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Läsa och prenumerera på nyhetsflöden" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Läsare för nyhetsflödet" @@ -7245,13 +7258,13 @@ msgstr "Läsare för nyhetsflödet" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Sök efter och installera de senaste program-och säkerhetsuppdateringarna." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7264,7 +7277,7 @@ msgstr "" "systemet bedöms vara nödvändigt, det sker automatiskt vid 02:00 orsakar alla " "apps för att vara tillgängligt en kort stund." -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7491,7 +7504,7 @@ msgstr "Det gick inte att starta uppgraderingen." msgid "Frequent feature updates activated." msgstr "Frekventa funktionsuppdateringar aktiverade." -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7502,7 +7515,7 @@ msgstr "" "ett användarkonto för att vara en del av en grupp för att auktorisera " "användaren att komma åt appen." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7513,15 +7526,15 @@ msgstr "" "över appar som är relevanta för dem på startsidan. Endast användare av " "gruppen admin kan dock ändra appar eller Systeminställningar." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Användare och grupper" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Tillgång till alla tjänster och Systeminställningar" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrollera LDAP-posten \"{search_item}\"" @@ -7768,11 +7781,11 @@ msgstr "Ändra lösenord" msgid "Password changed successfully." msgstr "Lösenordet har ändrats." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard är en snabb, modern, säker VPN-tunnel." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7781,7 +7794,7 @@ msgstr "" "Den kan användas för att ansluta till en VPN-leverantör som stöder WireGuard " "och för att dirigera all utgående trafik från {box_name} via VPN." -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8101,7 +8114,7 @@ msgstr "Ta bort anslutning till server" msgid "Server deleted." msgstr "Servern har tagits bort." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8115,7 +8128,7 @@ msgstr "" "med hjälp av teman. Administrationsgränssnittet och producerade webbsidor är " "lämpliga för mobila enheter." -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8129,7 +8142,7 @@ msgstr "" "administratörsgränssnittet för bättre webbadresser till dina sidor och " "inlägg." -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " @@ -8140,7 +8153,7 @@ msgstr "" "sidan som ett bokmärke för att nå administrationsgränssnittet i " "framtiden." -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " @@ -8150,12 +8163,12 @@ msgstr "" "databasuppgradering från administratörsgränssnittet. Ytterligare plugins " "eller teman kan installeras och uppgraderas på egen risk." -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "Webbplats och blogg" @@ -8172,7 +8185,7 @@ msgstr "" "WordPress-webbplatsen eller bloggen. Aktivera endast efter den första " "installationen av WordPress." -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8193,7 +8206,7 @@ msgstr "" "på en plats med hjälp av sök-, kart- och kalendervyer. Enskilda foton kan " "delas med andra genom att skicka en direktlänk." -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8204,11 +8217,11 @@ msgstr "" "i Zoph. För ytterligare användare måste konton skapas både i {box_name} och " "i Zoph med samma användarnamn." -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "Foto Organizer" @@ -8246,23 +8259,23 @@ msgstr "Pppoe" msgid "Generic" msgstr "Generiska" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Fel vid installation" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "Installera" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "ladda ner" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "Mediabyte" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -8638,6 +8651,12 @@ msgstr "%(percentage)s %% färdigt" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Postfix domain name config" +#~ msgstr "Konfiguration av Postfix domännamn" + +#~ msgid "Error updating configuration" +#~ msgstr "Fel vid uppdatering av konfiguration" + #~ msgid "The alias was taken" #~ msgstr "Aliasnamnet togs" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index 07a35e3d6..5e1cd14e7 100644 --- a/plinth/locale/ta/LC_MESSAGES/django.po +++ b/plinth/locale/ta/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:81 +#: plinth/context_processors.py:23 plinth/views.py:84 msgid "FreedomBox" msgstr "" @@ -31,22 +31,22 @@ msgstr "" msgid "Service {service_name} is running" msgstr "" -#: plinth/daemon.py:131 +#: plinth/daemon.py:158 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/daemon.py:135 +#: plinth/daemon.py:162 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/daemon.py:203 +#: plinth/daemon.py:230 #, python-brace-format msgid "Connect to {host}:{port}" msgstr "" -#: plinth/daemon.py:205 +#: plinth/daemon.py:232 #, python-brace-format msgid "Cannot connect to {host}:{port}" msgstr "" @@ -85,31 +85,31 @@ msgstr "" msgid "Use the language preference set in the browser" msgstr "" -#: plinth/middleware.py:36 plinth/templates/setup.html:18 +#: plinth/middleware.py:38 plinth/templates/setup.html:18 msgid "Application installed." msgstr "" -#: plinth/middleware.py:41 +#: plinth/middleware.py:43 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "" -#: plinth/middleware.py:45 +#: plinth/middleware.py:47 #, python-brace-format msgid "Error installing application: {error}" msgstr "" -#: plinth/modules/apache/__init__.py:42 +#: plinth/modules/apache/__init__.py:33 msgid "Apache HTTP Server" msgstr "" -#: plinth/modules/apache/__init__.py:48 +#: plinth/modules/apache/__init__.py:41 #: plinth/modules/monkeysphere/templates/monkeysphere.html:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:46 msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:54 +#: plinth/modules/apache/__init__.py:47 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -124,7 +124,7 @@ msgstr "" msgid "Access URL {url}" msgstr "" -#: plinth/modules/avahi/__init__.py:36 +#: plinth/modules/avahi/__init__.py:26 #, python-brace-format msgid "" "Service discovery allows other devices on the network to discover your " @@ -135,48 +135,48 @@ msgid "" "network." msgstr "" -#: plinth/modules/avahi/__init__.py:60 +#: plinth/modules/avahi/__init__.py:51 msgid "Service Discovery" msgstr "" -#: plinth/modules/avahi/__init__.py:73 +#: plinth/modules/avahi/__init__.py:64 msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:35 +#: plinth/modules/backups/__init__.py:27 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:56 plinth/modules/backups/__init__.py:208 -#: plinth/modules/backups/__init__.py:253 +#: plinth/modules/backups/__init__.py:50 plinth/modules/backups/__init__.py:202 +#: plinth/modules/backups/__init__.py:247 msgid "Backups" msgstr "" -#: plinth/modules/backups/__init__.py:205 +#: plinth/modules/backups/__init__.py:199 msgid "" "Enable an automatic backup schedule for data safety. Prefer an encrypted " "remote backup location or an extra attached disk." msgstr "" -#: plinth/modules/backups/__init__.py:211 +#: plinth/modules/backups/__init__.py:205 msgid "Enable a Backup Schedule" msgstr "" -#: plinth/modules/backups/__init__.py:215 -#: plinth/modules/backups/__init__.py:262 -#: plinth/modules/storage/__init__.py:331 +#: plinth/modules/backups/__init__.py:209 +#: plinth/modules/backups/__init__.py:256 +#: plinth/modules/storage/__init__.py:329 #, python-brace-format msgid "Go to {app_name}" msgstr "" -#: plinth/modules/backups/__init__.py:250 +#: plinth/modules/backups/__init__.py:244 #, python-brace-format msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " "succeed. The latest error is: {error_message}" msgstr "" -#: plinth/modules/backups/__init__.py:258 +#: plinth/modules/backups/__init__.py:252 msgid "Error During Backup" msgstr "" @@ -693,7 +693,7 @@ msgstr "" msgid "Mounting failed" msgstr "" -#: plinth/modules/bepasty/__init__.py:25 +#: plinth/modules/bepasty/__init__.py:21 msgid "" "bepasty is a web application that allows large files to be uploaded and " "shared. Text and code snippets can also be pasted and shared. Text, image, " @@ -701,7 +701,7 @@ msgid "" "can be set to expire after a time period." msgstr "" -#: plinth/modules/bepasty/__init__.py:29 +#: plinth/modules/bepasty/__init__.py:25 msgid "" "bepasty does not use usernames for login. It only uses passwords. For each " "password, a set of permissions can be selected. Once you have created a " @@ -709,7 +709,7 @@ msgid "" "permissions." msgstr "" -#: plinth/modules/bepasty/__init__.py:33 +#: plinth/modules/bepasty/__init__.py:29 msgid "" "You can also create multiple passwords with the same set of privileges, and " "distribute them to different people or groups. This will allow you to later " @@ -717,39 +717,39 @@ msgid "" "the list." msgstr "" -#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +#: plinth/modules/bepasty/__init__.py:38 plinth/modules/bepasty/__init__.py:47 msgid "Read a file, if a web link to the file is available" msgstr "" -#: plinth/modules/bepasty/__init__.py:43 +#: plinth/modules/bepasty/__init__.py:39 msgid "Create or upload files" msgstr "" -#: plinth/modules/bepasty/__init__.py:44 +#: plinth/modules/bepasty/__init__.py:40 msgid "List all files and their web links" msgstr "" -#: plinth/modules/bepasty/__init__.py:45 +#: plinth/modules/bepasty/__init__.py:41 msgid "Delete files" msgstr "" -#: plinth/modules/bepasty/__init__.py:46 +#: plinth/modules/bepasty/__init__.py:42 msgid "Administer files: lock/unlock files" msgstr "" -#: plinth/modules/bepasty/__init__.py:50 +#: plinth/modules/bepasty/__init__.py:46 msgid "None, password is always required" msgstr "" -#: plinth/modules/bepasty/__init__.py:52 +#: plinth/modules/bepasty/__init__.py:48 msgid "List and read all files" msgstr "" -#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:6 +#: plinth/modules/bepasty/__init__.py:63 plinth/modules/bepasty/manifest.py:6 msgid "bepasty" msgstr "" -#: plinth/modules/bepasty/__init__.py:67 +#: plinth/modules/bepasty/__init__.py:65 msgid "File & Snippet Sharing" msgstr "" @@ -846,9 +846,10 @@ msgstr "" msgid "Configuration updated." msgstr "" -#: plinth/modules/bepasty/views.py:93 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 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: 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 msgid "An error occurred during configuration." msgstr "" @@ -864,13 +865,13 @@ msgstr "" msgid "Password deleted." msgstr "" -#: plinth/modules/bind/__init__.py:31 +#: plinth/modules/bind/__init__.py:25 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." msgstr "" -#: plinth/modules/bind/__init__.py:35 +#: plinth/modules/bind/__init__.py:29 #, python-brace-format msgid "" "Currently, on {box_name}, BIND is only used to resolve DNS queries for other " @@ -878,11 +879,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:80 +#: plinth/modules/bind/__init__.py:76 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:81 +#: plinth/modules/bind/__init__.py:77 msgid "Domain Name Server" msgstr "" @@ -935,7 +936,7 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:214 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 #: 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 @@ -944,7 +945,7 @@ msgstr "" msgid "Configuration updated" msgstr "" -#: plinth/modules/calibre/__init__.py:32 +#: plinth/modules/calibre/__init__.py:26 #, python-brace-format msgid "" "calibre server provides online access to your e-book collection. You can " @@ -952,7 +953,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/calibre/__init__.py:35 +#: plinth/modules/calibre/__init__.py:29 msgid "" "You can organize your e-books, extract and edit their metadata, and perform " "advanced search. calibre can import, export, or convert across a wide range " @@ -961,21 +962,21 @@ msgid "" "highlighted text. Content distribution using OPDS is currently not supported." msgstr "" -#: plinth/modules/calibre/__init__.py:41 +#: plinth/modules/calibre/__init__.py:35 msgid "" "Only users belonging to calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1047,7 +1048,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1056,7 +1057,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1064,25 +1065,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1094,17 +1095,17 @@ msgstr "" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1113,7 +1114,7 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1227,7 +1228,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1235,7 +1236,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1702,7 +1702,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1729,13 +1729,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1847,30 +1847,26 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1903,46 +1899,56 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1951,7 +1957,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1969,7 +1975,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "" @@ -1994,43 +2000,28 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2038,7 +2029,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2145,7 +2136,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2156,21 +2147,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2282,31 +2273,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2531,7 +2522,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2539,31 +2530,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2600,14 +2591,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2616,15 +2607,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2701,11 +2692,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2713,11 +2704,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2736,17 +2727,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2755,7 +2746,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2765,7 +2756,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2773,15 +2764,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2882,7 +2873,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2892,14 +2883,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -2970,7 +2961,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2978,7 +2969,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2987,18 +2978,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3080,7 +3071,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3089,11 +3080,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3159,7 +3150,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3170,15 +3161,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3218,36 +3209,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3259,7 +3250,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3271,7 +3262,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3282,7 +3273,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3301,6 +3292,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3404,24 +3399,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3447,7 +3442,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3456,7 +3451,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3472,23 +3467,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3956,7 +3951,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -3969,7 +3964,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4410,7 +4405,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4499,7 +4494,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4510,20 +4505,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4587,7 +4582,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4596,33 +4591,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4631,15 +4626,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4773,33 +4768,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4852,14 +4847,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4869,20 +4864,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4893,7 +4888,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4913,7 +4908,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4923,19 +4918,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5002,7 +4997,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5010,7 +5005,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5019,7 +5014,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5029,17 +5024,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5048,31 +5043,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5150,11 +5145,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5180,27 +5175,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5355,32 +5350,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5389,17 +5384,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5428,7 +5423,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5528,14 +5523,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5543,14 +5538,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5740,7 +5735,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5748,7 +5743,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5789,7 +5784,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5797,7 +5792,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5805,143 +5800,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6016,7 +6011,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6024,7 +6019,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6036,20 +6031,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6057,7 +6052,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6065,11 +6060,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6104,7 +6099,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6113,40 +6108,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6272,54 +6267,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6327,12 +6326,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6340,7 +6339,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6536,14 +6535,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6551,15 +6550,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6785,18 +6784,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7090,7 +7089,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7099,7 +7098,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7108,26 +7107,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7141,7 +7140,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7154,7 +7153,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7162,11 +7161,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7200,23 +7199,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index 0a7d8050e..84f59729d 100644 --- a/plinth/locale/te/LC_MESSAGES/django.po +++ b/plinth/locale/te/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-05-17 18:31+0000\n" "Last-Translator: chilumula vamshi krishna \n" "Language-Team: Telugu calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "" @@ -1139,7 +1140,7 @@ msgstr "{name} తొలగించబడింది." msgid "Could not delete {name}: {error}" msgstr "{name} ను తొలగించలేము: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1151,7 +1152,7 @@ msgstr "" "చేస్తుంది. ఈ {box_name},లొ సాధారణంగా అవసరం లేని అనేక ఆధునిక ఫంక్షన్లకు నియంత్రణలు అందుబాటులో " "ఉన్నాయి.కన్సోల్ ఆపరేషన్లకు వెబ్ ఆధారిత టెర్మినల్ కూడా అందుబాటులో ఉంది." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1159,7 +1160,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -1176,18 +1177,18 @@ msgstr "" "ద్వారా పొందవచ్చు {box_name}.\n" "అంగీకార సమాచారం మరియు సిస్టమ్ మార్చడం సామర్ధ్యాలు నిర్వాహక సమూహం చెందిన వినియోగదారులకు పరిమితం." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "కాక్పిట్" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "సేవిక పరిపాలన" @@ -1201,17 +1202,17 @@ msgstr "ప్రాప్తి సూచి" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "సాధారణ ఆకృతీకరణ" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1220,7 +1221,7 @@ msgstr "సాధారణ ఆకృతీకరణ" msgid "Configure" msgstr "ఆకృతీకరణ" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1345,7 +1346,7 @@ msgstr "అధునాతన అనువర్తనాలు మరియు msgid "Hiding advanced apps and features" msgstr "అధునాతన అనువర్తనాలు మరియు విశేషాంశాలు దాచబడుతున్నాయి" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1353,7 +1354,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "మీరు ఒక ఉచిత డైనమిక్ DNS ఖాతా కోసం చూస్తున్న ఉంటే, మీరు 1gnudip.datasystems24.net 2 వద్ద ఉచిత " @@ -1891,7 +1903,7 @@ msgstr "" msgid "Last update" msgstr "చివరి నవీకరణ" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "గురించి" @@ -1918,7 +1930,7 @@ msgstr "చురుకైనDNS ఆకృతీకరించు" msgid "Dynamic DNS Status" msgstr "చలనశీల డి.ఎన్.ఎస్ స్థితి" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1926,7 +1938,7 @@ msgstr "" "XMPP ఓపెన్ మరియు ప్రామాణికమైన కమ్యూనికేషన్ ప్రోటోకాల్. ఇక్కడ మీరు మీ XMPP సర్వర్ ని రూపకరణ మరియు " "అమలు చేయగలరు ejabberd అని ఆకృతీకరించవచ్చు." -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the web client or any other XMPP క్లయింట్ ఉపయోగించవచ్చు." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ఈజాబ్బర్డి" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "కబుర్ల సేవిక" @@ -2058,34 +2070,28 @@ msgstr "" "కనిపిస్తాయి \n" "మీరు మీ డొమైన్ను kaanfigar పేజీలో సెటప్ చేయవచ్చు." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Chat Server" msgid "Email Server" msgstr "కబుర్ల సేవిక" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "అధికారక్షేత్రం పేరు అమర్పులోపం: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2122,54 +2128,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "ధృవీకరణ పత్రం లేదు" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "సేవిక పేరు చెలదు" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "సేవిక పేరు చెలదు" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "డొమైన్" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Create User" msgid "Aliases" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "క్రియాశీలం" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2178,7 +2196,7 @@ msgid "Disabled" msgstr "నిలిపివేయబడింది" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "రౌండ్ క్యూబ్" @@ -2198,7 +2216,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Create User" msgid "Manage Aliases" @@ -2231,49 +2249,32 @@ msgstr "క్రొత్త బ్యాకప్‌ను సృష్టి msgid "Add" msgstr "జోడించు" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "డొమైన్లు" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Storage Snapshots" msgid "Manage Spam" msgstr "నిల్వ దృశ్యములు" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "సేవా రకం" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "మారకుండా అమర్చుతోంది" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2283,7 +2284,7 @@ msgstr "" "ఫైర్వాల్ అనేది మీ {box_name}కు జరిగే రవాణా రాకపోకలను నియంత్రించే ఒక భద్రతా వ్యవస్థ. దీనిని అనుమతించి " "సరిగా ఆకృతీకరిస్తే అంతర్జాలం నుంచి భద్రతా ముప్పు తగ్గుతుంది." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "ఫైర్వాల్" @@ -2399,7 +2400,7 @@ msgstr "అమరికను ప్రారంభించు" msgid "Setup Complete" msgstr "అమరక పూర్తయ్యింది" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2410,7 +2411,7 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 #, fuzzy msgid "" "To learn more on how to use Git visit Git tutorial ని సందర్శించండి." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2569,11 +2570,11 @@ msgstr "రిపోజిటరీ సవరించబడింది." msgid "Edit repository" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "పత్రావళి" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2581,21 +2582,21 @@ msgctxt "User guide" msgid "Manual" msgstr "కరదీపిక" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "సహాయం పొందు" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "అభిప్రాయాన్ని సమర్పించండి" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2866,7 +2867,7 @@ msgstr "{box_name} గురించి" msgid "{box_name} Manual" msgstr "{box_name} కరదీపిక" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2874,7 +2875,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s వికీ ను దర్శించండి." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "అనువర్తనాన్ని చేతనించు" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "అజ్ఞాత జాలిక" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy msgid "I2P Proxy" msgstr "వెబ్ ప్రాక్సీ (Privoxy)" @@ -2944,7 +2945,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2961,7 +2962,7 @@ msgstr "" "ఎస్ ఫీడ్లు వంటి సాధారణ బ్లాగింగ్ కార్యాచరణకు సహకరిస్తుంది. దీన్ని ఆమోదించినప్పుడు మీ బ్లాగులు మరియు " "వికీలు /ikiwiki వద్ద అందుబాటులో ఉంటాయి(తయారుచేసిన తరువాత)." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, fuzzy, python-brace-format #| msgid "" #| "Only {box_name} users in the admin group can create and " @@ -2979,15 +2980,15 @@ msgstr "" "ఇప్పటికే ఉన్న వాటిని సవరించగలరు. వినియోగదారు " "ఆకృతీకరణ లో మీరు అనుమతులను మార్చవచ్చు లేదా క్రొత్త వినియోగదారులను చేర్చవచ్చు." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ఇకివికీ" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "వికీ మరియు బ్లాగ్" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "వికీ అనువర్తనాలను చూడండి మరియు మార్చండి" @@ -3067,11 +3068,11 @@ msgstr "{name} తొలగించబడింది." msgid "Could not delete {title}: {error}" msgstr "{title} ను తొలగించలేము: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "Gobby కోసం ఇన్ఫినోటెడ్ అనేది ఒక సర్వర్,ఒక సహకార టెక్స్ట్ ఎడిటర్." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3082,11 +3083,11 @@ msgstr "" "మరియు నిక్షిప్తం చెయుము. మొడటిగ గాబ్బి మరియు సెలెక్ట్ \"సర్వర్కు కనెక్ట్ చేయండి\" మరియు మీ ఎంటర్ చెయ్యండి " "{box_name}'s డొమైన్ పేరు." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "ఇన్ఫినోటెడ్" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "గాబ్బీ సేవకం" @@ -3107,18 +3108,18 @@ msgstr "" "గాబ్బీని ప్రారంభించి. \"సేవికకు కనెక్ట్ చేయండి\" ఎంచుకోండి మరియు మీ {box_name} యొక్క డొమైన్ పేరును " "నమోదు చేయండి." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" "JSXC XMPP కోసం ఒక వెబ్ కక్షిదారి. సాధారణంగా ఇది ఒక XMPP సర్వర్ స్థానికంగా అమలు చేయటానికి ఉపయోగిస్తారు." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "చాట్ క్లయింట్" @@ -3127,7 +3128,7 @@ msgstr "చాట్ క్లయింట్" msgid "JavaScript license information" msgstr "జావాస్క్రిప్ట్ లైసెన్స్ సమాచరం" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, fuzzy, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3141,7 +3142,7 @@ msgstr "" "కొరకు సెటప్ డిజిటల్ సర్టిఫికెట్లు చేయవచ్చు. ఇది ఎన్క్రిప్ట్ తెలపండి ఒక డొమైన్ యొక్క యజమాని, ధృవపత్ర (CA) " "ఉన్నట్లు రుజువు చేసుకుంటూ అవుతున్నారు." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 #, fuzzy msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " @@ -3154,15 +3155,15 @@ msgstr "" "\"https://letsencrypt.org/repository/\"> 1Let యొక్క ఎన్క్రిప్ట్ సబ్స్క్రయిబర్ ఒప్పందం 2 తో అంగీకరిస్తున్నారు." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "లెట్స్ ఎన్క్రిప్ట్" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "యోగ్యతాపత్రాలు" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3264,7 +3265,7 @@ msgstr "{domain} డోమైన్ కొరకు సర్టిఫికే msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} డోమైన్ కొరకు ధృవీకరణపత్రం నిర్మూలించడంలో విఫలం: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3274,14 +3275,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "మ్యాట్రిక్స్ సినాప్స్" @@ -3366,7 +3367,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3377,7 +3378,7 @@ msgstr "" "వెబ్సైటు నిర్మించే ఒక ఉపకరం. మీరు మీడియావికీని ఉపయోగించి ఒక వికీ లాంటి వెబ్సైటును ఏర్పాటు చేస్కుని మీ " "స్నేహితులతో సంయుక్తంగా నోట్స్ తీసుకొనవచ్చు." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3386,19 +3387,19 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" "ఈ వికీకి లింక్తో ఎవరైనా దానిని చదవగలరు. లాగిన్ చేయబడిన వినియోగదారులు మాత్రమే కంటెంట్కు మార్పులు చేయవచ్చు." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "మీడియావికీ" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "వికీ" @@ -3494,7 +3495,7 @@ msgstr "డిఫాల్ట్ చర్మం మార్చబడింద msgid "Server URL updated" msgstr "{name} తొలగించబడింది." -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3506,11 +3507,11 @@ msgstr "" "Minetest సర్వర్ ఈ {box_name} 1 అమలు సహకరిస్తుంది. సర్వర్కు కనెక్ట్ చెయ్యడానికి ఒక 2Minetest క్లైంట్ 3 అవసరమవుతుంది." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "మైన్ టెస్ట్" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "బ్లాక్ శాండ్‌బాక్స్‌" @@ -3596,7 +3597,7 @@ msgstr "ఆకృతీకరణ నవీకరించబడింది" msgid "Damage configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3607,15 +3608,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "సరళమైన మీడియా సేవిక" @@ -3655,38 +3656,38 @@ msgstr "నిర్దేశిత డైరెక్టరీ ఉనికి msgid "Updated media directory" msgstr "మీడియా డైరెక్టరీని నవీకరించబడింది" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" msgstr "బిట్ టోరెంట్ అనువర్తనాలను ఉపయోగించి ఫైళ్లను డౌన్లోడ్ చేయండి" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "ఎంఎల్ డాంకీ" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "పీర్-టు-పీర్ ఫైల్ షేరింగ్" @@ -3702,7 +3703,7 @@ msgstr "మంకీస్ఫియర్" msgid "AMLDonkey" msgstr "మంకీస్ఫియర్" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 #, fuzzy msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " @@ -3720,7 +3721,7 @@ msgstr "" "వినియోగదారులు కోసం, కనీసం ఒక వ్యక్తి (సాధారణంగా యంత్రం యజమాని) సాధారణ OpenPGP తాలమ్ సంతకం " "ప్రక్రియను ఉపయోగించి ప్రవేశ ద్వారం చేయాలి." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 #, fuzzy msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " @@ -3737,7 +3738,7 @@ msgstr "" "ధ్రువీకరించడానికి, వినియోగదారుడు " "1 Monkeysphere వెబ్సైట్ అందుబాటులో ఉంది కొన్ని సాఫ్ట్వేర్ ఇన్స్టాల్ చెయ్యాలి" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "మంకీస్ఫియర్" @@ -3756,6 +3757,10 @@ msgstr "రద్దుచేయి" msgid "Service" msgstr "సేవ" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "డొమైన్లు" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3861,7 +3866,7 @@ msgstr "కీ కీసేవకానికి ప్రచురించబ msgid "Error occurred while publishing key." msgstr "కీని ప్రచురించేటప్పుడు దోషం సంభవించింది." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3869,7 +3874,7 @@ msgstr "" "మంబుల్ అనేది తక్కువ-జాప్యత, ఎన్క్రిప్టెడ్, అధిక నాణ్యతా వంటి విశిష్టలతో కూడిన ఒక ఓపెన్ సోర్స్ స్వర సంభాషణా " "సాఫ్ట్‌వేర్." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 #, fuzzy msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. 1Clients 2 మీ నమలు సర్వర్ కనెక్ట్ చేయవచ్చు మరియు Android పరికరాలు " "అందుబాటులో ఉన్నాయి." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "మంబుల్" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "స్వర సంభాషణ" @@ -3914,7 +3919,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3923,7 +3928,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "పేరు సేవలు" @@ -3941,23 +3946,23 @@ msgstr "" msgid "Services" msgstr "సేవ" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "ఇతర పద్ధతుల ద్వారా నిర్వహించబడే పరికరాలు ఇక్కడ ఆకృతీకరణకు అందుబాటులో ఉండకపోవచ్చు." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "అల్లికలు" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "IPv{kind} పై DNSSEC ఉపయోగించు" @@ -4455,7 +4460,7 @@ msgstr "సేవిక" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "అప్రమేయం" @@ -4468,7 +4473,7 @@ msgid "This connection is not active." msgstr "ఈ అనుసంధానం చురుకుగాలేదు." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "భద్రత" @@ -4967,7 +4972,7 @@ msgstr "సాధారణమైన" msgid "TUN or TAP interface" msgstr "అంతర్ముఖం" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "వైర్గార్డ్" @@ -5065,7 +5070,7 @@ msgstr "{name} అనుసంధానం తొలగించబడింద msgid "Failed to delete connection: Connection not found." msgstr "అనుసంధానం తొలగించడం విఫలమైంది: అనుసంధానం దొరకలేదు." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, fuzzy, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5081,24 +5086,24 @@ msgstr "" "మిగిలిన ఇంటర్నెట్ను యాక్సెస్ చేయవచ్చు మీ {box_name} 1 అనుసంధానించవచ్చు అదనపు భద్రత మరియు " "అనామకత్వం కోసం." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "అనుసంధాన రకం" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "తెరచిన" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "వర్చువల్ ప్రైవేట్ నెట్వర్క్" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5170,7 +5175,7 @@ msgstr "ప్రొఫైల్ ప్రతి %(box_name)s వాడుకర msgid "Download my profile" msgstr "నా స్థూలవివరంల దిగుమతి" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, fuzzy, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5182,17 +5187,17 @@ msgstr "" "లేనప్పుడు కోసం ఒక వ్యవస్థ. మీ {box_name} 2 సేవలు ఇంటర్నెట్ మిగిలిన నుండి అందుబాటులో ఉంటే మీరు " "మాత్రమే ఈ అవసరం. ఈ క్రింది సందర్భాలలో కలిగి:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, fuzzy, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{Box_name} 1 నిరోధిత ఫైర్వాల్ వెనుక ఉంది." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, fuzzy, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{Box_name} 1 మీరు నియంత్రించే లేని ఒక (వైర్లెస్) రౌటర్ అనుసంధానించబడిన." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 #, fuzzy msgid "" "Your ISP does not provide you an external IP address and instead provides " @@ -5201,7 +5206,7 @@ msgstr "" "మీ ISP మీరు ఒక బాహ్య IP చిరునామా అందించడం లేదు మరియు బదులుగా NAT ద్వారా ఇంటర్నెట్ కనెక్షన్ " "అందిస్తుంది." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 #, fuzzy msgid "" "Your ISP does not provide you a static IP address and your IP address " @@ -5210,12 +5215,12 @@ msgstr "" "మీ ISP మీరు స్టాటిక్ IP చిరునామా అందించడం లేదు మరియు మీ IP చిరునామా మీరు ఇంటర్నెట్ కు కనెక్ట్ ప్రతి " "సమయ మార్పులు." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 #, fuzzy msgid "Your ISP limits incoming connections." msgstr "మీ ISP ఇన్కమింగ్ కనెక్షన్లను పరిమితం చేస్తుంది." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5234,18 +5239,18 @@ msgstr "" "ఉపయోగించడానికి 3 సాధ్యం కావచ్చు ఉదాహరణకు pagekite." "net కోసం, ఏ pagekite సేవా ప్రదాత ఉపయోగించవచ్చు." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 #, fuzzy #| msgid "Pagekite" msgid "PageKite" msgstr "పేజ్ కైట్" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 #, fuzzy msgid "Public Visibility" msgstr "పబ్లిక్ దృష్టి గోచరత (PageKite)" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 #, fuzzy msgid "PageKite Domain" msgstr "PageKite ఖాతా" @@ -5396,35 +5401,35 @@ msgstr "" "SSH క్లైంట్ సెటప్ చూడండి సూచనలు " -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" msgstr "వ్యవస్థ రూపశిల్పం" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "సిస్టమ్ ని పునఃప్రారంభించండి లేదా మూసివేయండి." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "శక్తి" @@ -5488,7 +5493,7 @@ msgstr "" msgid "Shut Down Now" msgstr "ఇపుడు మూసివేయండి" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5498,7 +5503,7 @@ msgstr "" "నియంత్రించడం మరియు ప్రకటనలను మరియు ఇతర చెడ్డ ఇంటర్నెట్ వ్యర్థాలను తొలగించడం కోసం ఆధునిక ఫిల్టరింగ్ " "సామర్థ్యాలతో ఒక కాని క్యాచింగ్ వెబ్ ప్రాక్సీ. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5512,20 +5517,20 @@ msgstr "" "డాక్యుమెంటేషన్ http://config.privoxy.org/ లేదా http://p.p లో చూడవచ్చు." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "ప్రివొక్సి" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "వెబ్ ప్రాక్సీ" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "టీసీపీ{kind} పై{proxy} తో యాక్సిస్ {url} చేయండి" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5536,7 +5541,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "క్వాసెల్" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "IRC క్లయింట్" @@ -5556,7 +5561,7 @@ msgstr "IRC క్లయింట్" msgid "Quasseldroid" msgstr "క్వాసెల్ డ్రొఇడ్" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, fuzzy, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5570,19 +5575,19 @@ msgstr "" "\"> supported client application అవసరం.\n" "రాడికల్ ఏ యూజర్ అయినా {box_name}లాగిన్ తో యాక్సెస్ చేయవచ్చు" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "రాడికేల్" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "క్యాలెండర్ మరియు అడ్రస్సు పుస్తకము" @@ -5660,7 +5665,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5671,7 +5676,7 @@ msgstr "" "ఇది MIME మద్దతు, చిరునామా పుస్తకం, ఫోల్డర్ తారుమారు, సందేశ శోధన మరియు అక్షరక్రమ తనిఖీ సహా ఒక " "ఇమెయిల్ క్లయింట్ నుండి మీరు పూర్తి కార్యాచరణను అందిస్తుంది." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5680,7 +5685,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5690,11 +5695,11 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "ఇమెయిల్ క్లయింట్" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5702,7 +5707,7 @@ msgstr "" "మీ స్థానిక నెట్‌వర్క్‌లోని ఫ్రీడమ్‌బాక్స్ మరియు ఇతర కంప్యూటర్ల మధ్య ఫైల్‌లు మరియు ఫోల్డర్‌లను పంచుకోవడానికి సాంబా " "అనుమతిస్తుంది." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5711,11 +5716,11 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "ఓపెన్ షేర్ - మీ స్థానిక నెట్‌వర్క్‌లోని ప్రతి ఒక్కరికీ అందుబాటులో ఉంటుంది." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5723,7 +5728,7 @@ msgstr "" "గ్రూప్ షేర్ - freedombox-share గ్రూపులో ఉన్న ఫ్రీడమ్‌బాక్స్ వినియోగదారులకు మాత్రమే అందుబాటులో " "ఉంటుంది." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5731,15 +5736,15 @@ msgstr "" "హోమ్ షేర్ - freedombox-share గ్రూపులో ఉన్న ప్రతి వినియోగదారుడు వారి స్వంత ప్రైవేట్ స్థలాన్ని కలిగి " "ఉంటారు." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "ప్రైవేటు షేర్లలో ప్రవేశం" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "సాంబా" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -5838,13 +5843,13 @@ msgstr "చర్యలు" msgid "FreedomBox OS disk" msgstr "ఫ్రీడమ్‌బాక్స్" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "సేవ జోడించండి" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5880,7 +5885,7 @@ msgstr "పంచుకోబడ్డ" msgid "Error disabling share: {error_message}" msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5888,7 +5893,7 @@ msgstr "" "సెర్క్స్ అనేది గోప్యతను గౌరవించే ఒక మెటా-శోధన ఇంజిన్. ఇది బహుళ శోధన ఇంజిన్ల నుండి ఫలితాలను సమీకరించి, " "ప్రదర్శిస్తుంది." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -5896,15 +5901,15 @@ msgstr "" "శోధన యంత్రాలు ద్వారా ట్రాకింగ్ మరియు ప్రొఫైలింగ్ను నివారించడానికి సెర్క్స్ ను ఉపయోగించవచ్చు. ఇది మాములుగా " "కుకీలను నిల్వ ఉంచుకోదు." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "అంతర్జాలమును శోధింపుము" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "సేర్క్స్" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "వెబ్ శోధన" @@ -6083,28 +6088,28 @@ msgstr "సమయమండలం అమర్పులోపం: {exception}" msgid "Updated security configuration" msgstr "సాధారణ ఆకృతీకరణ" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "రు బుక్మార్క్లు ని సేవ్ మరియు పంచుకొనుటకు షార్లి అనుమతిస్తుంది." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "షార్లి" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 #, fuzzy msgid "Bookmarks" msgstr "" "గుర్తుంచు\n" " (Shaarli)" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6113,7 +6118,7 @@ msgstr "" "షాడోసాక్స్ మీ ఇంటర్నెట్ ట్రాఫిక్ను రక్షించేందుకు రూపొందించబడిన ఒక తేలికైన మరియు సురక్షిత సాక్స్5 ప్రాక్సీ. " "ఇది ఇంటర్నెట్ వడపోత మరియు సెన్సార్షిప్ను దాటడానికి ఉపయోగించవచ్చు." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6122,17 +6127,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "షాడోసాక్స్" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "సాక్స్5 ప్రాక్సీ" @@ -6163,7 +6168,7 @@ msgstr "సమాచారాన్ని గుప్తీకరించా msgid "Encryption method. Must match setting on server." msgstr "గుప్తీకరించు పద్దతి. సర్వర్ లోని సెట్టింగ్‌తో సరిపోలాలి." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6285,14 +6290,14 @@ msgstr "వినియోగదారి మార్పు" msgid "Share deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6300,14 +6305,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "నిల్వ దృశ్యములు" @@ -6525,7 +6530,7 @@ msgstr "రొల్ల్బచ్క్ ని పూర్తి చేయడ msgid "Rollback to Snapshot" msgstr "చాయాచిత్రం కు రొల్ల్బచ్క్ చేయండి" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6533,7 +6538,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "సెక్యూర్ షెల్ (SSH) సర్వర్" @@ -6580,7 +6585,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "సింగిల్ సైన్ ఆన్" @@ -6588,7 +6593,7 @@ msgstr "సింగిల్ సైన్ ఆన్" msgid "Login" msgstr "ప్రవేశించు" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6596,158 +6601,158 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 #, fuzzy msgid "Storage" msgstr "అన్హొస్టెడ్ స్టోరేజ్ ని (పునరుద్ధరించండి)" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} బైట్లు" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} కిలోబైట్లు" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} మెగాబైట్లు" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} గిగాబైట్లు" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} టెరాబైట్లు" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 #, fuzzy #| msgid "Mumble server is running" msgid "The device is already unmounting." msgstr "మంబ్లు సేవిక నడుస్తుంది" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "ఆపరేషన్ టైమవుట్ అయింది." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "ఈ ఆపరేషన్ గాఢ నిద్రలో ఉన్న ఒక డిస్క్ ను మేల్కొలుపుతుంది." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 #, fuzzy msgid "Attempting to unmount a device that is busy." msgstr "బిజీగా ఉన్న పరికరాన్ని అన్ మౌంట్ చేయడానికి ప్రయత్నిస్తోంది." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "ఆపరేషన్ ఇప్పటికే రద్దు చేయబడింది." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "అభ్యర్థించిన ఆపరేషన్ చేయడానికి అధికారం లేదు." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 #, fuzzy msgid "The device is already mounted." msgstr "ఈ సేవ ఇప్పటికే ఉంది" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 #, fuzzy #| msgid "Mumble server is not running" msgid "The device is not mounted." msgstr "మంబ్లు సేవిక నడవంలేదు" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "అభ్యర్థించిన ఎంపికను ఉపయోగించడానికి అనుమతి లేదు." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "పరికరం మరొక వినియోగదారుచే మౌంట్ చేయబడింది." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "ఆతిథ్యనామం చెల్లనిది" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "డైరెక్టరీ ఉనికిలో లేదు." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "డైరెక్టరీని దిగుమతి చేయు" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "వినియోగదారు ద్వారా డైరెక్టరీ చదవబడలేదు." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "వినియోగదారు ద్వారా డైరెక్టరీ వ్రాయబడలేదు." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "డైరెక్టరీని దిగుమతి చేయు" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "ఉప డైరెక్టరీ (ఐచ్ఛికం)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "పంచుకోబడ్డ" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "ఇతర డైరెక్టరీ (దిగువన పేర్కొనండి)" @@ -6829,7 +6834,7 @@ msgstr "పరికరాన్ని సురక్షితంగా తొ msgid "Error ejecting device: {error_message}" msgstr "పరికరాన్ని తొలగించడంలో లోపం: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 #, fuzzy msgid "" "Syncthing is an application to synchronize files across multiple devices, e." @@ -6841,7 +6846,7 @@ msgstr "" "ఒక ఉపకరణంలో ఒక ఫైలు యొక్క తయారీ,మార్పులు, లేదా నిర్మూలిస్తే అది మిగిలిన అన్ని ఉపకరణాలలో దానికి " "సంబందించిన మార్పులు చెయ్యడం సమకాలీకరించడం" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6853,22 +6858,22 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" msgstr "ఈ అనువర్తనాన్ని నిక్షిప్తం చేయాలా?" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "సింక్ తింగ్" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "ఫైళ్ళ సమకాలీకరణ" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6879,7 +6884,7 @@ msgstr "" "చేయడానికి ప్రొవైడర్ స్వతంత్ర భద్రతను ఉపయోగిస్తుంది. కొన్ని నోడ్లు విఫలమైనప్పటికీ, మిగిలిన ఫైళ్ళ నుండి మీ " "ఫైళ్ళను తిరిగి పొందవచ్చు." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6887,11 +6892,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "తాహో-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "పంపిణీ ఫైల్ నిల్వ" @@ -6929,7 +6934,7 @@ msgstr "కనెక్ట్ చేసిన పరిచయకర్తలు" msgid "Remove" msgstr "తొలగించు" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6942,44 +6947,44 @@ msgstr "" "టార్ ప్రాజెక్ట్ మీరు టార్ బ్రౌజర్ ను ఉపయోగించాలని సిఫార్సు చేస్తున్నారు." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "టార్" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "దాచిన టార్ సర్వీస్" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 #, fuzzy #| msgid "Socks5 Proxy" msgid "Tor Socks Proxy" msgstr "సాక్స్5 ప్రాక్సీ" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "టార్ బ్రిడ్జ్ రిలే" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "టార్ రిలే పోర్ట్ అందుబాటులో ఉంది" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "టార్ ద్వారా {kind} లో {url} ను ఆక్సెస్ చెయ్యండి" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "టోర్ వాడుకను నిర్ధారించండి{url} టీ సి పి పై{kind}" @@ -7132,13 +7137,17 @@ msgstr "సాక్స్‌లు" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "టిసిపి పోర్ట్ 9050 పై ఒక టార్ సొక్స్ పోర్ట్ మీ %(box_name)sలో అందుబాటులో ఉంది." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "మారకుండా అమర్చుతోంది" + +#: plinth/modules/transmission/__init__.py:24 #, fuzzy #| msgid "Deluge is a BitTorrent client that features a Web UI." msgid "Transmission is a BitTorrent client with a web interface." msgstr "డీలడ్జ్ అనేది జాల UI కలిగివున్న ఒక బిట్ టోరెంట్ కక్షిదారు." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7150,23 +7159,23 @@ msgstr "" "బిట్ టోర్రెంట్ పీర్-టు-పీర్ ఫైల్ షేరింగ్ ప్రోటోకాల్. ట్రాన్స్మిషన్ డెమోన్ బిట్ టోర్రెంట్ ఫైల్ భాగస్వామ్యాన్ని నిర్వహిస్తుంది. " "బిట్ టోర్రెంట్ అజ్ఞాత కాదని గమనించండి." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "ట్రాన్స్మిషన్" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -7183,21 +7192,21 @@ msgstr "" "ద్వారా పొందవచ్చు {box_name}.\n" "అంగీకార సమాచారం మరియు సిస్టమ్ మార్చడం సామర్ధ్యాలు నిర్వాహక సమూహం చెందిన వినియోగదారులకు పరిమితం." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "న్యూస్ ఫీడ్‌లను చదవడం మరియు చందాదారునిగా చేరు" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "టైనీ టైనీ RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "న్యూస్ ఫీడ్ రీడర్" @@ -7207,12 +7216,12 @@ msgstr "న్యూస్ ఫీడ్ రీడర్" msgid "Tiny Tiny RSS (Fork)" msgstr "టైనీ టైనీ RSS" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7220,7 +7229,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7440,14 +7449,14 @@ msgstr "నవీకరణ ప్రారంభం విఫలమైంద msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7455,15 +7464,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "వినియోగదారులు మరియు సమూహాలు" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "అన్ని సేవలకు మరియు సిస్టమ్ అమరికలకు ప్రాప్యత" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP నమోదు \"{search_item}\" తనిఖీ" @@ -7710,19 +7719,19 @@ msgstr "పాస్‌వర్డ్ మార్చు" msgid "Password changed successfully." msgstr "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 #, fuzzy msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "వైర్‌గార్డ్ వేగవంతమైన, ఆధునిక, సురక్షితమైన VPN సొరంగం." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8066,7 +8075,7 @@ msgstr "అనుసంధానం తొలగించు" msgid "Server deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8075,7 +8084,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8084,28 +8093,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "చిరునామా" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8123,7 +8132,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8136,7 +8145,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8144,11 +8153,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -8184,23 +8193,23 @@ msgstr "పిపిపిఒఇ" msgid "Generic" msgstr "సాధారణమైన" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "సంస్థాపన ఒక పొరపాటు జరిగింది" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "వ్యవస్థాపిస్తోంది" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "దిగుమతి అవుతోంది" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "ప్రసార మాధ్యమం మార్పు" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "ఆకృతీకరణ ఫైలు: {file}" @@ -8574,6 +8583,16 @@ msgstr "%(percentage)s %% పూర్తి" msgid "Gujarati" msgstr "గుజరాతీ" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "అధికారక్షేత్రం పేరు అమర్పులోపం: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." + #, fuzzy #~| msgid "Directory does not exist." #~ msgid "User does not exist" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index 260f0aacd..5eb117c6a 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-11-10 04:52+0000\n" "Last-Translator: Burak Yavuz \n" "Language-Team: Turkish calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1052,15 +1053,15 @@ msgstr "" "erişebilecektir. Erişimi olan tüm kullanıcılar tüm kütüphaneleri " "kullanabilir." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "calibre e-kitap kütüphanesini kullan" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "E-kitap Kütüphanesi" @@ -1134,7 +1135,7 @@ msgstr "{name} silindi." msgid "Could not delete {name}: {error}" msgstr "{name} silinemedi: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1147,7 +1148,7 @@ msgstr "" "gerekli olmayan birçok gelişmiş işlev için denetimler mevcuttur. Konsol " "işlemleri için web tabanlı bir terminal de mevcuttur." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1159,7 +1160,7 @@ msgstr "" "noktalarını açmak ve birleştirme, köprüleme ve VLAN yönetimi gibi gelişmiş " "ağlar oluşturmak için de kullanılabilir." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1168,7 +1169,7 @@ msgstr "" "Admin grubuna ait {box_name} üzerindeki herhangi bir " "kullanıcı tarafından erişilebilir." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1176,12 +1177,12 @@ msgstr "" "Cockpit, ona bir etki alan adı aracılığıyla erişmenizi gerektirir. URL'nin " "bir parçası olarak bir IP adresi kullanılarak erişildiğinde çalışmayacaktır." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Sunucu Yönetimi" @@ -1194,7 +1195,7 @@ msgid "Cockpit will only work when accessed using the following URLs." msgstr "" "Cockpit sadece aşağıdaki URL'ler kullanılarak erişildiğinde çalışacaktır." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1202,11 +1203,11 @@ msgstr "" "Burada anamakine adı, etki alanı adı, web sunucusu ana sayfası vb. gibi bazı " "genel yapılandırma seçeneklerini ayarlayabilirsiniz." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Genel Yapılandırma" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1215,7 +1216,7 @@ msgstr "Genel Yapılandırma" msgid "Configure" msgstr "Yapılandır" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1346,7 +1347,7 @@ msgstr "Gelişmiş uygulamalar ve özellikler gösteriliyor" msgid "Hiding advanced apps and features" msgstr "Gelişmiş uygulamalar ve özellikler gizleniyor" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1358,7 +1359,7 @@ msgstr "" "SIP ve diğer iletişim sunucuları, başka şekilde birbirleriyle bağlantı " "kuramayan taraflar arasında bir çağrı kurmak için bunu kullanabilir." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse veya ejabberd gibi " "sunucuların burada sağlanan ayrıntılarla yapılandırılması gerekir." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "VoIP Yardımcısı" @@ -1389,7 +1390,7 @@ msgstr "İletişim sunucunuzu yapılandırmak için aşağıdaki URL'leri kullan msgid "Use the following shared authentication secret:" msgstr "Aşağıdaki paylaşılan kimlik doğrulama gizli anahtarını kullanın:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1397,11 +1398,11 @@ msgstr "" "Ağ zaman sunucusu, sistem saatini İnternet'teki sunucularla eşit halde tutan " "bir programdır." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Tarih ve Saat" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "NTP sunucusu ile zaman eşitlendi" @@ -1430,11 +1431,11 @@ msgstr "Saat dilimi ayarlanırken hata oldu: {exception}" msgid "Time zone set" msgstr "Saat dilimi ayarlandı" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge, bir Web kullanıcı arayüzüne sahip bir BitTorrent istemcisidir." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1442,17 +1443,17 @@ msgstr "" "Varsayılan parola 'deluge'dir, ancak bu hizmeti etkinleştirdikten hemen " "sonra oturum açmalı ve parolayı değiştirmelisiniz." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "BitTorrent uygulamalarını kullanarak dosyaları indir" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "BitTorrent Web İstemcisi" @@ -1464,7 +1465,7 @@ msgstr "İndirme dizini" msgid "Bittorrent client written in Python/PyGTK" msgstr "Python/PyGTK ile yazılmış BitTorrent istemcisi" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1472,53 +1473,53 @@ msgstr "" "Sistem tanılama denemesi, uygulamaların ve hizmetlerin beklendiği gibi " "çalıştığını doğrulamak için sisteminizde bir dizi denetim gerçekleştirecek." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Tanılama" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "geçti" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "başarısız" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "hata" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "uyarı" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GiB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" "Bellek kullanımını azaltmak için bazı uygulamaları etkisizleştirmelisiniz." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Bu sisteme herhangi bir yeni uygulama yüklememelisiniz." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1527,7 +1528,7 @@ msgstr "" "Sistem belleği düşük: %{percent_used} kullanılıyor, {memory_available}." "{memory_available_unit} boş. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Düşük Bellek" @@ -1580,7 +1581,7 @@ msgstr "Sonuç" msgid "Diagnostic Test" msgstr "Tanı Denemesi" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1588,12 +1589,12 @@ msgstr "" "diaspora* kendi verilerinizi depolayabileceğiniz ve denetleyebileceğiniz " "merkezi olmayan bir sosyal ağdır." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Federal Sosyal Ağ" @@ -1654,7 +1655,7 @@ msgstr "Kullanıcı kayıtları etkinleştirildi" msgid "User registrations disabled" msgstr "Kullanıcı kayıtları etkisizleştirildi" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1666,7 +1667,7 @@ msgstr "" "başkalarının bu {box_name} tarafından sağlanan hizmetleri bulmasını " "engelleyecektir." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1683,11 +1684,11 @@ msgstr "" "sunucu DNS adınızı yeni IP'ye atayacaktır ve İnternet'ten birisi sizin DNS " "adınızı sorarsa, şu anki IP adresinizle bir yanıt alacaktır." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Değişken DNS İstemcisi" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Değişken Etki Alanı Adı" @@ -1744,12 +1745,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Şu anki parolanızı korumak istiyorsanız bu alanı boş bırakın." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "İsteğe Bağlı Değer. Eğer {box_name} cihazınız doğrudan İnternet'e bağlı " "değilse (yani bir NAT yönlendiricisine bağlıysa), bu URL gerçek IP adresini " @@ -1830,12 +1836,18 @@ msgid "Please provide a password" msgstr "Lütfen bir parola girin" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Eğer ücretsiz bir değişken DNS hesabı arıyorsanız, ücretsiz bir GnuDIP " "hizmetini gnudip." @@ -1897,7 +1909,7 @@ msgstr "" msgid "Last update" msgstr "Son güncelleme" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Hakkında" @@ -1924,7 +1936,7 @@ msgstr "Değişken DNS'i Yapılandır" msgid "Dynamic DNS Status" msgstr "Değişken DNS Durumu" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1932,7 +1944,7 @@ msgstr "" "XMPP, açık ve standartlaştırılmış bir iletişim protokolüdür. Burada ejabberd " "adı verilen XMPP sunucunuzu çalıştırabilir ve yapılandırabilirsiniz." -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client{box_name} oturum " "açma adı ile herhangi bir kullanıcı tarafından erişilebilir." -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn uygulamasını yükleyin veya harici " "bir sunucu yapılandırın." -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Sohbet Sunucusu" @@ -2075,7 +2087,7 @@ msgstr "" "Etki alanınızı sistemde Yapılandır sayfasında " "ayarlayabilirsiniz." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." @@ -2083,25 +2095,21 @@ msgstr "" "Roundcube uygulaması, kullanıcıların " "e-postaya erişmesi için web arayüzü sağlar." -#: plinth/modules/email_server/__init__.py:57 +#: plinth/modules/email_server/__init__.py:33 msgid "" "During installation, any other email servers in the system will be " "uninstalled." msgstr "" "Kurulum sırasında sistemdeki diğer tüm e-posta sunucuları kaldırılacaktır." -#: plinth/modules/email_server/__init__.py:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "E-posta Sunucusu" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Postfix, Dovecot ve Rspamd tarafından desteklenmektedir" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "Postfix etki alanı adı yapılandırması" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "Postfix-Dovecot SASL bütünleştirmesi" @@ -2134,46 +2142,58 @@ msgstr "Postfix bir TLS sertifikası kullanır" msgid "Has a TLS certificate" msgstr "TLS sertifikası var" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "Geçerli bir etki alanı girin" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "Geçerli bir hedef girin" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "etki alanı" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +msgstr "Birincil bağlantı" + +#: 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 "Yeni kod adı (@domain olmadan)" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "Geçersiz karakterler içeriyor" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "A-z veya 0-9 ile başlamalı ve bitmelidir" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "Sayı olamaz" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "Kod Adları" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Etkinleştirildi" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2182,7 +2202,7 @@ msgid "Disabled" msgstr "Etkisizleştirildi" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2200,7 +2220,7 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "Kod Adlarını Yönet" @@ -2225,43 +2245,28 @@ msgstr "Yeni bir e-posta kod adı oluşturun" msgid "Add" msgstr "Ekle" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Etki Alanları" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "İstenmeyen İletiyi Yönet" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "Hizmet Uyarısı" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "Onar" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "{0} içinde dahili hata" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "Daha fazla bilgi için syslog'u gözden geçirin" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "Yapılandırma güncellenirken hata oldu" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Ayar değişmedi" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2273,7 +2278,7 @@ msgstr "" "ve uygun şekilde yapılandırılmış halde tutulması, İnternet kaynaklı güvenlik " "tehdidi riskini azaltır." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Güvenlik Duvarı" @@ -2396,7 +2401,7 @@ msgstr "Kurulumu Başlat" msgid "Setup Complete" msgstr "Kurulum Tamamlandı" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2414,7 +2419,7 @@ msgstr "" "depoları çoğaltabilir ve kod değişikliklerini yükleyebilirsiniz. Ve kodunuzu " "dünyanın her yerinden insanlarla paylaşabilirsiniz." -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2422,15 +2427,15 @@ msgstr "" "Git'in nasıl kullanılacağı hakkında daha fazla bilgi edinmek için Git öğreticisini ziyaret edin." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Git depolarına okuma-yazma erişimi" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Basit Git Barındırma" @@ -2543,31 +2548,31 @@ msgstr "Depo düzenlendi." msgid "Edit repository" msgstr "Depoyu düzenle" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Belgeler" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Kılavuz" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Destek Al" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Geri Bildirim Gönder" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2858,7 +2863,7 @@ msgstr "{box_name} Hakkında" msgid "{box_name} Manual" msgstr "{box_name} Kılavuzu" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2870,7 +2875,7 @@ msgstr "" "olarak işletilen bir ağ aracılığıyla şifreli trafik göndererek isim " "gizliliği sağlar." -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2878,26 +2883,26 @@ msgstr "" "I2P hakkında daha fazla bilgiyi proje ana sayfasında bulabilirsiniz." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" "Sağlanan web arayüzüne ilk ziyaret, yapılandırma işlemini başlatacaktır." -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "I2P uygulamasını yönet" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "İsim Gizliliği Ağı" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P Vekil Sunucusu" @@ -2943,7 +2948,7 @@ msgstr "" "uygulama sağlar. Dosyaları torrent'leri ekleyerek indirin veya bir dosyayı " "paylaşmak için yeni bir torrent oluşturun." -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2953,7 +2958,7 @@ msgstr "" "birkaç hafif biçimlendirme dilini, yorumlar ve RSS beslemeleri gibi ortak " "blog oluşturma işlevselliğini destekler." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2967,15 +2972,15 @@ msgstr "" "href=\"{users_url}\">Kullanıcı Yapılandırmasında bu izinleri " "değiştirebilir veya yeni kullanıcılar ekleyebilirsiniz." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Viki ve Blog" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Viki uygulamalarını görüntüle ve düzenle" @@ -3054,13 +3059,13 @@ msgstr "{title} silindi." msgid "Could not delete {title}: {error}" msgstr "{title} silinemedi: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted, işbirliğine dayalı bir metin düzenleyici olan Gobby için bir " "sunucudur." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3071,11 +3076,11 @@ msgstr "" "istemcisini indirin ve yükleyin. Ardından Gobby'yi başlatın, \"Sunucuya " "Bağlan\" seçeneğini seçin ve {box_name} cihazınızın etki alanı adını girin." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Gobby Sunucusu" @@ -3096,7 +3101,7 @@ msgstr "" "Gobby'yi başlatın, \"Sunucuya Bağlan\" seçeneğini seçin ve {box_name} " "cihazınızın etki alanı adını girin." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3104,11 +3109,11 @@ msgstr "" "JSXC, XMPP için bir web istemcisidir. Genellikle, yerel olarak çalışan bir " "XMPP sunucusuyla kullanılır." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Sohbet İstemcisi" @@ -3117,7 +3122,7 @@ msgstr "Sohbet İstemcisi" msgid "JavaScript license information" msgstr "JavaScript lisans bilgileri" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3133,7 +3138,7 @@ msgstr "" "(CA) olan Let's Encrypt'a bir etki alanının sahibi olduğunu kanıtlayarak " "yapar." -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3145,15 +3150,15 @@ msgstr "" "Lütfen bu hizmeti kullanmadan önce Let's Encrypt Abone Sözleşmesini okuyun ve kabul edin." -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Sertifikalar" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "Denenemiyor: Hiçbir etki alanı yapılandırılmamış." @@ -3258,7 +3263,7 @@ msgstr "{domain} etki alanı için sertifika başarılı olarak silindi" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} etki alanı için sertifika silme başarısız oldu: {error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3275,7 +3280,7 @@ msgstr "" "kullanıcılar, federasyon aracılığıyla diğer tüm Matrix sunucularındaki " "kullanıcılarla sohbet edebilir." -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3285,7 +3290,7 @@ msgstr "" "ihtiyaç duyar. Coturn uygulamasını yükleyin veya " "harici bir sunucu yapılandırın." -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3382,7 +3387,7 @@ msgstr "" "sertifikası gerekir. Bir tane edinmek için lütfen Let's Encrypt'a gidin." -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3395,7 +3400,7 @@ msgstr "" "barındırmak, notlar almak veya projelerde arkadaşlarınızla işbirliği yapmak " "için kullanabilirsiniz." -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3410,7 +3415,7 @@ msgstr "" "giderek MediaWiki'nin kendisinden daha fazla kullanıcı hesabı " "oluşturabilirsiniz." -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3418,12 +3423,12 @@ msgstr "" "Bu viki'ye bağlantısı olan herkes bunu okuyabilir. Sadece oturum açmış " "kullanıcılar içerikte değişiklik yapabilir." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Viki" @@ -3516,7 +3521,7 @@ msgstr "Varsayılan kaplama değiştirildi" msgid "Server URL updated" msgstr "Sunucu URL'si güncellendi" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3529,11 +3534,11 @@ msgstr "" "(30000) çalıştırılmasını sağlar. Sunucuya bağlanmak için bir Minetest istemcisi gereklidir." -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Blok Kum Havuzu" @@ -3606,7 +3611,7 @@ msgstr "PVP yapılandırması güncellendi" msgid "Damage configuration updated" msgstr "Hasar yapılandırması güncellendi" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3624,15 +3629,15 @@ msgstr "" "Xbox 360 gibi) gibi ya da totem ve Kodi gibi uygulamalar da dahil olmak " "üzere DLNA Sertifikası geçen tüm cihazlarla uyumludur." -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Ortam akış sunucusu" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Basit Ortam Sunucusu" @@ -3677,7 +3682,7 @@ msgstr "Belirtilen dizin mevcut değil." msgid "Updated media directory" msgstr "Güncellenmiş ortam dizini" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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 " @@ -3688,7 +3693,7 @@ msgstr "" "DirectConnect dahil olmak üzere birden fazla kişiden-kişiye ağlarına " "katılabilir." -#: plinth/modules/mldonkey/__init__.py:32 +#: 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 " @@ -3699,7 +3704,7 @@ msgstr "" "ön uçlarından herhangi biri veya bir telnet arayüzü aracılığıyla da " "denetleyebilir. Kılavuza bakın." -#: plinth/modules/mldonkey/__init__.py:37 +#: plinth/modules/mldonkey/__init__.py:31 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3707,16 +3712,16 @@ msgstr "" "{box_name} üzerinde, indirilen dosyalar /var/lib/mldonkey/ dizininde " "bulunabilir." -#: plinth/modules/mldonkey/__init__.py:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "eDonkey uygulamalarını kullanarak dosyaları indir" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Kişiden-kişiye Dosya Paylaşımı" @@ -3728,7 +3733,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3749,7 +3754,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\">Monkeysphere SSH belgelerine " "bakın." -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3767,7 +3772,7 @@ msgstr "" "web.monkeysphere.info/download/\">Monkeysphere web sitesinde bulunan " "bazı yazılımları yüklemesi gerekecektir." -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3786,6 +3791,10 @@ msgstr "İptal" msgid "Service" msgstr "Hizmet" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Etki Alanları" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3891,7 +3900,7 @@ msgstr "Anahtar, anahtar sunucusuna yayınlandı." msgid "Error occurred while publishing key." msgstr "Anahtar yayınlanırken bir hata meydana geldi." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3899,7 +3908,7 @@ msgstr "" "Mumble, açık kaynaklı, düşük gecikmeli, şifreli, yüksek kaliteli bir sesli " "sohbet yazılımıdır." -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3909,11 +3918,11 @@ msgstr "" "bağlanabilirsiniz. Masaüstünüzden ve Android cihazlarınızdan Mumble'a " "bağlanmak için istemciler mevcuttur." -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Sesli Sohbet" @@ -3941,7 +3950,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "Süper Kullanıcı parolası başarılı olarak güncellendi." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3955,7 +3964,7 @@ msgstr "" "aracılığıyla gelen bağlantılar için etkinleştirildiği mi yoksa " "etkisizleştirildiği mi gösterilir." -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Ad Hizmetleri" @@ -3971,7 +3980,7 @@ msgstr "Tüm web uygulamaları" msgid "Services" msgstr "Hizmetler" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3979,7 +3988,7 @@ msgstr "" "Ağ cihazlarını yapılandırın. İnternet'e Ethernet, Wi-Fi veya PPPoE ile " "bağlanın. Bu bağlantıyı ağdaki diğer cihazlarla paylaşın." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3987,11 +3996,11 @@ msgstr "" "Diğer yöntemler aracılığıyla yönetilen cihazlar burada yapılandırma için " "mevcut olmayabilir." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Ağlar" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "IPv{kind} üzerinde DNSSEC kullanma" @@ -4547,7 +4556,7 @@ msgstr "DNS sunucusu" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "Varsayılan" @@ -4560,7 +4569,7 @@ msgid "This connection is not active." msgstr "Bu bağlantı etkin değil." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Güvenlik" @@ -5046,7 +5055,7 @@ msgstr "genel" msgid "TUN or TAP interface" msgstr "TUN veya TAP arayüzü" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5136,7 +5145,7 @@ msgstr "{name} bağlantısı silindi." msgid "Failed to delete connection: Connection not found." msgstr "Bağlantının silinmesi başarısız oldu: Bağlantı bulunamadı." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5153,20 +5162,20 @@ msgstr "" "isim gizliliği sayesinde {box_name} aracılığıyla İnternet'e de " "erişebilirsiniz." -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "VPN hizmetlerine bağlan" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Sanal Özel Ağ" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5244,7 +5253,7 @@ msgstr "Profil, %(box_name)s cihazının her kullanıcısına özgüdür. Gizli msgid "Download my profile" msgstr "Profilimi indir" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5257,17 +5266,17 @@ msgstr "" "{box_name} hizmetlerinize İnternet'ten erişilemiyorsa ihtiyacınız vardır. " "Bu, aşağıdaki durumları içerir:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} kısıtlanmış bir güvenlik duvarının arkasında." -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{box_name} denetleyemediğiniz bir (kablosuz) yönlendiriciye bağlı." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5275,7 +5284,7 @@ msgstr "" "İSS'niz size bir dış IP adresi sağlamıyor ve bunun yerine NAT aracılığıyla " "İnternet bağlantısı sağlıyor." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5283,11 +5292,11 @@ msgstr "" "İSS'niz size bir sabit IP adresi sağlamıyor ve IP adresiniz İnternet'e her " "bağlandığınızda değişiyor." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "İSS'niz gelen bağlantıları sınırlıyor." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5301,15 +5310,15 @@ msgstr "" "href=\"https://pagekite.net\">pagekite.net. Gelecekte bunun için " "arkadaşınızın {box_name} cihazını kullanmak mümkün olabilir." -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Herkese Açık Görünürlük" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "PageKite Etki Alanı" @@ -5456,12 +5465,12 @@ msgstr "" "SSH istemci ayarlaması talimatlarına bakın" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Performans" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5472,7 +5481,7 @@ msgstr "" "donanımın kullanıcılar ve hizmetler tarafından aşırı yüklenip yüklenmediği " "hakkında temel içgörüler verebilir." -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5480,15 +5489,15 @@ msgstr "" "Performans ölçümleri, Performance Co-Pilot tarafından toplanır ve Cockpit " "uygulaması kullanılarak görüntülenebilir." -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Sistem İzleme" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Sistemi yeniden başlatın veya kapatın." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Güç" @@ -5551,7 +5560,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Şimdi Kapat" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5562,7 +5571,7 @@ msgstr "" "çöplerini kaldırmak için gelişmiş süzme yeteneklerine sahip, önbelleğe " "alınmayan bir web vekil sunucusudur. " -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5577,20 +5586,20 @@ msgstr "" "belgelerini https://www.privoxy.org " "adresinde görebilirsiniz." -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Web Vekil Sunucusu" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tcp{kind} üzerinde {proxy} vekil sunucusu ile {url} adresine erişin" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5607,7 +5616,7 @@ msgstr "" "çalıştırabilir ve bir masaüstünden veya cep telefonundan bir veya daha fazla " "Quassel istemcisini bağlamak ve bağlantısını kesmek için kullanılabilir." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your masaüstü ve mobil cihazlarınızdan bağlanacak istemciler mevcuttur." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "IRC İstemcisi" @@ -5631,7 +5640,7 @@ msgstr "IRC İstemcisi" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5646,7 +5655,7 @@ msgstr "" "\">desteklenen bir istemci uygulaması gereklidir. Radicale'ye {box_name} " "oturum açma adı ile herhangi bir kullanıcı tarafından erişilebilir." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5656,12 +5665,12 @@ msgstr "" "temel bir web arayüzü sağlar. Ayrı bir istemci kullanılarak yapılması " "zorunlu olan olayların veya kişilerin eklenmesini desteklemez." -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Takvim ve Adres Defteri" @@ -5744,7 +5753,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Erişim izinleri yapılandırması güncellendi" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5756,7 +5765,7 @@ msgstr "" "defteri, klasör işleme, ileti arama ve yazım denetimi dahil olmak üzere bir " "e-posta istemcisinden beklediğiniz tam işlevselliği sağlar." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5770,7 +5779,7 @@ msgstr "" "IMAP için (önerilir), sunucu alanını imaps://imap.ornek.com " "gibi doldurun." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5785,11 +5794,11 @@ msgstr "" "gerekeceğini unutmayın (https://myaccount.google.com/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "E-posta İstemcisi" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5797,7 +5806,7 @@ msgstr "" "Samba, FreedomBox ile yerel ağınızdaki diğer bilgisayarlar arasında dosya ve " "klasör paylaşmayı sağlar." -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5811,11 +5820,11 @@ msgstr "" "(Linux ve Mac'te) konumunda erişilebilir. Aralarından seçim yapabileceğiniz " "üç tür paylaşım vardır: " -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "Açık paylaşım - yerel ağınızdaki herkes tarafından erişilebilir." -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5823,7 +5832,7 @@ msgstr "" "Grup paylaşımı - sadece Freedombox paylaşım grubundaki FreedomBox " "kullanıcıları tarafından erişilebilir." -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5831,15 +5840,15 @@ msgstr "" "Ev paylaşımı - Freedombox paylaşım grubundaki her kullanıcı kendi özel " "alanına sahip olabilir." -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Özel paylaşımlara erişim" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Ağ Dosya Depolama" @@ -5926,11 +5935,11 @@ msgstr "Eylem" msgid "FreedomBox OS disk" msgstr "FreedomBox OS disk" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "Açık Paylaşım" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "Grup Paylaşımı" @@ -5956,7 +5965,7 @@ msgstr "Paylaşım etkisizleştirildi." msgid "Error disabling share: {error_message}" msgstr "Paylaşımı etkisizleştirirken hata oldu: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5964,7 +5973,7 @@ msgstr "" "Searx, gizliliğe saygılı bir İnternet üstbilgi arama motorudur. Birden çok " "arama motorundan gelen sonuçları toplar ve görüntüler." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -5972,15 +5981,15 @@ msgstr "" "Searx, arama motorları tarafından izlenmeyi ve profil oluşturmayı önlemek " "için kullanılabilir. Varsayılan olarak hiçbir tanımlama bilgisi saklamaz." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Web'de ara" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Web Arama" @@ -6162,11 +6171,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:21 +#: plinth/modules/shaarli/__init__.py:17 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:22 +#: plinth/modules/shaarli/__init__.py:18 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6174,15 +6183,15 @@ msgstr "" "Shaarli'nin sadece ilk ziyaretinizde ayarlamanız gerekecek tek bir kullanıcı " "hesabını desteklediğini unutmayın." -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Yer İşaretleri" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6192,7 +6201,7 @@ msgstr "" "bir SOCKS5 vekil sunucusudur. İnternet süzmeyi ve sansürü atlamak için " "kullanılabilir." -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6205,7 +6214,7 @@ msgstr "" "Yerel cihazlar bu vekil sunucuya bağlanabilir ve verileri şifrelenecek ve " "Shadowsocks sunucusu aracılığıyla vekil sunucuya tabi tutulacaktır." -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6214,11 +6223,11 @@ msgstr "" "uygulamanızda SOCKS5 vekil sunucu URL'sini http://freedombox_adresi:1080/ " "olarak ayarlayın" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "Socks5 Vekil Sunucusu" @@ -6249,7 +6258,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "Şifreleme yöntemi. Sunucudaki ayarla eşleşmek zorundadır." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6355,7 +6364,7 @@ msgstr "Paylaşımı Düzenle" msgid "Share deleted." msgstr "Paylaşım silindi." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6366,7 +6375,7 @@ msgstr "" "durumunda sistemi önceden bilinen iyi bir duruma geri döndürmek için " "kullanılabilir." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6378,7 +6387,7 @@ msgstr "" "eski anlık görüntüler, aşağıdaki ayarlara göre otomatik olarak " "temizlenecektir." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for yedeklemelerin " "yerine geçmez. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Depolama Anlık Görüntüleri" @@ -6595,7 +6604,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "Anlık Görüntüye Geri Al" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6607,7 +6616,7 @@ msgstr "" "bağlantıları kullanarak yönetim görevlerini gerçekleştirebilir, dosyaları " "kopyalayabilir veya diğer hizmetleri çalıştırabilir." -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Güvenli Kabuk (SSH) Sunucusu" @@ -6653,7 +6662,7 @@ msgstr "Parola ile SSH kimlik doğrulaması etkisizleştirildi." msgid "SSH authentication with password enabled." msgstr "Parola ile SSH kimlik doğrulaması etkinleştirildi." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "Tek Oturum Açma" @@ -6661,7 +6670,7 @@ msgstr "Tek Oturum Açma" msgid "Login" msgstr "Oturum aç" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6673,105 +6682,105 @@ msgstr "" "ortamı bağlayabilir ve bağlantısını kaldırabilir, kök bölümünü vb. " "genişletebilirsiniz." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Depolama" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bayt" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "İşlem başarısız oldu." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "İşlem iptal edildi." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Aygıtın zaten bağlantısı kaldırılıyor." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "Eksik sürücü/araç desteğinden dolayı işlem desteklenmiyor." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "İşlem zaman aşımına uğradı." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "İşlem, derin uyku durumunda olan bir diski uyandırır." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Meşgul olan bir aygıtın bağlantısı kaldırılmaya çalışılıyor." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "İşlem zaten iptal edildi." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "İstenen işlemi gerçekleştirmek için yetkili değilsiniz." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Aygıt zaten bağlı." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Aygıt bağlı değil." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "İstenen seçeneği kullanmak için izin verilmedi." -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Aygıt başka bir kullanıcı tarafından bağlandı." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Sistem bölümünde düşük alan: %{percent_used} kullanıldı, {free_space} boş." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Düşük disk alanı" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "Disk arızası yakın" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6780,39 +6789,39 @@ msgstr "" "Disk {id}, yakın gelecekte başarısız olma ihtimalinin yüksek olduğunu " "bildiriyor. Hala yapabilirken tüm verileri kopyalayın ve sürücüyü değiştirin." -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Geçersiz dizin adı." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Dizin mevcut değil." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Yol bir dizin değil." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "Dizin kullanıcı tarafından okunabilir değil." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "Dizin kullanıcı tarafından yazılabilir değil." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Dizin" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Alt dizin (isteğe bağlı)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "Paylaş" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "Diğer dizin (aşağıda belirtin)" @@ -6895,7 +6904,7 @@ msgstr "Aygıt güvenli bir şekilde çıkarılabilir." msgid "Error ejecting device: {error_message}" msgstr "Aygıt çıkarılırken hata oldu: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6907,7 +6916,7 @@ msgstr "" "dosyaların oluşturulması, değiştirilmesi veya silinmesi, Syncthing'i de " "çalıştıran diğer tüm cihazlarda otomatik olarak tekrarlanacaktır." -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6926,20 +6935,20 @@ msgstr "" "{box_name} cihazındaki web arayüzü sadece \"admin\" veya \"syncthing-access" "\" grubuna ait kullanıcılar tarafından kullanılabilir." -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Syncthing uygulamasını yönet" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Dosya Eşitleme" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6951,7 +6960,7 @@ msgstr "" "sağlayıcıdan bağımsız güvenlik kullanır. Bazı düğümler başarısız olsa bile, " "dosyalarınız kalan düğümlerden alınabilir." -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6962,11 +6971,11 @@ msgstr "" "barındırır. Bu düğümü diğer depolama düğümlerine tanıtacak ek tanıtıcılar " "eklenebilir." -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Dağıtılmış Dosya Depolaması" @@ -7006,7 +7015,7 @@ msgstr "Bağlı tanıtıcılar" msgid "Remove" msgstr "Kaldır" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7019,40 +7028,40 @@ msgstr "" "gezinirken en iyi koruma için Tor Projesi, Tor Tarayıcı kullanmanızı önerir." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "Tor Onion Hizmeti" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "Tor Socks Vekil Sunucusu" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Tor Köprüsü Aktarımı" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Tor aktarımı bağlantı noktası kullanılabilir" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "Obfs3 taşıma kayıtlı" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "Obfs4 taşıma kayıtlı" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tor aracılığıyla tcp{kind} üzerinde erişim URL'si {url}" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Tcp{kind} üzerinde {url} adresinde Tor kullanımını onaylama" @@ -7205,11 +7214,15 @@ msgstr "" "9050 nolu TCP bağlantı noktası üzerindeki %(box_name)s cihazınızda bir Tor " "SOCKS bağlantı noktası kullanılabilir." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Ayar değişmedi" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission, Web kullanıcı arayüzü olan bir BitTorrent istemcisidir." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7217,18 +7230,18 @@ msgstr "" "BitTorrent, kişiden-kişiye bir dosya paylaşım protokolüdür. BitTorrent'in " "isimsiz olmadığını unutmayın." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" "Lütfen aktarım arka plan programının varsayılan bağlantı noktasını " "değiştirmeyin." -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7238,7 +7251,7 @@ msgstr "" "hissettiren herhangi bir konumdan haberleri okumayı sağlamak için " "tasarlanmış bir haber bildirim (RSS/Atom) okuyucusu ve toplayıcısıdır." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any {box_name} " "oturum açma adı olan herhangi bir kullanıcı tarafından erişilebilir." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7255,15 +7268,15 @@ msgstr "" "Tiny Tiny RSS için bir mobil veya masaüstü uygulaması kullanırken, bağlanmak " "için /tt-rss-app URL'sini kullanın." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Haber bildirimlerini oku ve abone ol" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Haber Bildirim Okuyucusu" @@ -7271,12 +7284,12 @@ msgstr "Haber Bildirim Okuyucusu" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "En son yazılım ve güvenlik güncellemelerini denetleyin ve uygulayın." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7289,7 +7302,7 @@ msgstr "" "Eğer sistemin yeniden başlatılması gerekli görülürse, saat 02:00'da otomatik " "olarak yapılır ve tüm uygulamalar kısa bir süre için kullanılamaz hale gelir." -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7517,7 +7530,7 @@ msgstr "Yükseltmeyi başlatma başarısız oldu." msgid "Frequent feature updates activated." msgstr "Sık yapılan özellik güncellemeleri etkinleştirildi." -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7528,7 +7541,7 @@ msgstr "" "kullanıcıya, uygulamaya erişme yetkisi vermek için bir kullanıcı hesabının " "bir grubun parçası olmasını gerektirir." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7540,15 +7553,15 @@ msgstr "" "sadece admin grubunun kullanıcıları uygulamaları veya sistem " "ayarlarını değiştirebilir." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Kullanıcılar ve Gruplar" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Tüm hizmetlere ve sistem ayarlarına erişim" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP \"{search_item}\" girişini denetleme" @@ -7795,11 +7808,11 @@ msgstr "Parolayı Değiştir" msgid "Password changed successfully." msgstr "Parola başarılı olarak değiştirildi." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard hızlı, modern ve güvenli bir VPN tünelidir." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7809,7 +7822,7 @@ msgstr "" "cihazından gelen tüm giden trafiği VPN aracılığıyla yönlendirmek için " "kullanılabilir." -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8126,7 +8139,7 @@ msgstr "Sunucuya Bağlantıyı Sil" msgid "Server deleted." msgstr "Sunucu silindi." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8140,7 +8153,7 @@ msgstr "" "kullanılarak seçilebilir. Yönetim arayüzü ve üretilen web sayfaları mobil " "cihazlara uygundur." -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8154,7 +8167,7 @@ msgstr "" "Sayfalarınıza ve yazılarınıza daha iyi URL'ler sağlamak için yönetici " "arayüzünde kalıcı bağlantıları etkinleştirin." -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " @@ -8164,7 +8177,7 @@ msgstr "" "sırasında oluşturulur. Gelecekte yönetim arayüzüne erişmek için yönetici sayfası yerini işaretleyin." -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " @@ -8174,12 +8187,12 @@ msgstr "" "yükseltmesini el ile çalıştırmanız gerekir. Ek eklentiler veya temalar kendi " "sorumluluğunuzda yüklenebilir ve yükseltilebilir." -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "Web Sitesi ve Blog" @@ -8196,7 +8209,7 @@ msgstr "" "WordPress sitesini veya blogunu görüntülemesine izin verir. Sadece ilk " "WordPress kurulumunu gerçekleştirdikten sonra etkinleştirin." -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8218,7 +8231,7 @@ msgstr "" "çekilmiş fotoğrafları bulmak kolaydır. Tek tek fotoğraflar, doğrudan bir " "bağlantı gönderilerek başkalarıyla paylaşılabilir." -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8229,11 +8242,11 @@ msgstr "" "Ek kullanıcılar için hesaplar hem {box_name} cihazında hem de Zoph'da aynı " "kullanıcı adıyla oluşturulmak zorundadır." -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "Fotoğraf Düzenleyici" @@ -8271,23 +8284,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Genel" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Kurulum sırasında hata oldu" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "yükleniyor" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "indiriliyor" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "ortam değiştirme" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "yapılandırma dosyası: {file}" @@ -8661,6 +8674,12 @@ msgstr "%%%(percentage)s tamamlandı" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Postfix domain name config" +#~ msgstr "Postfix etki alanı adı yapılandırması" + +#~ msgid "Error updating configuration" +#~ msgstr "Yapılandırma güncellenirken hata oldu" + #~ msgid "The alias was taken" #~ msgstr "Kod adı alındı" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 6a9ea5687..e6f489359 100644 --- a/plinth/locale/uk/LC_MESSAGES/django.po +++ b/plinth/locale/uk/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-11-19 11:51+0000\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1057,15 +1058,15 @@ msgstr "" "до застосунку. Усі користувачі з доступом можуть користуватися всіма " "бібліотеками." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Використання бібліотеки ел. книжок calibre" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "Бібліотека ел. книжок" @@ -1139,7 +1140,7 @@ msgstr "{name} видалено." msgid "Could not delete {name}: {error}" msgstr "Не вдалося видалити {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1152,7 +1153,7 @@ msgstr "" "розширених функцій, які зазвичай не потрібні. Також доступний вебтермінал " "для консольних операцій." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1164,7 +1165,7 @@ msgstr "" "відкривання власних портів фаєрволу та розширеної роботи з мережею, як-от " "роботи зі звʼязком, мостами та керуванням VLAN." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1173,7 +1174,7 @@ msgstr "" "До нього може мати доступ будь-який користувач " "на {box_name}, що належить до групи admin." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1181,12 +1182,12 @@ msgstr "" "Cockpit вимагає доступу до нього через доменне імʼя. Він не працюватиме, " "якщо звертатися до нього використовуючи IP-адресу як частину URL." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Адміністрування сервера" @@ -1198,7 +1199,7 @@ msgstr "Доступ" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit працюватиме лише, якщо входити через наступні URL-адреси." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1206,11 +1207,11 @@ msgstr "" "Тут Ви можете задати деякі загальні параметри налаштувань, як-от назва " "компʼютера, назва домена, домашня сторінка вебсервера тощо." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Загальні налаштування" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1219,7 +1220,7 @@ msgstr "Загальні налаштування" msgid "Configure" msgstr "Налаштування" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1345,7 +1346,7 @@ msgstr "Відображення розширених застосунків і msgid "Hiding advanced apps and features" msgstr "Приховування розширених застосунків і можливостей" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1357,7 +1358,7 @@ msgstr "" "комунікації можуть використовувати його для встановлення дзвінків між " "частинами, які по-іншому не можливо звʼязати між собою." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse або ejabberd потрібно налаштовувати з урахуванням деталей наведених тут." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "Помічник VoIP" @@ -1390,7 +1391,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Використовуйте наступний спільний секрет автентифікації:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1398,11 +1399,11 @@ msgstr "" "Сервер мережевого часу — це програма, що підтримує системний час " "синхронізовано зі серверами в Інтернеті." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Дата і час" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Час синхронізовано зі сервером NTP" @@ -1431,11 +1432,11 @@ msgstr "Помилка задавання часового поясу: {exceptio msgid "Time zone set" msgstr "Часовий пояс задано" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge – це клієнт BitTorrent із вебінтерфейсом." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1443,17 +1444,17 @@ msgstr "" "Типовий пароль – 'deluge', але Ви можете ввійти і змінити його відразу після " "ввімкнення цього сервісу." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Завантаження файлів через застосунки BitTorrent" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "Вебклієнт BitTorrent" @@ -1465,7 +1466,7 @@ msgstr "Каталог завантаження" msgid "Bittorrent client written in Python/PyGTK" msgstr "Клієнт Bittorrent, написаний на Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1473,53 +1474,53 @@ msgstr "" "Тест діагностики системи запускає певну кількість перевірок, щоб упевнитися, " "що застосунки і сервіси працюють так, як очікується." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Діагностика" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "пройдено" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: 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:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "помилка" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "попередження" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "МіБ" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "ҐіБ" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "" "Ви повинні вимкнути деякі застосунки, щоб зменшити використання памʼяті." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Не слід установлювати нових застосунків на цій системі." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1528,7 +1529,7 @@ msgstr "" "У системі бракує памʼяті: {percent_used}% використано, {memory_available} " "{memory_available_unit} вільно. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Мало памʼяті" @@ -1581,7 +1582,7 @@ msgstr "Результат" msgid "Diagnostic Test" msgstr "Тест діагностики" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1589,12 +1590,12 @@ msgstr "" "diaspora* це децентралізована соціальна мережа, де Ви можете зберігати і " "контролювати свої дані." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Федеративна соціальна мережа" @@ -1649,7 +1650,7 @@ msgstr "Реєстрацію користувачів дозволено" msgid "User registrations disabled" msgstr "Реєстрацію користувачів вимкнено" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1660,7 +1661,7 @@ msgstr "" "кожних 24год.), то іншим може бути важко знайти Вас в Інтернеті. Це " "перешкоджатиме іншим пошук сервісів, що надаються цим {box_name}." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1671,11 +1672,11 @@ msgid "" "IP address." msgstr "" -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Клієнт динамічної DNS" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Динамічна доменна назва" @@ -1731,7 +1732,7 @@ 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" #: plinth/modules/dynamicdns/forms.py:62 @@ -1810,10 +1811,9 @@ msgstr "Надайте пароль" #: plinth/modules/dynamicdns/templates/dynamicdns.html:12 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." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1864,7 +1864,7 @@ msgstr "" msgid "Last update" msgstr "Востаннє оновлено" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Про FreedomBox" @@ -1891,7 +1891,7 @@ msgstr "Налаштувати динамічну DNS" msgid "Dynamic DNS Status" msgstr "Стан динамічної DNS" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1899,7 +1899,7 @@ msgstr "" "XMPP – це відкритий і стандартизований протокол спілкування. Тут Ви можете " "запустити і налаштувати свій XMPP-сервер ejabberd." -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn або налаштуйте зовнішній " "сервер." -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "Сервер чату" @@ -2032,7 +2032,7 @@ msgstr "" "виглядатиме як username@%(domainname)s. Ви можете налаштувати свій " "домен на системній сторінці Налаштувати." -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." @@ -2040,25 +2040,21 @@ msgstr "" "Застосунок Roundcube надає " "вебінтерфейс для доступу користувачів до ел. пошти." -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 msgid "Email Server" msgstr "Сервер електронної пошти" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Працює на Postfix, Dovecot та Rspamd" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "Налаштування доменної назви Postfix" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2091,48 +2087,60 @@ msgstr "Postfix використовує сертифікат TLS" msgid "Has a TLS certificate" msgstr "Має сертифікат TLS" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 msgid "Enter a valid domain" msgstr "Уведіть коректний домен" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Enter a valid username." msgid "Enter a valid destination" msgstr "Уведіть коректне розташування" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "домен" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +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 "Новий аліяс (без @domain)" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "Містить неправильні символи" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "Має починатися і закінчуватися на a-z або 0-9" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "Не може бути числом" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 msgid "Aliases" msgstr "Псевдоніми" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Дозволено" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2141,7 +2149,7 @@ msgid "Disabled" msgstr "Вимкнено" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2159,7 +2167,7 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 msgid "Manage Aliases" msgstr "Керування аліясами" @@ -2184,43 +2192,28 @@ msgstr "Створити новий аліяс електронної пошти msgid "Add" msgstr "Додати" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Домени" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Spam" msgstr "Керування спамом" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 msgid "Service Alert" msgstr "Сповіщення сервісу" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "Внутрішня помилка в {0}" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "Перевірте системний журнал, щоб дізнатися більше" -#: plinth/modules/email_server/views.py:217 -msgid "Error updating configuration" -msgstr "Помилка оновлення налаштувань" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "Налаштування не змінено" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2231,7 +2224,7 @@ msgstr "" "трафік Вашого {box_name}. Тримайте фаєрвол увімкненим і належно " "налаштованим, це зменшить ризик загроз безпеці з Інтернету." -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "Фаєрвол" @@ -2342,7 +2335,7 @@ msgstr "Розпочати встановлення" msgid "Setup Complete" msgstr "Налаштування завершено" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2353,7 +2346,7 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2361,15 +2354,15 @@ msgstr "" "Щоб дізнатися більше як користуватися Git відвідайте навчання Git." -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "Доступ до читання-запису репозиторіїв Git" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "Просте розміщення Git" @@ -2482,31 +2475,31 @@ msgstr "Репозиторій змінено." msgid "Edit repository" msgstr "Змінити репозиторій" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "Документація" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "Посібник" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Отримати підтримку" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Надіслати відгук" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2757,7 +2750,7 @@ msgstr "Про {box_name}" msgid "{box_name} Manual" msgstr "Посібник для {box_name}" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2765,7 +2758,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." @@ -2773,25 +2766,25 @@ msgstr "" "Детальніше про I2P на їхній домашній сторінці проєкту." -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "Керування застосунком I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "Мережа анонімності" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Проксі I2P" @@ -2828,7 +2821,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2838,7 +2831,7 @@ msgstr "" "легких мов розмітки, включаючи Markdown, та основні функції для роботи з " "блоґами, як-от коментарі та стрічки RSS." -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2852,15 +2845,15 @@ msgstr "" "\"{users_url}\">налаштуваннях користувача Ви можете змінити ці права або " "додавати нових користувачів." -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Вікі та блоґ" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "Перегляд і редагування застосунків вікі" @@ -2937,11 +2930,11 @@ msgstr "{title} видалено." msgid "Could not delete {title}: {error}" msgstr "Не можливо видалити {title}: {error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted — це сервер для Gobby, колективного редактора тексту." -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2952,11 +2945,11 @@ msgstr "" "Gobby, стільничний клієнт і встановіть їх. Потім запустіть Gobby, " "виберіть «Зʼєднатися зі сервером» і введіть Вашу доменну назву {box_name}." -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "Сервер Gobby" @@ -2977,7 +2970,7 @@ msgstr "" "Запустіть Gobby, виберіть «Зʼєднатися зі сервером» і введіть Вашу доменну " "назву {box_name}." -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2985,11 +2978,11 @@ msgstr "" "JSXC – це вебклієнт для XMPP. Як правило, використовується з запущеним " "локальним сервером XMPP." -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "Клієнт чату" @@ -2998,7 +2991,7 @@ msgstr "Клієнт чату" msgid "JavaScript license information" msgstr "Інформація про ліцензію JavaScript" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3008,7 +3001,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3016,15 +3009,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "Сертифікати" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "Тестування не можливе: Нема налаштованих доменів." @@ -3127,7 +3120,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3137,14 +3130,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3215,7 +3208,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3223,7 +3216,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3232,7 +3225,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3240,12 +3233,12 @@ msgstr "" "Будь-хто, хто має посилання на цю вікі може читати її. Лише користувачі, що " "ввійшли можуть робити зміни вмісту." -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "Вікі" @@ -3327,7 +3320,7 @@ msgstr "" msgid "Server URL updated" msgstr "URL сервера оновлено" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3336,11 +3329,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "Блокова пісочниця" @@ -3409,7 +3402,7 @@ msgstr "Конфіґурацію PVP оновлено" msgid "Damage configuration updated" msgstr "Конфіґурацію пошкоджень оновлено" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3420,15 +3413,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "Сервер потокового медія" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "Простий сервер медія" @@ -3468,36 +3461,36 @@ msgstr "Призначений каталог не існує." msgid "Updated media directory" msgstr "Оновлено каталог медія" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "Завантаження файлів через застосунок eDonkey" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "Обмін файлами peer-to-peer" @@ -3509,7 +3502,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3521,7 +3514,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3532,7 +3525,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3551,6 +3544,10 @@ msgstr "Скасувати" msgid "Service" msgstr "Сервіс" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Домени" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3654,24 +3651,24 @@ msgstr "Публікування ключа на сервер ключів." msgid "Error occurred while publishing key." msgstr "Помилка відбулася під час публікування ключа." -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "Голосовий чат" @@ -3697,7 +3694,7 @@ msgstr "Mumla" msgid "SuperUser password successfully updated." msgstr "Пароль суперкористувача успішно оновлено." -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3706,7 +3703,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "Назва сервісів" @@ -3722,7 +3719,7 @@ msgstr "Усі вебзастосунки" msgid "Services" msgstr "Сервіси" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3730,7 +3727,7 @@ msgstr "" "Налаштування мережевих пристроїв. Зʼєднання з Інтернетом через Ethernet, Wi-" "Fi або PPPoE. Ділитися цим зʼєднанням з іншими пристроями в мережі." -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3738,11 +3735,11 @@ msgstr "" "Пристрої, що адмініструються іншими способами, можуть бути недоступними для " "налаштування тут." -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "Мережі" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4232,7 +4229,7 @@ msgstr "Сервер DNS" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4245,7 +4242,7 @@ msgid "This connection is not active." msgstr "Це зʼєднання неактивне." #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "Безпека" @@ -4713,7 +4710,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "інтерфейс TUN або TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -4803,7 +4800,7 @@ msgstr "Зʼєднання {name} видалено." msgid "Failed to delete connection: Connection not found." msgstr "Не вдалося видалити зʼєднання: Зʼєднання не знайдено." -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4814,20 +4811,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "Підʼєднання до сервісів VPN" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Віртуальна приватна мережа" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4892,7 +4889,7 @@ msgstr "" msgid "Download my profile" msgstr "Завантажити мій профіль" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4901,19 +4898,19 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} підʼєднано до (бездротового) маршрутизатора, яким Ви не можете " "керувати." -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -4921,7 +4918,7 @@ msgstr "" "Ваш постачальник Інтернет-послуг не надає Вам зовнішньої IP-адреси, а надає " "Інтернет-зʼєднання через NAT." -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -4929,11 +4926,11 @@ msgstr "" "Ваш постачальник Інтернет-послуг не надає Вам статичної IP-адреси і Ваша IP-" "адреса змінюється кожного разу, коли Ви підʼєднуєтеся до Інтернету." -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "Ваш ISP обмежує вхідні зʼєднання." -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4942,15 +4939,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "Публічна видимість" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "Домен PageKite" @@ -5086,33 +5083,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "Продуктивність" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "Моніторинг системи" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "Перезапустити або вимкнути систему." -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "Живлення" @@ -5169,14 +5166,14 @@ msgstr "" msgid "Shut Down Now" msgstr "Вимкнути зараз" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5186,20 +5183,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "Веб-проксі" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5216,7 +5213,7 @@ msgstr "" "один чи більше клієнтів Quassel для приєднання чи відʼєднання з настільного " "ПК чи мобільного." -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your настільного ПК " "і мобільного." -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "Клієнт IRC" @@ -5239,7 +5236,7 @@ msgstr "Клієнт IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5254,19 +5251,19 @@ msgstr "" "\">підтримувані клієнтські застосунки. До Radicale може мати доступ будь-" "який користувач з імʼям входу для {box_name}." -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "Календар і адресна книга" @@ -5338,7 +5335,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Оновлено налаштування прав доступу" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5351,7 +5348,7 @@ msgstr "" "MIME, адресної книжки, маніпулювання теками, пошуку повідомлень та перевірки " "правопису." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5365,7 +5362,7 @@ msgstr "" "imap.example.com. Для IMAP через SSL (рекомендується), поле " "сервера виглядає як imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5380,17 +5377,17 @@ msgstr "" "Google (https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "Клієнт ел. пошти" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5399,31 +5396,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "Доступ до приватних поширень" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "Мережеве сховище файлів" @@ -5501,11 +5498,11 @@ msgstr "Дія" msgid "FreedomBox OS disk" msgstr "Диск ОС FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5531,7 +5528,7 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "Помилка вимкнення поширення: {error_message}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5539,7 +5536,7 @@ msgstr "" "Searx — це система збірного пошуку в Інтернеті, яка поважає приватність. " "Вона збирає і відображає результати з різних пошукових систем." -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -5547,15 +5544,15 @@ msgstr "" "Searx може використовуватися для обходу стеження та профілювання пошуковими " "системами." -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "Пошук в Інтернеті" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "Вебпошук" @@ -5717,32 +5714,32 @@ msgstr "" msgid "Updated security configuration" msgstr "Оновлено конфіґурацію безпеки" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli дозволяє зберігати і ділитися закладками." -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "Закладки" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5751,17 +5748,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5792,7 +5789,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "Метод шифрування. Має відповідати налаштуванням на сервері." -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5896,7 +5893,7 @@ msgstr "Змінити ділянку" msgid "Share deleted." msgstr "Ділянку видалено." -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -5906,7 +5903,7 @@ msgstr "" "можна використовувати для відкочування системи до попереднього хорошого " "стану в разі небажаних змін системи." -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5917,7 +5914,7 @@ msgstr "" "встановлення ПЗ. Старі зрізи автоматично видалятимуться відповідно до " "налаштувань нижче." -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for резервних копій, поки вони " "не зберігаються на одному розділі. " -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "Зрізи сховища" @@ -6124,7 +6121,7 @@ msgstr "Систему потрібно перезапустити, щоб за msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6132,7 +6129,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "Сервер захищеної оболонки (SSH)" @@ -6173,7 +6170,7 @@ msgstr "автентифікація SSH із вимкненим паролем. msgid "SSH authentication with password enabled." msgstr "автентифікація SSH із дозволеним паролем." -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6181,7 +6178,7 @@ msgstr "" msgid "Login" msgstr "Вхід" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6192,145 +6189,145 @@ msgstr "" "{box_name}. Ви можете переглядати медія-сховище під час використання, " "монтувати і відмонтовувати знімні накопичувачі, розширювати розділ root тощо." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "Сховище" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} байтів" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} КБ" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} МБ" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} ҐБ" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} ТБ" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "Операція невдала." -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "Операцію скасовано." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Пристрій вже відмонтований." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "Час операції вийшов." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "Операція вже була скасована." +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Пристрій уже змонтовано." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Пристрій не змонтовано." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Пристрій змонтовано іншим користувачем." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Мало місця в розділі системи: {percent_used}% використано, {free_space} " "вільно." -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "Мало місця на диску" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "Некоректна назва каталогу." -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "Каталог не існує." -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "Шлях не є каталогом." -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "Каталог не може читатися користувачем." -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "Каталог не може записуватися користувачем." -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "Каталог" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "Підкаталог (необовʼязково)" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6407,7 +6404,7 @@ msgstr "Пристрій можна безпечно витягати." msgid "Error ejecting device: {error_message}" msgstr "Помилка виймання пристрою: {error_message}" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6415,7 +6412,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6427,20 +6424,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "Адміністрування програми Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "Синхронізація файлів" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6448,7 +6445,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6456,11 +6453,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "Розподілене файлове сховище" @@ -6495,7 +6492,7 @@ msgstr "" msgid "Remove" msgstr "Вилучити" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6508,40 +6505,40 @@ msgstr "" "під час вебсерфінгу, проєкт Tor радить використовувати Tor Browser." -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6669,11 +6666,15 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "Налаштування не змінено" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission – це клієнт BitTorrent із вебінтерфейсом." -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -6681,16 +6682,16 @@ msgstr "" "BitTorrent – це протокол обміну файлами peer-to-peer. Зауважте, що " "BitTorrent не анонімний." -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "Будь ласка, не змінюйте типовий порт демона transmission." -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -6700,7 +6701,7 @@ msgstr "" "спроєктований читати новини з будь-яких місць, при цьому намагається бути " "максимально близьким до стільничної програми, на скільки це можливо." -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any користувача, що може входити у {box_name}." -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -6717,15 +6718,15 @@ msgstr "" "Коли використовуєте мобільний або стільничний застосунок для Tiny Tiny RSS, " "використовуйте URL /tt-rss-app для зʼєднання." -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "Читати і підписатися на стрічки новин" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "Читачка новинних стрічок" @@ -6733,12 +6734,12 @@ msgstr "Читачка новинних стрічок" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (відгілка)" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "Перевірити і застосувати останні оновлення безпеки і ПЗ." -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6746,7 +6747,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6954,7 +6955,7 @@ msgstr "Не вдалося розпочати оновлення." msgid "Frequent feature updates activated." msgstr "Оновлення частих можливостей активовано." -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -6965,7 +6966,7 @@ msgstr "" "застосунків. Деякі застосунки також вимагають, щоб обліківка була частиною " "групи, щоб отримати авторизований доступ до застосунку." -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6977,15 +6978,15 @@ msgstr "" "користувачі з групи admin можуть змінювати застосунки або системні " "налаштування." -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "Користувачі і групи" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "Доступ до всіх сервісів і налаштувань системи" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7220,11 +7221,11 @@ msgstr "Зберегти пароль" msgid "Password changed successfully." msgstr "Пароль змінено успішно." -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard — це швидкий, сучасний, безпечний тунель VPN." -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7233,7 +7234,7 @@ msgstr "" "Може використовуватися для зʼєднання з постачальником VPN, що підтримує " "WireGuard, і перенаправлення всього вихідного трафіку {box_name} через VPN." -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7530,7 +7531,7 @@ msgstr "Видалити зʼєднання до сервера" msgid "Server deleted." msgstr "Сервер видалено." -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7539,7 +7540,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7548,26 +7549,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "Вебсайт і блоґ" @@ -7581,7 +7582,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7594,7 +7595,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7602,11 +7603,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "Організатор фотографій" @@ -7642,23 +7643,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "Помилка під час установлення" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "установлення" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "завантаження" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "зміна медія" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "файл конфіґурації: {file}" @@ -8025,6 +8026,12 @@ msgstr "%(percentage)s%% завершено" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Postfix domain name config" +#~ msgstr "Налаштування доменної назви Postfix" + +#~ msgid "Error updating configuration" +#~ msgstr "Помилка оновлення налаштувань" + #~ msgid "The alias was taken" #~ msgstr "Аліяс взято" diff --git a/plinth/locale/vi/LC_MESSAGES/django.po b/plinth/locale/vi/LC_MESSAGES/django.po index e9d81e1b8..8a940cefc 100644 --- a/plinth/locale/vi/LC_MESSAGES/django.po +++ b/plinth/locale/vi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-07-28 08:34+0000\n" "Last-Translator: bruh \n" "Language-Team: Vietnamese calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1059,15 +1060,15 @@ msgstr "" "ứng dụng. Tất cả người dùng có quyền truy cập đều có thể sử dụng tất cả các " "thư viện." -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "Sử dụng thư viện sách điện tử của calibre" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "Thư viện sách điện tử" @@ -1141,7 +1142,7 @@ msgstr "Đã xoá {name}." msgid "Could not delete {name}: {error}" msgstr "Không thể xoá {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1154,7 +1155,7 @@ msgstr "" "năng nâng cao thường không bắt buộc phải có đều có thể được điều khiển. Cũng " "có một ứng dụng dòng lệnh dựa trên web cho các hoạt động dòng lệnh." -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1166,7 +1167,7 @@ msgstr "" "mở các cổng tường lửa tùy chỉnh và các hoạt động mạng nâng cao như là gắn " "kết, bắc cầu và quản lý VLAN." -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1175,7 +1176,7 @@ msgstr "" "Nó có thể được truy cập bởi bất kỳ người dùng nào trên {box_name} thuộc về nhóm admin." -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1183,12 +1184,12 @@ msgstr "" "Cockpit yêu cầu bạn truy cập nó qua một tên miền. Nó sẽ không hoạt động khi " "được truy cập vào bằng một địa chỉ IP với tư cách là một phần của URL." -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "Quản trị máy chủ" @@ -1200,7 +1201,7 @@ msgstr "Truy cập" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit sẽ chỉ hoạt động khi được truy cập bằng các URL sau." -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." @@ -1208,11 +1209,11 @@ msgstr "" "Ở đây bạn có thể đặt một số tùy chọn thiết lập chung như tên máy chủ, tên " "miền, trang chủ của máy chủ web, v.v." -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "Thiết lập chung" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1221,7 +1222,7 @@ msgstr "Thiết lập chung" msgid "Configure" msgstr "Thiết lập" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1351,7 +1352,7 @@ msgstr "Đang hiện các ứng dụng và tính năng nâng cao" msgid "Hiding advanced apps and features" msgstr "Đang ẩn các ứng dụng và tính năng nâng cao" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1363,7 +1364,7 @@ msgstr "" "các máy chủ giao tiếp khác có thể sử dụng nó để thiết lập một cuộc gọi giữa " "các bên mà không thể kết nối với nhau nếu không có nó." -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as ejabberd cần phải được thiết lập với các chi tiết được cung " "cấp ở đây." -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "Trợ giúp cho VoIP" @@ -1395,7 +1396,7 @@ msgstr "Sử dụng các URL sau để thiết lập máy chủ giao tiếp củ msgid "Use the following shared authentication secret:" msgstr "Sử dụng bí mật xác thực được chia sẻ sau đây:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1403,11 +1404,11 @@ msgstr "" "Máy chủ thời gian mạng là một chương trình giữ cho thời gian hệ thống được " "đồng bộ với các máy chủ trên Internet." -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "Ngày & Giờ" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "Đã đồng bộ thời gian đến máy chủ NTP" @@ -1436,11 +1437,11 @@ msgstr "Lỗi khi đặt múi giờ: {exception}" msgid "Time zone set" msgstr "Đã đặt múi giờ" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge là một ứng dụng khách cho BitTorrent, nó có một Giao diện Web." -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1448,17 +1449,17 @@ msgstr "" "Mật khẩu mặc định là 'deluge', nhưng bạn nên đăng nhập và đổi nó ngay lập " "tức sau khi bật dịch vụ này." -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "Tải các tệp xuống bằng các ứng dụng BitTorrent" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "Ứng dụng khách trên web cho BitTorrent" @@ -1470,7 +1471,7 @@ msgstr "Thư mục tải xuống" msgid "Bittorrent client written in Python/PyGTK" msgstr "Ứng dụng khách cho Bittorrent được viết bằng ngôn ngữ Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1478,52 +1479,52 @@ msgstr "" "Kiểm tra chẩn đoán hệ thống sẽ chạy một số phép thử trên hệ thống của bạn để " "xác nhận rằng các ứng dụng và dịch vụ đang hoạt động như mong đợi." -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "Chẩn đoán" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "đã qua" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "đã trượt" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "lỗi" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "cảnh báo" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GiB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "Bạn nên tắt một số ứng dụng để sử dụng ít bộ nhớ hơn." -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "Bạn không nên cài đặt bất kỳ ứng dụng mới nào trên hệ thống này." -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1532,7 +1533,7 @@ msgstr "" "Hệ thống còn ít bộ nhớ: đã sử dụng {percent_used}%, còn trống " "{memory_available} {memory_available_unit}. {advice_message}" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "Ít bộ nhớ" @@ -1585,7 +1586,7 @@ msgstr "Kết quả" msgid "Diagnostic Test" msgstr "Kiểm tra chẩn đoán" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1593,12 +1594,12 @@ msgstr "" "diaspora* là một mạng xã hội phi tập trung, ở đó bạn có thể lưu trữ và kiểm " "soát dữ liệu của bạn." -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "Mạng xã hội được liên kết" @@ -1659,7 +1660,7 @@ msgstr "Đăng ký người dùng đã bật" msgid "User registrations disabled" msgstr "Đăng ký người dùng đã tắt" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1670,7 +1671,7 @@ msgstr "" "24h), những người khác có thể khó tìm bạn trên Internet. Việc này sẽ ngăn " "những người khác tìm các dịch vụ được {box_name} này cung cấp." -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1687,11 +1688,11 @@ msgstr "" "phân tên DNS của bạn cho IP mới, và nếu ai đó từ Internet hỏi tên DNS của " "bạn, họ sẽ nhận một phản hồi với địa chỉ IP hiện tại của bạn." -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "Ứng dụng khách DNS động" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 msgid "Dynamic Domain Name" msgstr "Tên miền động" @@ -1746,12 +1747,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Bỏ trống ô này nếu bạn muốn giữ mật khẩu hiện tại." #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "Giá trị không bắt buộc. Nếu {box_name} của bạn không được kết nối trực tiếp " "đến Internet (vd: được kết nối đến một router NAT) URL này được sử dụng để " @@ -1832,12 +1838,18 @@ msgid "Please provide a password" msgstr "Vui lòng cung cấp một mật khẩu" #: 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "Nếu bạn đang tìm một tài khoản DNS động miễn phí, bạn có thể tìm một dịch vụ " "GnuDIP miễn phí tại web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -2039,34 +2051,28 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Domain Name Server" msgid "Email Server" msgstr "Máy chủ tên miền" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "Lỗi khi đặt tên miền: {exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2101,52 +2107,64 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Chấp nhận tất cả chứng chỉ SSL" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid domain name" msgid "Enter a valid domain" msgstr "Tên miền không hợp lệ" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "TLS domain" msgid "domain" msgstr "Miền TLS" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "TLS domain" +msgid "Primary domain" +msgstr "Miền TLS" + +#: 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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "Quản lý thư viện" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2155,7 +2173,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2173,7 +2191,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2204,49 +2222,32 @@ msgstr "Tạo một bản sao lưu mới" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Spam" msgstr "Quản lý thư viện" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Loại dịch vụ" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "Đã xảy ra lỗi trong khi thiết lập." - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2254,7 +2255,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2361,7 +2362,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2372,21 +2373,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2498,31 +2499,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2747,7 +2748,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2755,31 +2756,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2816,14 +2817,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2832,15 +2833,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2917,11 +2918,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2929,11 +2930,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2952,17 +2953,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2971,7 +2972,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2981,7 +2982,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2989,15 +2990,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3098,7 +3099,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3108,14 +3109,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3186,7 +3187,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3194,7 +3195,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3203,18 +3204,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3296,7 +3297,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3305,11 +3306,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3375,7 +3376,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3386,15 +3387,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3434,36 +3435,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3475,7 +3476,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3487,7 +3488,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3498,7 +3499,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3517,6 +3518,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3620,24 +3625,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3663,7 +3668,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3672,7 +3677,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3688,23 +3693,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4172,7 +4177,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4185,7 +4190,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4626,7 +4631,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4715,7 +4720,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4726,20 +4731,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4803,7 +4808,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4812,33 +4817,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4847,15 +4852,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4989,33 +4994,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -5068,14 +5073,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5085,20 +5090,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5109,7 +5114,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -5129,7 +5134,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5139,19 +5144,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5218,7 +5223,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5226,7 +5231,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5235,7 +5240,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5245,17 +5250,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5264,31 +5269,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5366,11 +5371,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5396,27 +5401,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5571,32 +5576,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5605,17 +5610,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5644,7 +5649,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5744,14 +5749,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5759,14 +5764,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5956,7 +5961,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5964,7 +5969,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6005,7 +6010,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6013,7 +6018,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6024,143 +6029,143 @@ msgstr "" "của bạn. Bạn có thể xem phương tiện lưu trữ hiện đang sử dụng, gắn và bỏ gắn " "phương tiện có thể rút ra, mở rộng phân vùng root, v.v." -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "Thiết bị này đã đang bỏ gắn rồi." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "Đang thử bỏ gắn một thiết bị đang bận." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "Thiết bị này đã được gắn rồi." -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "Thiết bị này chưa được gắn." -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "Thiết bị này được một người dùng khác gắn." -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6235,7 +6240,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6243,7 +6248,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6255,20 +6260,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6276,7 +6281,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6284,11 +6289,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6323,7 +6328,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6332,40 +6337,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6491,54 +6496,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6546,12 +6555,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6559,7 +6568,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6755,14 +6764,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6770,15 +6779,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7004,18 +7013,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7309,7 +7318,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7318,7 +7327,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7327,26 +7336,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7360,7 +7369,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7373,7 +7382,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7381,11 +7390,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7419,23 +7428,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7772,6 +7781,16 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "Lỗi khi đặt tên miền: {exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "Đã xảy ra lỗi trong khi thiết lập." + #, fuzzy #~| msgid "Enable scheduled backups" #~ msgid "Enable selected" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index 50e80fd40..9011321ee 100644 --- a/plinth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hans/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-09-18 13:33+0000\n" "Last-Translator: 池边树下 \n" "Language-Team: Chinese (Simplified) calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1020,15 +1021,15 @@ msgstr "" "只有属于calibre组的用户才能够访问该应用程序。所有有权限的用户都可以" "使用所有的图书馆。" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "使用 calibre 电子书库" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "电子书库" @@ -1100,7 +1101,7 @@ msgstr "{name} 已删除。" msgid "Could not delete {name}: {error}" msgstr "不能删除 {name}:{error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1112,7 +1113,7 @@ msgstr "" "个 {box_name} 上,许多通常不会需要的高级功能也可被控制。您也可以使用基于网页" "的终端来进行控制台操作。" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1122,7 +1123,7 @@ msgstr "" "Cockpit可以用来执行高级存储操作,如磁盘分区和RAID管理。它还可以用来打开自定义" "防火墙端口和高级网络,如绑定、桥接和VLAN管理。" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1130,7 +1131,7 @@ msgid "" msgstr "" "它可以由属于管理组的{box_name}上的任何用户访问。" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1138,12 +1139,12 @@ msgstr "" "Cockpit要求你通过一个域名来访问它。当使用IP地址作为URL的一部分访问时,它将无" "法工作。" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "服务器管理" @@ -1155,17 +1156,17 @@ msgstr "访问" msgid "Cockpit will only work when accessed using the following URLs." msgstr "Cockpit只有在使用以下URL访问时才能工作。" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "在这里你可以设置一些一般的配置选项,如主机名、域名、网络服务器主页等。" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "常规配置" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1174,7 +1175,7 @@ msgstr "常规配置" msgid "Configure" msgstr "配置" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1299,7 +1300,7 @@ msgstr "展现先进的应用和特征" msgid "Hiding advanced apps and features" msgstr "隐藏先进的应用和特征" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1309,7 +1310,7 @@ msgstr "" "Coturn是一个服务器,通过提供TURN和STUN协议的实现来促进音频/视频通话和会议。" "WebRTC、SIP和其他通信服务器可以使用它在无法相互连接的各方之间建立通话。" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse或" "ejabberd等服务器需要用这里提供的细节进行配置。" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:57 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:58 msgid "VoIP Helper" msgstr "网络电话助手" @@ -1341,17 +1342,17 @@ msgstr "使用以下URL来配置你的通信服务器。" msgid "Use the following shared authentication secret:" msgstr "正在使用以下磁盘:" -#: plinth/modules/datetime/__init__.py:24 +#: plinth/modules/datetime/__init__.py:18 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." msgstr "网络时间服务是与 Internet 上的服务器同步系统时间的一个程序。" -#: plinth/modules/datetime/__init__.py:69 +#: plinth/modules/datetime/__init__.py:64 msgid "Date & Time" msgstr "日期与时间" -#: plinth/modules/datetime/__init__.py:115 +#: plinth/modules/datetime/__init__.py:110 msgid "Time synchronized to NTP server" msgstr "时间同步到NTP服务器" @@ -1378,11 +1379,11 @@ msgstr "设置时区错误:{exception}" msgid "Time zone set" msgstr "时区设置" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:22 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge 是一个有网页界面的 BitTorrent 客户端。" -#: plinth/modules/deluge/__init__.py:29 +#: plinth/modules/deluge/__init__.py:23 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from /deluge 路径访问网页" "服务器。默认密码是“deluge”,但是你需要在启用此服务以后立刻登录并修改它。" -#: plinth/modules/deluge/__init__.py:48 -#: plinth/modules/transmission/__init__.py:51 +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 msgid "Download files using BitTorrent applications" msgstr "使用BitTorrent应用程序下载文件" -#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "启用 Deluge" -#: plinth/modules/deluge/__init__.py:54 -#: plinth/modules/transmission/__init__.py:57 +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 msgid "BitTorrent Web Client" msgstr "" "BitTorrent 网页客户端\n" @@ -1420,61 +1421,61 @@ msgstr "下载目录" msgid "Bittorrent client written in Python/PyGTK" msgstr "用Python/PyGTK编写的Bittorrent客户端" -#: plinth/modules/diagnostics/__init__.py:28 +#: plinth/modules/diagnostics/__init__.py:23 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" "系统诊断将运行测试程序检查您的系统以确认应用程序和服务正在按预期方式运行。" -#: plinth/modules/diagnostics/__init__.py:54 -#: plinth/modules/diagnostics/__init__.py:241 +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 msgid "Diagnostics" msgstr "诊断程序" -#: plinth/modules/diagnostics/__init__.py:101 -#: plinth/modules/email_server/templates/email_server.html:41 +#: plinth/modules/diagnostics/__init__.py:97 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "通过了" -#: plinth/modules/diagnostics/__init__.py:102 -#: plinth/modules/email_server/templates/email_server.html:39 +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 #, fuzzy #| msgid "Setup failed." msgid "failed" msgstr "安装失败。" -#: plinth/modules/diagnostics/__init__.py:103 -#: plinth/modules/email_server/templates/email_server.html:37 +#: plinth/modules/diagnostics/__init__.py:99 +#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "错误" -#: plinth/modules/diagnostics/__init__.py:104 +#: plinth/modules/diagnostics/__init__.py:100 msgid "warning" msgstr "警告" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. -#: plinth/modules/diagnostics/__init__.py:207 +#: plinth/modules/diagnostics/__init__.py:202 msgid "MiB" msgstr "MiB" #. Translators: This is the unit of computer storage Gibibyte similar to #. Gigabyte. -#: plinth/modules/diagnostics/__init__.py:212 +#: plinth/modules/diagnostics/__init__.py:207 msgid "GiB" msgstr "GiB" -#: plinth/modules/diagnostics/__init__.py:219 +#: plinth/modules/diagnostics/__init__.py:214 msgid "You should disable some apps to reduce memory usage." msgstr "你应该禁用一些应用程序以减少内存的使用。" -#: plinth/modules/diagnostics/__init__.py:224 +#: plinth/modules/diagnostics/__init__.py:219 msgid "You should not install any new apps on this system." msgstr "你不应该在这个系统上安装任何新的应用程序。" -#: plinth/modules/diagnostics/__init__.py:236 +#: plinth/modules/diagnostics/__init__.py:231 #, no-python-format, python-brace-format msgid "" "System is low on memory: {percent_used}% used, {memory_available} " @@ -1483,7 +1484,7 @@ msgstr "" "系统内存不足。{percent_used}%已用,{memory_available} {memory_available_unit}" "可用。{advice_message}。" -#: plinth/modules/diagnostics/__init__.py:238 +#: plinth/modules/diagnostics/__init__.py:233 msgid "Low Memory" msgstr "低内存" @@ -1538,18 +1539,18 @@ msgstr "结果" msgid "Diagnostic Test" msgstr "诊断测试" -#: plinth/modules/diaspora/__init__.py:46 +#: plinth/modules/diaspora/__init__.py:40 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." msgstr "diaspora*是一个去中心化的社交网络,你可以存储和控制自己的数据。" -#: plinth/modules/diaspora/__init__.py:70 +#: plinth/modules/diaspora/__init__.py:66 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:71 +#: plinth/modules/diaspora/__init__.py:67 msgid "Federated Social Network" msgstr "联合社交网络" @@ -1612,7 +1613,7 @@ msgstr "应用程序已启用" msgid "User registrations disabled" msgstr "应用程序已禁用" -#: plinth/modules/dynamicdns/__init__.py:30 +#: plinth/modules/dynamicdns/__init__.py:22 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1622,7 +1623,7 @@ msgstr "" "如果您的互联网提供商定期(例如每24小时)更改您的IP地址,其他人可能很难在互联" "网上找到您。这会阻止其他人找到由此 {box_name} 提供的服务。" -#: plinth/modules/dynamicdns/__init__.py:34 +#: plinth/modules/dynamicdns/__init__.py:26 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1638,11 +1639,11 @@ msgstr "" "将您的 DNS 名称分配给新的 IP,如果互联网上的某人要求您的 DNS 名称,他们将收到" "一个带有您当前 IP 地址的响应。" -#: plinth/modules/dynamicdns/__init__.py:58 +#: plinth/modules/dynamicdns/__init__.py:52 msgid "Dynamic DNS Client" msgstr "动态 DNS 客户端" -#: plinth/modules/dynamicdns/__init__.py:71 +#: plinth/modules/dynamicdns/__init__.py:65 #, fuzzy #| msgid "Domain Name" msgid "Dynamic Domain Name" @@ -1694,12 +1695,17 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "如果你想保持你的当前密码,请将此字段留空。" #: plinth/modules/dynamicdns/forms.py:54 -#, python-brace-format +#, 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)." 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)." +"(example: https://ddns.freedombox.org/ip/)." msgstr "" "可选的值。如果您的 {box_name} 未直接连接到互联网(即连接到 NAT 路由器),则" "此 URL 用于确定真实的IP地址。URL应该简单地返回客户端来自的 IP (例如:http://" @@ -1781,12 +1787,18 @@ 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 gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" "如果您正在寻找一个免费的动态 DNS 帐户,您可以在 gnudip.datasystems24.net 找到免费的 " @@ -1841,7 +1853,7 @@ msgstr "" msgid "Last update" msgstr "最后一次更新" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "关于" @@ -1868,7 +1880,7 @@ msgstr "配置动态 DNS" msgid "Dynamic DNS Status" msgstr "动态 DNS 状态" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1876,7 +1888,7 @@ msgstr "" "XMPP 是一种开放标准的通信协议。在这里你可以运行并配置您的 XMPP 服务器,称为 " "ejabberd。" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the web client or any other XMPP 客户端。" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn应用程序或配置一个外部服务器。" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -2012,34 +2024,28 @@ msgstr "" "%(domainname)s。你可以在系统的配置中设置你" "的域名。" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Email Server" msgstr "Web 服务器" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -#, fuzzy -#| msgid "Error setting domain name: {exception}" -msgid "Postfix domain name config" -msgstr "设置域名错误:{exception}" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -2076,54 +2082,66 @@ msgstr "" msgid "Has a TLS certificate" msgstr "没有证书" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid domain" msgstr "服务器名称无效" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid destination" msgstr "服务器名称无效" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "域名" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +#, fuzzy +#| msgid "Primary connection" +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "管理库" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "启用" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -2132,7 +2150,7 @@ msgid "Disabled" msgstr "已禁用" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 #, fuzzy #| msgid "Enable Roundcube" @@ -2152,7 +2170,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2187,49 +2205,32 @@ msgstr "创建新备份" msgid "Add" msgstr "地址" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "域名" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Create Snapshot" msgid "Manage Spam" msgstr "创建快照" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "服务类型" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "在配置过程中出错。" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "设置未改变" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2239,7 +2240,7 @@ msgstr "" "防火墙控制你的 {box_name} 上的进出网络流量。启用并正确配置防火墙上可以减少来" "自互联网的安全威胁。" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "防火墙" @@ -2355,7 +2356,7 @@ msgstr "启动安装程序" msgid "Setup Complete" msgstr "安装完成" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2366,21 +2367,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2530,11 +2531,11 @@ msgstr "储存库被移除。" msgid "Edit repository" msgstr "创建用户" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "文档" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 #, fuzzy #| msgid "Manual" @@ -2542,21 +2543,21 @@ msgctxt "User guide" msgid "Manual" msgstr "手册" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "获取帮助" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2820,7 +2821,7 @@ msgstr "关于 {box_name}" msgid "{box_name} Manual" msgstr "{box_name} 手册" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2828,7 +2829,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Wiki。" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "启用应用程序" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "Tor 匿名网络" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -2901,7 +2902,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2917,7 +2918,7 @@ msgstr "" "Markdown 和常见的博客功能,如评论和 RSS 源。启用后,博客和 Wiki 将可从 /ikiwiki 访问。" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2926,17 +2927,17 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 #, fuzzy #| msgid "wiki" msgid "ikiwiki" msgstr "维基" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "Wiki 和博客" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -3018,11 +3019,11 @@ msgstr "{name} 已删除。" msgid "Could not delete {title}: {error}" msgstr "不能删除 {name}:{error}" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted 是一个 Gobby 服务器,Gobby 是一个协作化的文本编辑器。" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3032,11 +3033,11 @@ msgstr "" "要使用它, 下载 Gobby 的桌面客户端并" "安装。然后启动 Gobby 并选择“连接到服务器”并书入你的 {box_name} 域名即可。" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -3065,17 +3066,17 @@ msgstr "" "要使用它, 下载 Gobby 的桌面客户" "端并安装。然后启动 Gobby 并选择“连接到服务器”并书入你的 {box_name} 域名即可。" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "JSXC 是一个 XMPP 网页客户端,主要用于连接本地 XMPP 服务器的连接。" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 #, fuzzy #| msgid "" #| "Chat Client \n" @@ -3090,7 +3091,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3103,7 +3104,7 @@ msgstr "" "动获取和设置每个可用域名的数字证书。它通过向 Let's Encrypt 证明自己是一个域名" "的所有者。Let's Encrypt 是一个证书颁发机构(CA)。" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3114,19 +3115,19 @@ msgstr "" "(ISRG)为公众利益而设立。请在使用此服务之前阅读并同意 Let's Encypt 订阅者协议。" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "证书(Let's Encrypt)" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "证书状态" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -3239,7 +3240,7 @@ msgstr "成功为域名 {domain} 吊销证书" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "无法为 {domain} 撤销证书:{error}" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3249,14 +3250,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 #, fuzzy #| msgid "" #| "Chat Server \n" @@ -3342,7 +3343,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3350,7 +3351,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3359,18 +3360,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "共笔文档" @@ -3476,7 +3477,7 @@ msgstr "设置未改变" msgid "Server URL updated" msgstr "{name} 已删除。" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3488,11 +3489,11 @@ msgstr "" "(30000)上运行 Minetest 服务器。要连接到服务器,需要 Minetest 客户端。" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 #, fuzzy #| msgid "" #| "Block Sandbox \n" @@ -3581,7 +3582,7 @@ msgstr "玩家对战(PVP)配置已更新" msgid "Damage configuration updated" msgstr "伤害配置已更新" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3592,15 +3593,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" @@ -3642,38 +3643,38 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy #| msgid "Monkeysphere" msgid "MLDonkey" msgstr "Monkeysphere" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 #, fuzzy #| msgid "Enable Shaarli" msgid "Peer-to-peer File Sharing" @@ -3691,7 +3692,7 @@ msgstr "Monkeysphere" msgid "AMLDonkey" msgstr "Monkeysphere" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3709,7 +3710,7 @@ msgstr "" "Monkeysphere " "SSH 文档。" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3725,7 +3726,7 @@ msgstr "" "装 Monkeysphere网站上" "提供的一些软件。" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3744,6 +3745,10 @@ msgstr "取消" msgid "Service" msgstr "服务" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "域名" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3849,13 +3854,13 @@ msgstr "已发布到密钥服务器的密钥。" msgid "Error occurred while publishing key." msgstr "发布密钥时出现错误。" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "Mumble 是一个开放源码的低延迟、 加密、 高品质语音聊天软件。" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3864,11 +3869,11 @@ msgstr "" "您可以使用常规端口 64738 连接到您的 Mumble 服务器。您可以从桌面和 Android 设" "备连接 Mumble 客户端。" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 #, fuzzy #| msgid "" #| "Voice Chat \n" @@ -3904,7 +3909,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "已成功更改密码。" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3913,7 +3918,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "名称服务" @@ -3931,23 +3936,23 @@ msgstr "" msgid "Services" msgstr "服务" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "网络" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "在 IPv{kind} 上使用 DNSSEC" @@ -4430,7 +4435,7 @@ msgstr "DNS 服务器" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "默认" @@ -4443,7 +4448,7 @@ msgid "This connection is not active." msgstr "此连接未处于激活状态。" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "安全" @@ -4942,7 +4947,7 @@ msgstr "通用" msgid "TUN or TAP interface" msgstr "接口" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5039,7 +5044,7 @@ msgstr "连接 {name} 已删除。" msgid "Failed to delete connection: Connection not found." msgstr "删除连接失败: 找不到连接。" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5054,26 +5059,26 @@ msgstr "" "供的私人/内部服务。您还可以通过 {box_name} 访问互联网的其他部分,以增加安全性" "和匿名性。" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "连接类型" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "打开" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "虚拟专用网络(OpenVPN)" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -5150,7 +5155,7 @@ msgstr "配置文件是特定于每个 %(box_name)s 用户的。请保持其私 msgid "Download my profile" msgstr "下载我的配置文件" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5161,23 +5166,23 @@ msgstr "" "PageKite 是一种在您没有直接连接到互联网时暴露 {box_name} 服务的系统。 如果您" "的 {box_name} 服务无法从互联网访问,您只需要设置 PageKite。这包括以下情况:" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} 位于受限的防火墙的后面。" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{box_name} 已连接到非你控制的(无线)路由器。" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "您的 ISP 没有提供外部的 IP 地址而是通过提供 NAT 连接互联网。" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 #, fuzzy #| msgid "" #| "Your ISP does not provide you a static IP address and your IP address " @@ -5188,11 +5193,11 @@ msgid "" msgstr "" "您的 ISP 不提供你一个静态的 IP 地址且你连接到互联网的 IP 地址每次会更改。" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "您的 ISP 限制传入的连接。" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5210,19 +5215,19 @@ msgstr "" "使用任何 pagekite 服务提供商,例如pagekite." "net。将来,您甚至可以使用好友的 {box_name}。" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 #, fuzzy #| msgid "Pagekite" msgid "PageKite" msgstr "Pagekite" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 #, fuzzy #| msgid "Public Visibility (PageKite)" msgid "Public Visibility" msgstr "公开可见性(PageKite)" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 #, fuzzy #| msgid "PageKite Account" msgid "PageKite Domain" @@ -5372,35 +5377,35 @@ msgstr "" "请参见 SSH 客户端安装 说明" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" msgstr "系统配置" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "重新启动或关闭系统。" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "电源" @@ -5458,7 +5463,7 @@ msgstr "" msgid "Shut Down Now" msgstr "现在关闭" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5467,7 +5472,7 @@ msgstr "" "Privoxy 是一个非缓存Web代理,具有高级过滤功能,用于增强隐私,修改网页数据和 " "HTTP 标头,控制访问,以及删除广告和其他令人讨厌的互联网垃圾。" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5481,24 +5486,24 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ 或 http://p.p 中查看其配置详细信息和文档" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 #, fuzzy #| msgid "Enable Privoxy" msgid "Privoxy" msgstr "启用 Privoxy" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "Privoxy 网页代理" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "在 tcp{kind} 上通过 {proxy} 访问 {url}" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5513,7 +5518,7 @@ msgstr "" "以运行 Quassel 核心服务,使您始终在线,并且可以使用桌面或移动设备上的一个或多" "个 Quassel 客户端连接和断开连接。" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your 桌面移动设备客户端连接到 Quassel 的核心。" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" @@ -5538,7 +5543,7 @@ msgstr "Quassel IRC 客户端" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5558,19 +5563,19 @@ msgstr "" "user_documentation/#idcaldav-and-carddav-client\">支持的客户端应用程序。" "任何拥有 {box_name} 登录名的用户都可以访问 Radicale。" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 #, fuzzy #| msgid "" #| "Calendar and Addressbook \n" @@ -5649,7 +5654,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "访问权配置已更新" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5660,7 +5665,7 @@ msgstr "" "户界面。它提供您需要的从电子邮件客户端、MIME支持、地址簿、文件夹操作、消息搜" "索到拼写检查的完整功能。" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -5680,7 +5685,7 @@ msgstr "" "如 imap.example.com。对于基于 SSL 的 IMAP(建议),服务器填写为" "类似 imaps://imap.example.com。" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5694,7 +5699,7 @@ msgstr "" "href=\"https://www.google.com/settings/security/lesssecureapps\">https://www." "google.com/settings/security/lesssecureapps)中启用“安全性较低的应用”。" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 #, fuzzy #| msgid "" #| "Email Client \n" @@ -5704,13 +5709,13 @@ msgstr "" "邮件客户端\n" "(Roundcube)" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5719,31 +5724,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -5835,13 +5840,13 @@ msgstr "行动" msgid "FreedomBox OS disk" msgstr "FreedomBox" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "添加服务" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 #, fuzzy #| msgid "Add Service" msgid "Group Share" @@ -5877,27 +5882,27 @@ msgstr "共享" msgid "Error disabling share: {error_message}" msgstr "安装应用程序出错:{error}" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Web Search" @@ -6082,11 +6087,11 @@ msgstr "设置限制访问错误:{exception}" msgid "Updated security configuration" msgstr "安全配置已更新" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli 允许您保存和共享书签。" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6099,11 +6104,11 @@ msgstr "" "当启用时,Shaarli 将可从 /shaarli 路径访问。请注" "意,Shaarli 只支持单用户帐户,您在首次访问时安装程序。" -#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 #, fuzzy #| msgid "" #| "Bookmarks \n" @@ -6113,14 +6118,14 @@ msgstr "" "书签\n" "(Shaarli)" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6129,17 +6134,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -6172,7 +6177,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -6294,7 +6299,7 @@ msgstr "编辑用户" msgid "Share deleted." msgstr "{name} 已删除。" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 #, fuzzy #| msgid "" #| "Snapshots allows creating and managing filesystem snapshots. These can be " @@ -6308,7 +6313,7 @@ msgstr "" "快照可以允许创建并管理文件系统快照。这些可以用来回滚系统到前一个已知可用的状" "态,以防意外改变系统状态。" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6316,14 +6321,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 #, fuzzy #| msgid "Create Snapshot" msgid "Storage Snapshots" @@ -6539,7 +6544,7 @@ msgstr "系统需要重启以完成完全回滚。" msgid "Rollback to Snapshot" msgstr "回滚到快照" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6547,7 +6552,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "安全 Shell(SSH)服务器" @@ -6596,7 +6601,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "远程服务器认证失败。" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -6604,7 +6609,7 @@ msgstr "" msgid "Login" msgstr "登录" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6612,164 +6617,164 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 #, fuzzy #| msgid "reStore" msgid "Storage" msgstr "reStore" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "repro 服务正在运行" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "此服务已存在" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "repro 服务未运行" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid directory name." msgstr "无效的主机名" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 #, fuzzy #| msgid "Download directory" msgid "Path is not a directory." msgstr "下载目录" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 #, fuzzy #| msgid "Download directory" msgid "Directory" msgstr "下载目录" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 #, fuzzy #| msgid "Shared" msgid "Share" msgstr "共享" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6850,7 +6855,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6858,7 +6863,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6870,22 +6875,22 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" msgstr "安装此应用程序?" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6893,7 +6898,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6901,11 +6906,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6942,7 +6947,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6955,42 +6960,42 @@ msgstr "" "href=\"https://www.torproject.org/download/download-easy.html.en\">Tor浏览器" "。" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "隐藏的 Tor 服务" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "Tor 网桥中继" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "Tor 中继端口可用" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "已注册 Obfs3 传输" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "已注册 Obfs4 传输" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "在 tcp{kind} 上通过 Tor 访问 {url}" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "确认使用 Tor 通过 tcp{kind} 访问 {url}" @@ -7134,11 +7139,15 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Tor SOCKS 端口是你 %(box_name)s 上的 TCP 端口 9050 。" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "设置未改变" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission 是一个有网页界面的 BitTorrent 客户端。" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7150,18 +7159,18 @@ msgstr "" "BitTorrent 是对等文件共享协议。Transmission 守护进程处理 Bitorrent 文件共享。" "请注意,BitTorrent 不是匿名。" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Transmission" msgstr "Transmission BitTorrent" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7170,7 +7179,7 @@ msgstr "" "Tiny Tiny RSS是一个新闻源(RSS / Atom)阅读器和聚合器,旨在允许从任何位置读取" "新闻,同时提供尽可能接近真实的桌面应用程序体验。" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -7182,21 +7191,21 @@ msgstr "" "启用以后,Tiny Tiny RSS 将可从网页服务器的 /tt-rss 路" "径访问。" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 #, fuzzy #| msgid "" #| "News Feed Reader \n" @@ -7210,12 +7219,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7223,7 +7232,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -7460,14 +7469,14 @@ msgstr "开始升级失败。" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7475,15 +7484,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "用户和组" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "请检查 LDAP 条目“{search_item}”" @@ -7738,18 +7747,18 @@ msgstr "更改密码" msgid "Password changed successfully." msgstr "已成功更改密码。" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8119,7 +8128,7 @@ msgstr "删除连接" msgid "Server deleted." msgstr "{name} 已删除。" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8128,7 +8137,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8137,28 +8146,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "地址" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8176,7 +8185,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8189,7 +8198,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8197,11 +8206,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -8237,23 +8246,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "通用" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "安装时错误" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "安装" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "下载中" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "媒体改变" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "配置文件:{file}" @@ -8652,6 +8661,16 @@ msgstr "已完成 %(percentage)s%%" msgid "Gujarati" msgstr "古吉拉特语" +#, fuzzy +#~| msgid "Error setting domain name: {exception}" +#~ msgid "Postfix domain name config" +#~ msgstr "设置域名错误:{exception}" + +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "在配置过程中出错。" + #, fuzzy #~| msgid "Disabled" #~ msgid "Disable selected" diff --git a/plinth/locale/zh_Hant/LC_MESSAGES/django.po b/plinth/locale/zh_Hant/LC_MESSAGES/django.po index a390d3609..262099f39 100644 --- a/plinth/locale/zh_Hant/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hant/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-22 18:17-0500\n" +"POT-Creation-Date: 2021-12-06 18:35-0500\n" "PO-Revision-Date: 2021-04-27 13:32+0000\n" "Last-Translator: James Pan \n" "Language-Team: Chinese (Traditional) calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:59 +#: plinth/modules/calibre/__init__.py:57 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:63 +#: plinth/modules/calibre/__init__.py:61 msgid "E-book Library" msgstr "電子書圖書館" @@ -1065,7 +1066,7 @@ msgstr "{name} 已刪除。" msgid "Could not delete {name}: {error}" msgstr "無法刪除 {name}: {error}" -#: plinth/modules/cockpit/__init__.py:33 +#: plinth/modules/cockpit/__init__.py:25 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1074,7 +1075,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:39 +#: plinth/modules/cockpit/__init__.py:31 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1082,25 +1083,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:44 +#: plinth/modules/cockpit/__init__.py:36 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:48 +#: plinth/modules/cockpit/__init__.py:40 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:68 +#: plinth/modules/cockpit/__init__.py:64 msgid "Server Administration" msgstr "" @@ -1112,17 +1113,17 @@ msgstr "存取" msgid "Cockpit will only work when accessed using the following URLs." msgstr "" -#: plinth/modules/config/__init__.py:27 +#: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -#: plinth/modules/config/__init__.py:58 +#: plinth/modules/config/__init__.py:53 msgid "General Configuration" msgstr "一般配置" -#: plinth/modules/config/__init__.py:63 plinth/modules/dynamicdns/views.py:29 +#: plinth/modules/config/__init__.py:58 plinth/modules/dynamicdns/views.py:29 #: plinth/modules/names/templates/names.html:30 #: plinth/modules/names/templates/names.html:44 #: plinth/modules/snapshot/views.py:35 @@ -1131,7 +1132,7 @@ msgstr "一般配置" msgid "Configure" msgstr "配置" -#: plinth/modules/config/__init__.py:67 plinth/modules/config/forms.py:68 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 #: plinth/modules/dynamicdns/forms.py:97 #: plinth/modules/names/templates/names.html:16 msgid "Domain Name" @@ -1245,7 +1246,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:37 +#: plinth/modules/coturn/__init__.py:29 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1253,7 +1254,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:42 +#: plinth/modules/coturn/__init__.py:34 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as gnudip.datasystems24.net or you may find free update URL " -"based services at " -"freedns.afraid.org." +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." msgstr "" #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1720,7 +1720,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:52 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "關於" @@ -1747,13 +1747,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:40 +#: plinth/modules/ejabberd/__init__.py:31 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:43 +#: plinth/modules/ejabberd/__init__.py:34 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:51 +#: plinth/modules/ejabberd/__init__.py:42 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:73 +#: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:74 -#: plinth/modules/matrixsynapse/__init__.py:79 +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 msgid "Chat Server" msgstr "" @@ -1865,32 +1865,28 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/email_server/__init__.py:55 +#: plinth/modules/email_server/__init__.py:31 msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" -#: plinth/modules/email_server/__init__.py:57 +#: 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:68 +#: plinth/modules/email_server/__init__.py:44 #, fuzzy #| msgid "Domain Name Server" msgid "Email Server" msgstr "域名服務器 DNS" -#: plinth/modules/email_server/__init__.py:95 +#: plinth/modules/email_server/__init__.py:91 msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/domain.py:35 -msgid "Postfix domain name config" -msgstr "" - #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" @@ -1923,50 +1919,60 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:15 +#: plinth/modules/email_server/forms.py:17 #, fuzzy #| msgid "Invalid domain name" msgid "Enter a valid domain" msgstr "無效的網域名稱" -#: plinth/modules/email_server/forms.py:18 +#: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" msgstr "" -#: plinth/modules/email_server/forms.py:22 +#: plinth/modules/email_server/forms.py:24 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:53 +#: plinth/modules/email_server/forms.py:38 +msgid "Primary domain" +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 "" -#: plinth/modules/email_server/forms.py:60 +#: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:63 +#: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:66 +#: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:76 +#: plinth/modules/email_server/forms.py:71 #, fuzzy #| msgid "Manage Libraries" msgid "Aliases" msgstr "管理圖書館" -#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/email_server/forms.py:86 #: 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 @@ -1975,7 +1981,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:57 +#: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1993,7 +1999,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:24 +#: plinth/modules/email_server/templates/email_server.html:20 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" @@ -2024,49 +2030,32 @@ msgstr "建立一個新的備份檔" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:16 -#: plinth/modules/email_server/views.py:199 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:19 +#: plinth/modules/email_server/templates/email_server.html:15 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Spam" msgstr "管理圖書館" -#: plinth/modules/email_server/templates/email_server.html:30 +#: plinth/modules/email_server/templates/email_server.html:26 #, fuzzy #| msgid "Service Discovery" msgid "Service Alert" msgstr "發現服務" -#: plinth/modules/email_server/templates/email_server.html:50 +#: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" msgstr "" -#: plinth/modules/email_server/views.py:64 +#: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:67 +#: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:217 -#, fuzzy -#| msgid "An error occurred during configuration." -msgid "Error updating configuration" -msgstr "設置過程中發生錯誤。" - -#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 -#: plinth/views.py:219 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/firewall/__init__.py:34 +#: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2074,7 +2063,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:68 +#: plinth/modules/firewall/__init__.py:62 msgid "Firewall" msgstr "" @@ -2181,7 +2170,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:30 +#: plinth/modules/gitweb/__init__.py:26 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2192,21 +2181,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:37 +#: plinth/modules/gitweb/__init__.py:33 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:53 +#: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" msgstr "" @@ -2318,31 +2307,31 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/help/__init__.py:33 +#: plinth/modules/help/__init__.py:32 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:36 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:41 +#: plinth/modules/help/__init__.py:40 #: plinth/modules/help/templates/help_support.html:9 #: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:45 +#: plinth/modules/help/__init__.py:44 #: plinth/modules/help/templates/help_feedback.html:9 #: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:49 +#: plinth/modules/help/__init__.py:48 #: plinth/modules/help/templates/help_contribute.html:9 #: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 @@ -2567,7 +2556,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:30 +#: plinth/modules/i2p/__init__.py:22 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2575,31 +2564,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:34 +#: plinth/modules/i2p/__init__.py:26 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:36 +#: plinth/modules/i2p/__init__.py:28 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:58 +#: plinth/modules/i2p/__init__.py:52 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2636,14 +2625,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:29 +#: plinth/modules/ikiwiki/__init__.py:22 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:33 +#: plinth/modules/ikiwiki/__init__.py:26 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2652,15 +2641,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:55 +#: plinth/modules/ikiwiki/__init__.py:50 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:79 +#: plinth/modules/ikiwiki/__init__.py:77 msgid "View and edit wiki applications" msgstr "" @@ -2737,11 +2726,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:27 +#: plinth/modules/infinoted/__init__.py:21 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:29 +#: plinth/modules/infinoted/__init__.py:23 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2749,11 +2738,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:44 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:45 msgid "Gobby Server" msgstr "" @@ -2772,17 +2761,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:25 +#: plinth/modules/jsxc/__init__.py:21 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:47 +#: plinth/modules/jsxc/__init__.py:45 msgid "Chat Client" msgstr "" @@ -2791,7 +2780,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:36 +#: plinth/modules/letsencrypt/__init__.py:28 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2801,7 +2790,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:42 +#: plinth/modules/letsencrypt/__init__.py:34 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2809,15 +2798,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:67 +#: plinth/modules/letsencrypt/__init__.py:61 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:68 +#: plinth/modules/letsencrypt/__init__.py:62 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:104 +#: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." msgstr "" @@ -2918,7 +2907,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:38 +#: plinth/modules/matrixsynapse/__init__.py:29 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2928,14 +2917,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:46 +#: plinth/modules/matrixsynapse/__init__.py:37 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:78 +#: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" msgstr "" @@ -3006,7 +2995,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:29 +#: plinth/modules/mediawiki/__init__.py:23 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3014,7 +3003,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:33 +#: plinth/modules/mediawiki/__init__.py:27 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3023,18 +3012,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:39 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 +#: plinth/modules/mediawiki/__init__.py:56 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3116,7 +3105,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:40 +#: plinth/modules/minetest/__init__.py:34 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3125,11 +3114,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:64 +#: plinth/modules/minetest/__init__.py:60 msgid "Block Sandbox" msgstr "" @@ -3195,7 +3184,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:26 +#: plinth/modules/minidlna/__init__.py:20 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3206,15 +3195,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:47 +#: plinth/modules/minidlna/__init__.py:43 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:46 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:51 +#: plinth/modules/minidlna/__init__.py:47 msgid "Simple Media Server" msgstr "" @@ -3254,36 +3243,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:29 +#: 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:32 +#: 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:37 +#: 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:55 +#: plinth/modules/mldonkey/__init__.py:53 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:58 +#: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:60 +#: plinth/modules/mldonkey/__init__.py:58 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3295,7 +3284,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:21 +#: plinth/modules/monkeysphere/__init__.py:17 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3307,7 +3296,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:29 +#: plinth/modules/monkeysphere/__init__.py:25 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3318,7 +3307,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:52 +#: plinth/modules/monkeysphere/__init__.py:50 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3337,6 +3326,10 @@ msgstr "" msgid "Service" msgstr "" +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "" + #: plinth/modules/monkeysphere/templates/monkeysphere.html:38 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:17 msgid "OpenPGP Fingerprint" @@ -3440,24 +3433,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:34 +#: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:36 +#: plinth/modules/mumble/__init__.py:28 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:55 +#: plinth/modules/mumble/__init__.py:49 msgid "Voice Chat" msgstr "" @@ -3483,7 +3476,7 @@ msgstr "" msgid "SuperUser password successfully updated." msgstr "" -#: plinth/modules/names/__init__.py:26 +#: plinth/modules/names/__init__.py:22 #, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " @@ -3492,7 +3485,7 @@ msgid "" "enabled or disabled for incoming connections through the given name." msgstr "" -#: plinth/modules/names/__init__.py:46 +#: plinth/modules/names/__init__.py:43 msgid "Name Services" msgstr "" @@ -3508,23 +3501,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:42 +#: plinth/modules/networks/__init__.py:36 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:44 +#: plinth/modules/networks/__init__.py:38 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:63 +#: plinth/modules/networks/__init__.py:59 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:184 +#: plinth/modules/networks/__init__.py:180 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -3992,7 +3985,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:207 #: plinth/modules/networks/templates/connection_show.html:248 -#: plinth/modules/storage/forms.py:139 +#: plinth/modules/storage/forms.py:138 msgid "Default" msgstr "" @@ -4005,7 +3998,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:47 +#: plinth/modules/security/__init__.py:42 msgid "Security" msgstr "" @@ -4446,7 +4439,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4535,7 +4528,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:31 +#: plinth/modules/openvpn/__init__.py:25 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4546,20 +4539,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/openvpn/__init__.py:55 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:63 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:74 +#: plinth/modules/openvpn/__init__.py:70 #, python-brace-format msgid "" "Download Profile" @@ -4623,7 +4616,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:29 +#: plinth/modules/pagekite/__init__.py:21 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4632,33 +4625,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:34 +#: plinth/modules/pagekite/__init__.py:26 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:37 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:39 +#: plinth/modules/pagekite/__init__.py:31 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:41 +#: plinth/modules/pagekite/__init__.py:33 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:43 +#: plinth/modules/pagekite/__init__.py:35 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:45 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4667,15 +4660,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:67 +#: plinth/modules/pagekite/__init__.py:63 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:68 +#: plinth/modules/pagekite/__init__.py:64 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:81 +#: plinth/modules/pagekite/__init__.py:77 msgid "PageKite Domain" msgstr "" @@ -4809,33 +4802,33 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:18 -#: plinth/modules/performance/__init__.py:48 +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:27 +#: plinth/modules/performance/__init__.py:19 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:31 +#: plinth/modules/performance/__init__.py:23 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:49 +#: plinth/modules/performance/__init__.py:43 msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:17 +#: plinth/modules/power/__init__.py:13 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:32 +#: plinth/modules/power/__init__.py:30 msgid "Power" msgstr "" @@ -4888,14 +4881,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:31 +#: plinth/modules/privoxy/__init__.py:23 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:36 +#: plinth/modules/privoxy/__init__.py:28 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4905,20 +4898,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:58 +#: plinth/modules/privoxy/__init__.py:52 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:59 +#: plinth/modules/privoxy/__init__.py:53 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:120 +#: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:35 +#: plinth/modules/quassel/__init__.py:27 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4929,7 +4922,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:42 +#: plinth/modules/quassel/__init__.py:34 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:63 +#: plinth/modules/quassel/__init__.py:57 msgid "IRC Client" msgstr "" @@ -4949,7 +4942,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:29 +#: plinth/modules/radicale/__init__.py:25 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4959,19 +4952,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:35 +#: plinth/modules/radicale/__init__.py:31 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:57 +#: plinth/modules/radicale/__init__.py:55 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:58 +#: plinth/modules/radicale/__init__.py:56 msgid "Calendar and Addressbook" msgstr "" @@ -5038,7 +5031,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:20 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5046,7 +5039,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:25 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 " @@ -5055,7 +5048,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:34 +#: plinth/modules/roundcube/__init__.py:30 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5065,17 +5058,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:58 +#: plinth/modules/roundcube/__init__.py:54 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:33 +#: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:36 +#: plinth/modules/samba/__init__.py:30 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5084,31 +5077,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:35 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:42 +#: plinth/modules/samba/__init__.py:36 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:44 +#: plinth/modules/samba/__init__.py:38 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:60 +#: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:59 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:64 +#: plinth/modules/samba/__init__.py:60 msgid "Network File Storage" msgstr "" @@ -5186,11 +5179,11 @@ msgstr "" msgid "FreedomBox OS disk" msgstr "" -#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 msgid "Group Share" msgstr "" @@ -5216,27 +5209,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:26 +#: plinth/modules/searx/__init__.py:22 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:28 +#: plinth/modules/searx/__init__.py:24 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:46 +#: plinth/modules/searx/__init__.py:42 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:50 +#: plinth/modules/searx/__init__.py:46 msgid "Web Search" msgstr "" @@ -5391,32 +5384,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:17 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:22 +#: plinth/modules/shaarli/__init__.py:18 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:39 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:40 +#: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:27 +#: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:31 +#: plinth/modules/shadowsocks/__init__.py:25 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5425,17 +5418,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:36 +#: plinth/modules/shadowsocks/__init__.py:30 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:51 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:55 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Socks5 Proxy" msgstr "" @@ -5464,7 +5457,7 @@ msgstr "" msgid "Encryption method. Must match setting on server." msgstr "" -#: plinth/modules/sharing/__init__.py:22 +#: plinth/modules/sharing/__init__.py:20 #, python-brace-format msgid "" "Sharing allows you to share files and folders on your {box_name} over the " @@ -5564,14 +5557,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:28 +#: plinth/modules/snapshot/__init__.py:22 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:32 +#: plinth/modules/snapshot/__init__.py:26 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5579,14 +5572,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:35 +#: plinth/modules/snapshot/__init__.py:29 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:58 +#: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" msgstr "" @@ -5776,7 +5769,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:31 +#: plinth/modules/ssh/__init__.py:23 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5784,7 +5777,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:51 +#: plinth/modules/ssh/__init__.py:45 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5825,7 +5818,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:36 +#: plinth/modules/sso/__init__.py:28 msgid "Single Sign On" msgstr "" @@ -5833,7 +5826,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:30 +#: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5841,143 +5834,143 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:324 -#: plinth/modules/storage/__init__.py:355 +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:226 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:233 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:245 +#: plinth/modules/storage/__init__.py:243 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:247 +#: plinth/modules/storage/__init__.py:245 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:247 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:249 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:252 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:254 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:257 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:259 msgid "The operation has already been cancelled." msgstr "" +#: plinth/modules/storage/__init__.py:261 #: plinth/modules/storage/__init__.py:263 #: plinth/modules/storage/__init__.py:265 -#: plinth/modules/storage/__init__.py:267 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:267 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:271 +#: plinth/modules/storage/__init__.py:269 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:273 +#: plinth/modules/storage/__init__.py:271 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:275 +#: plinth/modules/storage/__init__.py:273 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:317 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:319 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:349 +#: plinth/modules/storage/__init__.py:347 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:351 +#: plinth/modules/storage/__init__.py:349 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" -#: plinth/modules/storage/forms.py:63 +#: plinth/modules/storage/forms.py:62 msgid "Invalid directory name." msgstr "" -#: plinth/modules/storage/forms.py:80 +#: plinth/modules/storage/forms.py:79 msgid "Directory does not exist." msgstr "" -#: plinth/modules/storage/forms.py:83 +#: plinth/modules/storage/forms.py:82 msgid "Path is not a directory." msgstr "" -#: plinth/modules/storage/forms.py:86 +#: plinth/modules/storage/forms.py:85 msgid "Directory is not readable by the user." msgstr "" -#: plinth/modules/storage/forms.py:89 +#: plinth/modules/storage/forms.py:88 msgid "Directory is not writable by the user." msgstr "" -#: plinth/modules/storage/forms.py:94 +#: plinth/modules/storage/forms.py:93 msgid "Directory" msgstr "" -#: plinth/modules/storage/forms.py:96 +#: plinth/modules/storage/forms.py:95 msgid "Subdirectory (optional)" msgstr "" -#: plinth/modules/storage/forms.py:143 +#: plinth/modules/storage/forms.py:142 msgid "Share" msgstr "" -#: plinth/modules/storage/forms.py:151 +#: plinth/modules/storage/forms.py:150 msgid "Other directory (specify below)" msgstr "" @@ -6052,7 +6045,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:29 +#: plinth/modules/syncthing/__init__.py:23 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6060,7 +6053,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:34 +#: plinth/modules/syncthing/__init__.py:28 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6072,20 +6065,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:59 +#: plinth/modules/syncthing/__init__.py:57 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:61 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:64 +#: plinth/modules/syncthing/__init__.py:62 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:32 +#: plinth/modules/tahoe/__init__.py:26 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6093,7 +6086,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:37 +#: plinth/modules/tahoe/__init__.py:31 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6101,11 +6094,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:60 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:62 msgid "Distributed File Storage" msgstr "" @@ -6140,7 +6133,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:36 +#: plinth/modules/tor/__init__.py:26 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6149,40 +6142,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:57 +#: plinth/modules/tor/__init__.py:50 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:72 +#: plinth/modules/tor/__init__.py:67 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:76 +#: plinth/modules/tor/__init__.py:71 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:75 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:123 +#: plinth/modules/tor/__init__.py:117 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:133 +#: plinth/modules/tor/__init__.py:127 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:143 +#: plinth/modules/tor/__init__.py:137 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:212 +#: plinth/modules/tor/__init__.py:206 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:223 +#: plinth/modules/tor/__init__.py:217 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6308,54 +6301,58 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:31 +#: plinth/modules/transmission/__init__.py:25 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:33 +#: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:31 +#: plinth/modules/ttrss/__init__.py:23 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:35 +#: plinth/modules/ttrss/__init__.py:27 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:39 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:55 +#: plinth/modules/ttrss/__init__.py:49 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:59 +#: plinth/modules/ttrss/__init__.py:53 msgid "News Feed Reader" msgstr "" @@ -6363,12 +6360,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:39 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:47 +#: plinth/modules/upgrades/__init__.py:40 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6376,7 +6373,7 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/__init__.py:74 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 #: plinth/templates/setup.html:73 @@ -6572,14 +6569,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:40 +#: plinth/modules/users/__init__.py:29 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:45 +#: plinth/modules/users/__init__.py:34 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6587,15 +6584,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:67 +#: plinth/modules/users/__init__.py:57 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:83 +#: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:119 +#: plinth/modules/users/__init__.py:113 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6821,18 +6818,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:24 +#: plinth/modules/wireguard/__init__.py:20 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:26 +#: plinth/modules/wireguard/__init__.py:22 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:30 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7126,7 +7123,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:38 +#: plinth/modules/wordpress/__init__.py:23 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7135,7 +7132,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:44 +#: plinth/modules/wordpress/__init__.py:29 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7144,26 +7141,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:49 +#: plinth/modules/wordpress/__init__.py:34 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:53 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:72 +#: plinth/modules/wordpress/__init__.py:59 msgid "Website and Blog" msgstr "" @@ -7177,7 +7174,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:34 +#: plinth/modules/zoph/__init__.py:26 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7190,7 +7187,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:45 +#: plinth/modules/zoph/__init__.py:37 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7198,11 +7195,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:65 +#: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" msgstr "" @@ -7236,23 +7233,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:224 msgid "Error during installation" msgstr "" -#: plinth/package.py:187 +#: plinth/package.py:246 msgid "installing" msgstr "" -#: plinth/package.py:189 +#: plinth/package.py:248 msgid "downloading" msgstr "" -#: plinth/package.py:191 +#: plinth/package.py:250 msgid "media change" msgstr "" -#: plinth/package.py:193 +#: plinth/package.py:252 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7589,6 +7586,11 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "An error occurred during configuration." +#~ msgid "Error updating configuration" +#~ msgstr "設置過程中發生錯誤。" + #, fuzzy #~| msgid "Delete files" #~ msgid "Delete selected" diff --git a/plinth/middleware.py b/plinth/middleware.py index 963990cc2..b68db7a89 100644 --- a/plinth/middleware.py +++ b/plinth/middleware.py @@ -4,6 +4,7 @@ Common Django middleware. """ import logging +import sys from django import urls from django.conf import settings @@ -15,7 +16,7 @@ from django.utils.deprecation import MiddlewareMixin from django.utils.translation import gettext_lazy as _ from stronghold.utils import is_view_func_public -import plinth +from plinth import app as app_module from plinth import setup from plinth.package import PackageException from plinth.utils import is_user_admin @@ -25,14 +26,15 @@ from . import views logger = logging.getLogger(__name__) -def _collect_setup_result(request, module): +def _collect_setup_result(request, app): """Show success/fail message from previous install operation.""" - if not module.setup_helper.is_finished: + setup_helper = sys.modules[app.__module__].setup_helper + if not setup_helper.is_finished: return - exception = module.setup_helper.collect_result() + exception = setup_helper.collect_result() if not exception: - if not setup._is_module_essential(module): + if not app.info.is_essential: messages.success(request, _('Application installed.')) else: if isinstance(exception, PackageException): @@ -71,16 +73,17 @@ class SetupMiddleware(MiddlewareMixin): # Requested URL does not belong to any application return - module_name = resolver_match.namespaces[0] - module = plinth.module_loader.loaded_modules[module_name] + app_id = resolver_match.namespaces[0] + app = app_module.App.get(app_id) is_admin = is_user_admin(request) # Collect and show setup operation result to admins if is_admin: - _collect_setup_result(request, module) + _collect_setup_result(request, app) # Check if application is up-to-date - if module.setup_helper.get_state() == 'up-to-date': + if app.get_setup_state() == \ + app_module.App.SetupState.UP_TO_DATE: return if not is_admin: @@ -88,7 +91,7 @@ class SetupMiddleware(MiddlewareMixin): # Only allow logged-in users to access any setup page view = login_required(views.SetupView.as_view()) - return view(request, setup_helper=module.setup_helper) + return view(request, app_id=app_id) class AdminRequiredMiddleware(MiddlewareMixin): diff --git a/plinth/module_loader.py b/plinth/module_loader.py index 561415507..02a6bdd68 100644 --- a/plinth/module_loader.py +++ b/plinth/module_loader.py @@ -5,15 +5,14 @@ Discover, load and manage FreedomBox applications. import collections import importlib -import inspect import logging import pathlib import re import django -from plinth import app, cfg, setup -from plinth.signals import post_module_loading, pre_module_loading +from plinth import cfg +from plinth.signals import pre_module_loading logger = logging.getLogger(__name__) @@ -28,74 +27,23 @@ def include_urls(): _include_module_urls(module_import_path, module_name) -def _is_module_essential(module): - """Return if a module is an essential module.""" - return getattr(module, 'is_essential', False) - - def load_modules(): """ Read names of enabled modules in modules/enabled directory and import them from modules directory. """ pre_module_loading.send_robust(sender="module_loader") - modules = {} for module_import_path in get_modules_to_load(): module_name = module_import_path.split('.')[-1] try: - modules[module_name] = importlib.import_module(module_import_path) + loaded_modules[module_name] = importlib.import_module( + module_import_path) except Exception as exception: logger.exception('Could not import %s: %s', module_import_path, exception) if cfg.develop: raise - ordered_modules = [] - remaining_modules = dict(modules) # Make a copy - # Place all essential modules ahead of others in module load order - sorted_modules = sorted( - modules, key=lambda module: not _is_module_essential(modules[module])) - for module_name in sorted_modules: - if module_name not in remaining_modules: - continue - - module = remaining_modules.pop(module_name) - try: - _insert_modules(module_name, module, remaining_modules, - ordered_modules) - except KeyError: - logger.error('Unsatified dependency for module - %s', module_name) - - for module_name in ordered_modules: - loaded_modules[module_name] = modules[module_name] - - -def _insert_modules(module_name, module, remaining_modules, ordered_modules): - """Insert modules into a list based on dependency order""" - if module_name in ordered_modules: - return - - dependencies = [] - try: - dependencies = module.depends - except AttributeError: - pass - - for dependency in dependencies: - if dependency in ordered_modules: - continue - - try: - module = remaining_modules.pop(dependency) - except KeyError: - logger.error('Not found or circular dependency - %s, %s', - module_name, dependency) - raise - - _insert_modules(dependency, module, remaining_modules, ordered_modules) - - ordered_modules.append(module_name) - def _include_module_urls(module_import_path, module_name): """Include the module's URLs in global project URLs list""" @@ -112,54 +60,6 @@ def _include_module_urls(module_import_path, module_name): raise -def apps_init(): - """Create apps by constructing them with components.""" - logger.info('Initializing apps - %s', ', '.join(loaded_modules)) - for module_name, module in loaded_modules.items(): - _initialize_module(module_name, module) - - -def _initialize_module(module_name, module): - """Perform module initialization""" - - # Perform setup related initialization on the module - setup.init(module_name, module) - - try: - module_classes = inspect.getmembers(module, inspect.isclass) - app_class = [ - cls for cls in module_classes if issubclass(cls[1], app.App) - ] - if module_classes and app_class: - module.app = app_class[0][1]() - except Exception as exception: - logger.exception('Exception while running init for %s: %s', module, - exception) - if cfg.develop: - raise - - -def apps_post_init(): - """Run post initialization on each app.""" - for module in loaded_modules.values(): - if not hasattr(module, 'app') or not module.app: - continue - - try: - module.app.post_init() - if module.setup_helper.get_state( - ) != 'needs-setup' and module.app.is_enabled(): - module.app.set_enabled(True) - except Exception as exception: - logger.exception('Exception while running post init for %s: %s', - module, exception) - if cfg.develop: - raise - - logger.debug('App initialization completed.') - post_module_loading.send_robust(sender="module_loader") - - def get_modules_to_load(): """Get the list of modules to be loaded""" global _modules_to_load diff --git a/plinth/modules/apache/__init__.py b/plinth/modules/apache/__init__.py index 3ec814c5f..4a6b3a4d3 100644 --- a/plinth/modules/apache/__init__.py +++ b/plinth/modules/apache/__init__.py @@ -9,22 +9,12 @@ from django.utils.translation import gettext_lazy as _ from plinth import actions from plinth import app as app_module from plinth import cfg -from plinth.daemon import Daemon +from plinth.daemon import Daemon, RelatedDaemon from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt from plinth.package import Packages from plinth.utils import format_lazy, is_valid_user_name -version = 9 - -is_essential = True - -managed_services = ['apache2', 'uwsgi'] - -managed_packages = [ - 'apache2', 'php-fpm', 'ssl-cert', 'uwsgi', 'uwsgi-plugin-python3' -] - app = None @@ -33,16 +23,19 @@ class ApacheApp(app_module.App): app_id = 'apache' + _version = 9 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, - name=_('Apache HTTP Server')) + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Apache HTTP Server')) self.add(info) - packages = Packages('packages-apache', managed_packages) + packages = Packages('packages-apache', [ + 'apache2', 'php-fpm', 'ssl-cert', 'uwsgi', 'uwsgi-plugin-python3' + ]) self.add(packages) web_server_ports = Firewall('firewall-web', _('Web Server'), @@ -57,16 +50,19 @@ class ApacheApp(app_module.App): self.add(freedombox_ports) letsencrypt = LetsEncrypt('letsencrypt-apache', domains='*', - daemons=[managed_services[0]]) + daemons=['apache2']) self.add(letsencrypt) - daemon = Daemon('daemon-apache', managed_services[0]) + daemon = Daemon('daemon-apache', 'apache2') + self.add(daemon) + + daemon = RelatedDaemon('related-daemon-apache', 'uwsgi') self.add(daemon) def setup(helper, old_version=None): """Configure the module.""" - helper.install(managed_packages) + app.setup(old_version) actions.superuser_run( 'apache', ['setup', '--old-version', str(old_version)]) diff --git a/plinth/modules/api/__init__.py b/plinth/modules/api/__init__.py index a1999a72a..44fefaed8 100644 --- a/plinth/modules/api/__init__.py +++ b/plinth/modules/api/__init__.py @@ -3,4 +3,20 @@ FreedomBox app for api for android app. """ -version = 1 +from plinth import app as app_module + + +class ApiApp(app_module.App): + """FreedomBox app for API for Android app.""" + + app_id = 'api' + + _version = 1 + + def __init__(self): + """Create components for the app.""" + super().__init__() + + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True) + self.add(info) diff --git a/plinth/modules/avahi/__init__.py b/plinth/modules/avahi/__init__.py index 243cfd5fd..13ae5601a 100644 --- a/plinth/modules/avahi/__init__.py +++ b/plinth/modules/avahi/__init__.py @@ -21,16 +21,6 @@ from . import manifest # pylint: disable=C0103 -version = 1 - -is_essential = True - -depends = ['names'] - -managed_services = ['avahi-daemon'] - -managed_packages = ['avahi-daemon', 'avahi-utils'] - _description = [ format_lazy( _('Service discovery allows other devices on the network to ' @@ -42,8 +32,6 @@ _description = [ 'hostile local network.'), box_name=_(cfg.box_name)) ] -manual_page = 'ServiceDiscovery' - app = None @@ -52,11 +40,14 @@ class AvahiApp(app_module.App): app_id = 'avahi' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, depends=['names'], name=_('Service Discovery'), icon='fa-compass', description=_description, manual_page='ServiceDiscovery') @@ -66,7 +57,7 @@ class AvahiApp(app_module.App): 'avahi:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-avahi', managed_packages) + packages = Packages('packages-avahi', ['avahi-daemon', 'avahi-utils']) self.add(packages) domain_type = DomainType('domain-type-local', @@ -78,7 +69,7 @@ class AvahiApp(app_module.App): is_external=False) self.add(firewall) - daemon = Daemon('daemon-avahi', managed_services[0]) + daemon = Daemon('daemon-avahi', 'avahi-daemon') self.add(daemon) backup_restore = BackupRestore('backup-restore-avahi', @@ -98,7 +89,7 @@ class AvahiApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) # Reload avahi-daemon now that first-run does not reboot. After performing # FreedomBox Service (Plinth) package installation, new Avahi files will be # available and require restart. diff --git a/plinth/modules/avahi/tests/test_functional.py b/plinth/modules/avahi/tests/test_functional.py index 076c14f20..9263b3026 100644 --- a/plinth/modules/avahi/tests/test_functional.py +++ b/plinth/modules/avahi/tests/test_functional.py @@ -7,7 +7,10 @@ import pytest from plinth.tests.functional import BaseAppTests -pytestmark = [pytest.mark.system, pytest.mark.essential, pytest.mark.avahi] +pytestmark = [ + pytest.mark.system, pytest.mark.essential, pytest.mark.domain, + pytest.mark.avahi +] class TestAvahiApp(BaseAppTests): diff --git a/plinth/modules/backups/__init__.py b/plinth/modules/backups/__init__.py index 0803bdeaa..4f70c58e4 100644 --- a/plinth/modules/backups/__init__.py +++ b/plinth/modules/backups/__init__.py @@ -23,14 +23,6 @@ from . import api logger = logging.getLogger(__name__) -version = 3 - -is_essential = True - -managed_packages = ['borgbackup', 'sshfs'] - -depends = ['storage'] - _description = [ _('Backups allows creating and managing backup archives.'), ] @@ -47,14 +39,16 @@ class BackupsApp(app_module.App): app_id = 'backups' + _version = 3 + def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( - app_id=self.app_id, version=version, depends=depends, - name=_('Backups'), icon='fa-files-o', description=_description, - manual_page='Backups', + app_id=self.app_id, version=self._version, is_essential=True, + depends=['storage'], name=_('Backups'), icon='fa-files-o', + description=_description, manual_page='Backups', donation_url='https://www.borgbackup.org/support/fund.html') self.add(info) @@ -62,7 +56,7 @@ class BackupsApp(app_module.App): 'backups:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-backups', managed_packages) + packages = Packages('packages-backups', ['borgbackup', 'sshfs']) self.add(packages) @staticmethod @@ -76,7 +70,7 @@ class BackupsApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) from . import repository helper.call('post', actions.superuser_run, 'backups', ['setup', '--path', repository.RootBorgRepository.PATH]) diff --git a/plinth/modules/backups/api.py b/plinth/modules/backups/api.py index 37c3b6892..599d885ff 100644 --- a/plinth/modules/backups/api.py +++ b/plinth/modules/backups/api.py @@ -10,7 +10,6 @@ TODO: - Implement unit tests. """ -import importlib import logging from plinth import action_utils, actions @@ -174,13 +173,14 @@ def _install_apps_before_restore(components): data getting backed up into older version of the app. """ - modules_to_setup = [] + apps_to_setup = [] for component in components: - module = importlib.import_module(component.app.__class__.__module__) - if module.setup_helper.get_state() in ('needs-setup', 'needs-update'): - modules_to_setup.append(component.app.app_id) + if component.app.get_setup_state() in ( + app_module.App.SetupState.NEEDS_SETUP, + app_module.App.SetupState.NEEDS_UPDATE): + apps_to_setup.append(component.app.app_id) - setup.run_setup_on_modules(modules_to_setup) + setup.run_setup_on_apps(apps_to_setup) def _get_backup_restore_component(app): @@ -198,8 +198,7 @@ def get_all_components_for_backup(): for app_ in app_module.App.list(): try: - module = importlib.import_module(app_.__class__.__module__) - if module.setup_helper.get_state() != 'needs-setup': + if not app_.needs_setup(): components.append(_get_backup_restore_component(app_)) except TypeError: # Application not available for backup/restore pass diff --git a/plinth/modules/backups/tests/test_api.py b/plinth/modules/backups/tests/test_api.py index fe5019311..395e2f271 100644 --- a/plinth/modules/backups/tests/test_api.py +++ b/plinth/modules/backups/tests/test_api.py @@ -95,23 +95,23 @@ class TestBackupProcesses: @staticmethod @patch('plinth.modules.backups.api._install_apps_before_restore') - @patch('plinth.module_loader.loaded_modules.items') - def test_restore_apps(mock_install, modules): + def test_restore_apps(mock_install): """Test that restore_handler is called.""" - modules.return_value = [('a', MagicMock())] restore_handler = MagicMock() api.restore_apps(restore_handler) restore_handler.assert_called_once() @staticmethod - @patch('importlib.import_module') + @patch('plinth.app.App.get_setup_state') @patch('plinth.app.App.list') - def test_get_all_components_for_backup(apps_list, import_module): + def test_get_all_components_for_backup(apps_list, get_setup_state): """Test listing components supporting backup and needing backup.""" - modules = [MagicMock(), MagicMock(), MagicMock()] - import_module.side_effect = modules + get_setup_state.side_effect = [ + App.SetupState.UP_TO_DATE, + App.SetupState.NEEDS_SETUP, + App.SetupState.UP_TO_DATE, + ] apps = [_get_test_app('a'), _get_test_app('b'), _get_test_app('c')] - modules[1].setup_helper.get_state.side_effect = ['needs-setup'] apps_list.return_value = apps returned_components = api.get_all_components_for_backup() diff --git a/plinth/modules/backups/tests/test_schedule.py b/plinth/modules/backups/tests/test_schedule.py index 9fb87b476..dd6ae0847 100644 --- a/plinth/modules/backups/tests/test_schedule.py +++ b/plinth/modules/backups/tests/test_schedule.py @@ -15,8 +15,6 @@ from plinth.app import App from ..components import BackupRestore from ..schedule import Schedule -setup_helper = MagicMock() - class AppTest(App): """Sample App for testing.""" @@ -426,11 +424,12 @@ cases = [ @pytest.mark.parametrize( 'schedule_params,archives_data,test_now,run_periods,cleanups', cases) +@patch('plinth.app.App.get_setup_state') @patch('plinth.modules.backups.repository.get_instance') -def test_run_schedule(get_instance, schedule_params, archives_data, test_now, - run_periods, cleanups): +def test_run_schedule(get_instance, get_setup_state, schedule_params, + archives_data, test_now, run_periods, cleanups): """Test that backups are run at expected time.""" - setup_helper.get_state.return_value = 'up-to-date' + get_setup_state.return_value = App.SetupState.UP_TO_DATE repository = MagicMock() repository.list_archives.side_effect = \ diff --git a/plinth/modules/bepasty/__init__.py b/plinth/modules/bepasty/__init__.py index 0170f6780..77ad279a1 100644 --- a/plinth/modules/bepasty/__init__.py +++ b/plinth/modules/bepasty/__init__.py @@ -17,10 +17,6 @@ from plinth.package import Packages from . import manifest -version = 2 - -managed_packages = ['bepasty'] - _description = [ _('bepasty is a web application that allows large files to be uploaded ' 'and shared. Text and code snippets can also be pasted and shared. ' @@ -58,11 +54,13 @@ class BepastyApp(app_module.App): app_id = 'bepasty' + _version = 2 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(self.app_id, version, name=_('bepasty'), + info = app_module.Info(self.app_id, self._version, name=_('bepasty'), icon_filename='bepasty', short_description=_('File & Snippet Sharing'), description=_description, manual_page='bepasty', @@ -80,7 +78,7 @@ class BepastyApp(app_module.App): clients=manifest.clients) self.add(shortcut) - packages = Packages('packages-bepasty', managed_packages) + packages = Packages('packages-bepasty', ['bepasty']) self.add(packages) firewall = Firewall('firewall-bepasty', info.name, @@ -101,7 +99,7 @@ class BepastyApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'bepasty', ['setup', '--domain-name', 'freedombox.local']) helper.call('post', app.enable) diff --git a/plinth/modules/bind/__init__.py b/plinth/modules/bind/__init__.py index 0423f2a4e..402f38140 100644 --- a/plinth/modules/bind/__init__.py +++ b/plinth/modules/bind/__init__.py @@ -21,12 +21,6 @@ from plinth.utils import format_lazy from . import manifest -version = 2 - -managed_services = ['bind9', 'named'] - -managed_packages = ['bind9'] - _description = [ _('BIND enables you to publish your Domain Name System (DNS) information ' 'on the Internet, and to resolve DNS queries for your user devices on ' @@ -72,11 +66,13 @@ class BindApp(app_module.App): app_id = 'bind' + _version = 2 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('BIND'), icon='fa-globe-w', short_description=_('Domain Name Server'), description=_description) @@ -87,7 +83,7 @@ class BindApp(app_module.App): parent_url_name='system') self.add(menu_item) - packages = Packages('packages-bind', managed_packages) + packages = Packages('packages-bind', ['bind9']) self.add(packages) firewall = Firewall('firewall-bind', info.name, ports=['dns'], @@ -95,11 +91,8 @@ class BindApp(app_module.App): self.add(firewall) daemon = Daemon( - 'daemon-bind', managed_services[0], listen_ports=[(53, 'tcp6'), - (53, 'udp6'), - (53, 'tcp4'), - (53, 'udp4')], - alias=managed_services[1]) + 'daemon-bind', 'named', listen_ports=[(53, 'tcp6'), (53, 'udp6'), + (53, 'tcp4'), (53, 'udp4')]) self.add(daemon) backup_restore = BackupRestore('backup-restore-bind', @@ -109,7 +102,7 @@ class BindApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call( 'post', actions.superuser_run, 'bind', ['setup', '--old-version', str(old_version)]) @@ -118,7 +111,7 @@ def setup(helper, old_version=None): def force_upgrade(helper, _packages): """Force upgrade the managed packages to resolve conffile prompt.""" - helper.install(managed_packages, force_configuration='old') + helper.install(['bind9'], force_configuration='old') return True diff --git a/plinth/modules/bind/manifest.py b/plinth/modules/bind/manifest.py index 616e6f641..b8f345890 100644 --- a/plinth/modules/bind/manifest.py +++ b/plinth/modules/bind/manifest.py @@ -7,5 +7,5 @@ backup = { 'config': { 'files': ['/etc/bind/named.conf.options'] }, - 'services': ['bind9'] + 'services': ['named'] } diff --git a/plinth/modules/calibre/__init__.py b/plinth/modules/calibre/__init__.py index 9bbd7f290..0847bbf1d 100644 --- a/plinth/modules/calibre/__init__.py +++ b/plinth/modules/calibre/__init__.py @@ -21,12 +21,6 @@ from plinth.utils import format_lazy from . import manifest -version = 1 - -managed_services = ['calibre-server-freedombox'] - -managed_packages = ['calibre'] - _description = [ format_lazy( _('calibre server provides online access to your e-book collection. ' @@ -52,13 +46,17 @@ class CalibreApp(app_module.App): app_id = 'calibre' + _version = 1 + + DAEMON = 'calibre-server-freedombox' + def __init__(self): """Create components for the app.""" super().__init__() groups = {'calibre': _('Use calibre e-book libraries')} - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('calibre'), icon_filename='calibre', short_description=_('E-book Library'), description=_description, manual_page='Calibre', @@ -79,7 +77,7 @@ class CalibreApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) - packages = Packages('packages-calibre', managed_packages) + packages = Packages('packages-calibre', ['calibre']) self.add(packages) firewall = Firewall('firewall-calibre', info.name, @@ -90,7 +88,7 @@ class CalibreApp(app_module.App): urls=['https://{host}/calibre']) self.add(webserver) - daemon = Daemon('daemon-calibre', managed_services[0], + daemon = Daemon('daemon-calibre', self.DAEMON, listen_ports=[(8844, 'tcp4')]) self.add(daemon) @@ -106,7 +104,7 @@ class CalibreApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.enable) @@ -125,10 +123,10 @@ def list_libraries(): def create_library(name): """Create an empty library.""" actions.superuser_run('calibre', ['create-library', name]) - actions.superuser_run('service', ['try-restart', managed_services[0]]) + actions.superuser_run('service', ['try-restart', CalibreApp.DAEMON]) def delete_library(name): """Delete a library and its contents.""" actions.superuser_run('calibre', ['delete-library', name]) - actions.superuser_run('service', ['try-restart', managed_services[0]]) + actions.superuser_run('service', ['try-restart', CalibreApp.DAEMON]) diff --git a/plinth/modules/cockpit/__init__.py b/plinth/modules/cockpit/__init__.py index 3d07aac20..648ec78e8 100644 --- a/plinth/modules/cockpit/__init__.py +++ b/plinth/modules/cockpit/__init__.py @@ -20,14 +20,6 @@ from plinth.utils import format_lazy from . import manifest, utils -version = 1 - -is_essential = True - -managed_services = ['cockpit.socket'] - -managed_packages = ['cockpit'] - _description = [ format_lazy( _('Cockpit is a server manager that makes it easy to administer ' @@ -58,12 +50,16 @@ class CockpitApp(app_module.App): app_id = 'cockpit' + _version = 1 + + DAEMON = 'cockpit.socket' + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, name=_('Cockpit'), + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Cockpit'), icon='fa-wrench', icon_filename='cockpit', short_description=_('Server Administration'), description=_description, manual_page='Cockpit', @@ -83,7 +79,7 @@ class CockpitApp(app_module.App): allowed_groups=['admin']) self.add(shortcut) - packages = Packages('packages-cockpit', managed_packages) + packages = Packages('packages-cockpit', ['cockpit']) self.add(packages) firewall = Firewall('firewall-cockpit', info.name, @@ -94,7 +90,7 @@ class CockpitApp(app_module.App): urls=['https://{host}/_cockpit/']) self.add(webserver) - daemon = Daemon('daemon-cockpit', managed_services[0]) + daemon = Daemon('daemon-cockpit', self.DAEMON) self.add(daemon) backup_restore = BackupRestore('backup-restore-cockpit', @@ -110,7 +106,7 @@ class CockpitApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) domains = names.components.DomainName.list_names('https') helper.call('post', actions.superuser_run, 'cockpit', ['setup'] + list(domains)) @@ -120,19 +116,17 @@ def setup(helper, old_version=None): def on_domain_added(sender, domain_type, name, description='', services=None, **kwargs): """Handle addition of a new domain.""" - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup': + if not app.needs_setup(): if name not in utils.get_domains(): actions.superuser_run('cockpit', ['add-domain', name]) actions.superuser_run('service', - ['try-restart', managed_services[0]]) + ['try-restart', CockpitApp.DAEMON]) def on_domain_removed(sender, domain_type, name, **kwargs): """Handle removal of a domain.""" - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup': + if not app.needs_setup(): if name in utils.get_domains(): actions.superuser_run('cockpit', ['remove-domain', name]) actions.superuser_run('service', - ['try-restart', managed_services[0]]) + ['try-restart', CockpitApp.DAEMON]) diff --git a/plinth/modules/config/__init__.py b/plinth/modules/config/__init__.py index 490bd9e22..0de181ce9 100644 --- a/plinth/modules/config/__init__.py +++ b/plinth/modules/config/__init__.py @@ -12,27 +12,18 @@ from django.utils.translation import gettext_lazy as _ from plinth import actions from plinth import app as app_module from plinth import frontpage, menu +from plinth.daemon import RelatedDaemon from plinth.modules.apache import (get_users_with_website, user_of_uws_url, uws_url_of_user) from plinth.modules.names.components import DomainType from plinth.package import Packages from plinth.signals import domain_added -version = 3 - -is_essential = True - -managed_services = ['systemd-journald', 'rsyslog'] - _description = [ _('Here you can set some general configuration options ' 'like hostname, domain name, webserver home page etc.') ] -depends = ['apache', 'firewall', 'names'] - -managed_packages = ['zram-tools'] - APACHE_CONF_ENABLED_DIR = '/etc/apache2/conf-enabled' APACHE_HOMEPAGE_CONF_FILE_NAME = 'freedombox-apache-homepage.conf' APACHE_HOMEPAGE_CONFIG = os.path.join(APACHE_CONF_ENABLED_DIR, @@ -49,15 +40,18 @@ class ConfigApp(app_module.App): app_id = 'config' + _version = 3 + can_be_disabled = False def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, depends=depends, - name=_('General Configuration'), icon='fa-cog', - description=_description, + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, + depends=['apache', 'firewall', 'names' + ], name=_('General Configuration'), + icon='fa-cog', description=_description, manual_page='Configure') self.add(info) @@ -65,9 +59,15 @@ class ConfigApp(app_module.App): 'config:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-config', managed_packages) + packages = Packages('packages-config', ['zram-tools']) self.add(packages) + daemon1 = RelatedDaemon('related-daemon-config1', 'systemd-journald') + self.add(daemon1) + + daemon2 = RelatedDaemon('related-daemon-config2', 'rsyslog') + self.add(daemon2) + domain_type = DomainType('domain-type-static', _('Domain Name'), 'config:index', can_have_certificate=True) self.add(domain_type) @@ -192,7 +192,7 @@ def set_advanced_mode(advanced_mode): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) _migrate_home_page_config() # systemd-journald is socket activated, it may not be running and it does diff --git a/plinth/modules/config/tests/test_functional.py b/plinth/modules/config/tests/test_functional.py index f6e35787e..be7860c3f 100644 --- a/plinth/modules/config/tests/test_functional.py +++ b/plinth/modules/config/tests/test_functional.py @@ -6,7 +6,10 @@ Functional, browser based tests for config app. import pytest from plinth.tests import functional -pytestmark = [pytest.mark.system, pytest.mark.essential, pytest.mark.config] +pytestmark = [ + pytest.mark.system, pytest.mark.essential, pytest.mark.domain, + pytest.mark.config +] @pytest.fixture(scope='module', autouse=True) diff --git a/plinth/modules/coturn/__init__.py b/plinth/modules/coturn/__init__.py index 1deb2f2be..390e8e274 100644 --- a/plinth/modules/coturn/__init__.py +++ b/plinth/modules/coturn/__init__.py @@ -25,14 +25,6 @@ from plinth.utils import format_lazy from . import manifest -version = 1 - -managed_services = ['coturn'] - -managed_packages = ['coturn'] - -managed_paths = [pathlib.Path('/etc/coturn/')] - _description = [ _('Coturn is a server to facilitate audio/video calls and conferences by ' 'providing an implementation of TURN and STUN protocols. WebRTC, SIP ' @@ -55,11 +47,13 @@ class CoturnApp(app_module.App): app_id = 'coturn' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Coturn'), icon_filename='coturn', short_description=_('VoIP Helper'), description=_description, manual_page='Coturn') @@ -70,7 +64,7 @@ class CoturnApp(app_module.App): parent_url_name='apps') self.add(menu_item) - packages = Packages('packages-coturn', managed_packages) + packages = Packages('packages-coturn', ['coturn']) self.add(packages) firewall = Firewall('firewall-coturn', info.name, @@ -78,8 +72,8 @@ class CoturnApp(app_module.App): self.add(firewall) letsencrypt = LetsEncrypt( - 'letsencrypt-coturn', domains=get_domains, - daemons=managed_services, should_copy_certificates=True, + 'letsencrypt-coturn', domains=get_domains, daemons=['coturn'], + should_copy_certificates=True, private_key_path='/etc/coturn/certs/pkey.pem', certificate_path='/etc/coturn/certs/cert.pem', user_owner='turnserver', group_owner='turnserver', @@ -87,13 +81,22 @@ class CoturnApp(app_module.App): self.add(letsencrypt) daemon = Daemon( - 'daemon-coturn', managed_services[0], - listen_ports=[(3478, 'udp4'), (3478, 'udp6'), (3478, 'tcp4'), - (3478, 'tcp6'), (3479, 'udp4'), (3479, 'udp6'), - (3479, 'tcp4'), (3479, 'tcp6'), (5349, 'udp4'), - (5349, 'udp6'), (5349, 'tcp4'), (5349, 'tcp6'), - (5350, 'udp4'), (5350, 'udp6'), (5350, 'tcp4'), - (5350, 'tcp6')]) + 'daemon-coturn', 'coturn', listen_ports=[(3478, 'udp4'), + (3478, 'udp6'), + (3478, 'tcp4'), + (3478, 'tcp6'), + (3479, 'udp4'), + (3479, 'udp6'), + (3479, 'tcp4'), + (3479, 'tcp6'), + (5349, 'udp4'), + (5349, 'udp6'), + (5349, 'tcp4'), + (5349, 'tcp6'), + (5350, 'udp4'), + (5350, 'udp6'), + (5350, 'tcp4'), + (5350, 'tcp6')]) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-coturn', @@ -107,7 +110,7 @@ class CoturnApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'coturn', ['setup']) helper.call('post', app.enable) app.get_component('letsencrypt-coturn').setup_certificates() diff --git a/plinth/modules/datetime/__init__.py b/plinth/modules/datetime/__init__.py index 7110aedd5..8ffcbe03e 100644 --- a/plinth/modules/datetime/__init__.py +++ b/plinth/modules/datetime/__init__.py @@ -14,12 +14,6 @@ from plinth.modules.backups.components import BackupRestore from . import manifest -version = 2 - -is_essential = True - -managed_services = ['systemd-timesyncd'] - _description = [ _('Network time server is a program that maintains the system time ' 'in synchronization with servers on the Internet.') @@ -33,6 +27,8 @@ class DateTimeApp(app_module.App): app_id = 'datetime' + _version = 2 + _time_managed = None @property @@ -64,10 +60,9 @@ class DateTimeApp(app_module.App): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, - name=_('Date & Time'), icon='fa-clock-o', - description=_description, + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Date & Time'), + icon='fa-clock-o', description=_description, manual_page='DateTime') self.add(info) @@ -76,7 +71,7 @@ class DateTimeApp(app_module.App): self.add(menu_item) if self._is_time_managed(): - daemon = Daemon('daemon-datetime', managed_services[0]) + daemon = Daemon('daemon-datetime', 'systemd-timesyncd') self.add(daemon) backup_restore = BackupRestore('backup-restore-datetime', diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index 36cfcba62..3c4ede5d7 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -18,12 +18,6 @@ from plinth.package import Packages from . import manifest -version = 6 - -managed_services = ['deluged', 'deluge-web'] - -managed_packages = ['deluged', 'deluge-web'] - _description = [ _('Deluge is a BitTorrent client that features a Web UI.'), _('The default password is \'deluge\', but you should log in and ' @@ -40,6 +34,8 @@ class DelugeApp(app_module.App): app_id = 'deluge' + _version = 6 + def __init__(self): """Create components for the app.""" super().__init__() @@ -49,7 +45,7 @@ class DelugeApp(app_module.App): } info = app_module.Info( - app_id=self.app_id, version=version, name=_('Deluge'), + app_id=self.app_id, version=self._version, name=_('Deluge'), icon_filename='deluge', short_description=_('BitTorrent Web Client'), description=_description, manual_page='Deluge', @@ -70,7 +66,7 @@ class DelugeApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) - packages = Packages('packages-deluge', managed_packages) + packages = Packages('packages-deluge', ['deluged', 'deluge-web']) self.add(packages) firewall = Firewall('firewall-deluge', info.name, @@ -81,11 +77,11 @@ class DelugeApp(app_module.App): urls=['https://{host}/deluge']) self.add(webserver) - daemon = Daemon('daemon-deluged', managed_services[0], + daemon = Daemon('daemon-deluged', 'deluged', listen_ports=[(58846, 'tcp4')]) self.add(daemon) - daemon_web = Daemon('daemon-deluge-web', managed_services[1], + daemon_web = Daemon('daemon-deluge-web', 'deluge-web', listen_ports=[(8112, 'tcp4')]) self.add(daemon_web) @@ -101,7 +97,7 @@ class DelugeApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) add_user_to_share_group(SYSTEM_USER) helper.call('post', actions.superuser_run, 'deluge', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/diagnostics/__init__.py b/plinth/modules/diagnostics/__init__.py index 5cb2b202e..7bb51f071 100644 --- a/plinth/modules/diagnostics/__init__.py +++ b/plinth/modules/diagnostics/__init__.py @@ -4,7 +4,6 @@ FreedomBox app for system diagnostics. """ import collections -import importlib import logging import pathlib import threading @@ -20,10 +19,6 @@ from plinth.modules.backups.components import BackupRestore from . import manifest -version = 1 - -is_essential = True - _description = [ _('The system diagnostic test will run a number of checks on your ' 'system to confirm that applications and services are working as ' @@ -46,13 +41,14 @@ class DiagnosticsApp(app_module.App): app_id = 'diagnostics' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, - name=_('Diagnostics'), icon='fa-heartbeat', - description=_description, + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Diagnostics'), + icon='fa-heartbeat', description=_description, manual_page='Diagnostics') self.add(info) @@ -115,8 +111,7 @@ def run_on_all_enabled_modules(): for app in app_module.App.list(): # Don't run diagnostics on apps have not been setup yet. # However, run on apps that need an upgrade. - module = importlib.import_module(app.__class__.__module__) - if module.setup_helper.get_state() == 'needs-setup': + if app.needs_setup(): continue if not app.is_enabled(): diff --git a/plinth/modules/diaspora/__init__.py b/plinth/modules/diaspora/__init__.py index 8261b8e51..1dbf13aaa 100644 --- a/plinth/modules/diaspora/__init__.py +++ b/plinth/modules/diaspora/__init__.py @@ -36,12 +36,6 @@ def get_configured_domain_name(): return lazy_domain_name -version = 1 - -managed_services = ['diaspora'] - -managed_packages = ['diaspora'] - _description = [ _('diaspora* is a decentralized social network where you can store ' 'and control your own data.'), @@ -61,12 +55,14 @@ class DiasporaApp(app_module.App): app_id = 'diaspora' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() from . import manifest - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('diaspora*'), icon_filename='diaspora', short_description=_('Federated Social Network'), description=_description, @@ -84,7 +80,7 @@ class DiasporaApp(app_module.App): clients=info.clients, login_required=True) self.add(shortcut) - packages = Packages('packages-diaspora', managed_packages) + packages = Packages('packages-diaspora', ['diaspora']) self.add(packages) firewall = Firewall('firewall-diaspora', info.name, @@ -94,7 +90,7 @@ class DiasporaApp(app_module.App): webserver = Webserver('webserver-diaspora', 'diaspora-plinth') self.add(webserver) - daemon = Daemon('daemon-diaspora', managed_services[0]) + daemon = Daemon('daemon-diaspora', 'diaspora') self.add(daemon) def diagnose(self): @@ -127,7 +123,7 @@ class Shortcut(frontpage.Shortcut): def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'diaspora', ['pre-install']) - helper.install(managed_packages) + app.setup(old_version) helper.call('custom_config', actions.superuser_run, 'diaspora', ['disable-ssl']) diff --git a/plinth/modules/dynamicdns/__init__.py b/plinth/modules/dynamicdns/__init__.py index 75ae6181c..86efbc4da 100644 --- a/plinth/modules/dynamicdns/__init__.py +++ b/plinth/modules/dynamicdns/__init__.py @@ -17,14 +17,6 @@ from plinth.utils import format_lazy from . import manifest -version = 1 - -is_essential = True - -depends = ['names'] - -managed_packages = ['ez-ipupdate'] - _description = [ format_lazy( _('If your Internet provider changes your IP address periodically ' @@ -49,12 +41,14 @@ class DynamicDNSApp(app_module.App): app_id = 'dynamicdns' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, depends=depends, + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, depends=['names'], name=_('Dynamic DNS Client'), icon='fa-refresh', description=_description, manual_page='DynamicDNS') @@ -64,7 +58,7 @@ class DynamicDNSApp(app_module.App): 'dynamicdns:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-dynamicdns', managed_packages) + packages = Packages('packages-dynamicdns', ['ez-ipupdate']) self.add(packages) domain_type = DomainType('domain-type-dynamic', @@ -101,7 +95,7 @@ class DynamicDNSApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) def get_status(): diff --git a/plinth/modules/dynamicdns/forms.py b/plinth/modules/dynamicdns/forms.py index 3f2bf1b4c..60454a9df 100644 --- a/plinth/modules/dynamicdns/forms.py +++ b/plinth/modules/dynamicdns/forms.py @@ -56,7 +56,7 @@ class ConfigureForm(forms.Form): '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).'), + 'https://ddns.freedombox.org/ip/).'), box_name=gettext_lazy(cfg.box_name)) help_user = \ gettext_lazy('The username that was used when the account was ' diff --git a/plinth/modules/dynamicdns/templates/dynamicdns.html b/plinth/modules/dynamicdns/templates/dynamicdns.html index 1f10b3c5e..0584be5cc 100644 --- a/plinth/modules/dynamicdns/templates/dynamicdns.html +++ b/plinth/modules/dynamicdns/templates/dynamicdns.html @@ -11,8 +11,8 @@

{% blocktrans trimmed %} 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 + a free GnuDIP service at ddns.freedombox.org or you may find free update URL based services at freedns.afraid.org. diff --git a/plinth/modules/dynamicdns/tests/test_functional.py b/plinth/modules/dynamicdns/tests/test_functional.py index ceee92ea8..8f2655532 100644 --- a/plinth/modules/dynamicdns/tests/test_functional.py +++ b/plinth/modules/dynamicdns/tests/test_functional.py @@ -6,10 +6,12 @@ Functional, browser based tests for dynamicdns app. import time import pytest + from plinth.tests import functional pytestmark = [ - pytest.mark.system, pytest.mark.essential, pytest.mark.dynamicdns + pytest.mark.system, pytest.mark.essential, pytest.mark.domain, + pytest.mark.dynamicdns ] @@ -55,7 +57,7 @@ def _configure(browser): browser.find_by_id('id_dynamicdns_user').fill('tester') browser.find_by_id('id_dynamicdns_secret').fill('testingtesting') browser.find_by_id('id_dynamicdns_ipurl').fill( - 'http://myip.datasystems24.de') + 'https://ddns.freedombox.org/ip/') functional.submit(browser) # After a domain name change, Let's Encrypt will restart the web @@ -76,7 +78,7 @@ def _has_original_config(browser): ipurl = browser.find_by_id('id_dynamicdns_ipurl').value if enabled and service_type == 'GnuDIP' and server == 'example.com' \ and domain == 'freedombox.example.com' and user == 'tester' \ - and ipurl == 'http://myip.datasystems24.de': + and ipurl == 'https://ddns.freedombox.org/ip/': return True else: return False @@ -93,7 +95,7 @@ def _change_config(browser): browser.find_by_id('id_dynamicdns_user').fill('tester2') browser.find_by_id('id_dynamicdns_secret').fill('testingtesting2') browser.find_by_id('id_dynamicdns_ipurl').fill( - 'http://myip2.datasystems24.de') + 'https://ddns2.freedombox.org/ip/') functional.submit(browser) # After a domain name change, Let's Encrypt will restart the web diff --git a/plinth/modules/ejabberd/__init__.py b/plinth/modules/ejabberd/__init__.py index 8e3c2d052..f37bf61a0 100644 --- a/plinth/modules/ejabberd/__init__.py +++ b/plinth/modules/ejabberd/__init__.py @@ -5,7 +5,6 @@ FreedomBox app to configure ejabberd server. import json import logging -import pathlib from django.urls import reverse_lazy from django.utils.translation import gettext_lazy as _ @@ -28,14 +27,6 @@ from plinth.utils import format_lazy from . import manifest -version = 4 - -managed_services = ['ejabberd'] - -managed_packages = ['ejabberd'] - -managed_paths = [pathlib.Path('/etc/ejabberd/')] - _description = [ _('XMPP is an open and standardized communication protocol. Here ' 'you can run and configure your XMPP server, called ejabberd.'), @@ -53,8 +44,6 @@ _description = [ 'an external server.'), coturn_url=reverse_lazy('coturn:index')) ] -depends = ['coturn'] - logger = logging.getLogger(__name__) app = None @@ -65,16 +54,17 @@ class EjabberdApp(app_module.App): app_id = 'ejabberd' + _version = 4 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - name=_('ejabberd'), icon_filename='ejabberd', - short_description=_('Chat Server'), - description=_description, - manual_page='ejabberd', - clients=manifest.clients) + info = app_module.Info( + app_id=self.app_id, version=self._version, depends=['coturn'], + name=_('ejabberd'), icon_filename='ejabberd', + short_description=_('Chat Server'), description=_description, + manual_page='ejabberd', clients=manifest.clients) self.add(info) menu_item = menu.Menu('menu-ejabberd', info.name, @@ -90,7 +80,7 @@ class EjabberdApp(app_module.App): login_required=True) self.add(shortcut) - packages = Packages('packages-ejabberd', managed_packages) + packages = Packages('packages-ejabberd', ['ejabberd']) self.add(packages) firewall = Firewall('firewall-ejabberd', info.name, @@ -112,9 +102,12 @@ class EjabberdApp(app_module.App): self.add(letsencrypt) daemon = Daemon( - 'daemon-ejabberd', managed_services[0], - listen_ports=[(5222, 'tcp4'), (5222, 'tcp6'), (5269, 'tcp4'), - (5269, 'tcp6'), (5443, 'tcp4'), (5443, 'tcp6')]) + 'daemon-ejabberd', 'ejabberd', listen_ports=[(5222, 'tcp4'), + (5222, 'tcp6'), + (5269, 'tcp4'), + (5269, 'tcp6'), + (5443, 'tcp4'), + (5443, 'tcp6')]) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-ejabberd', @@ -152,7 +145,7 @@ def setup(helper, old_version=None): helper.call('pre', actions.superuser_run, 'ejabberd', ['pre-install', '--domainname', domainname]) # XXX: Configure all other domain names - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.get_component('letsencrypt-ejabberd').setup_certificates, [domainname]) @@ -171,8 +164,7 @@ def get_domains(): XXX: Retrieve the list from ejabberd configuration. """ - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() == 'needs-setup': + if app.needs_setup(): return [] domain_name = config.get_domainname() @@ -188,8 +180,7 @@ def on_pre_hostname_change(sender, old_hostname, new_hostname, **kwargs): """ del sender # Unused del kwargs # Unused - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() == 'needs-setup': + if app.needs_setup(): return actions.superuser_run('ejabberd', [ @@ -202,8 +193,7 @@ def on_post_hostname_change(sender, old_hostname, new_hostname, **kwargs): """Update ejabberd config after hostname change.""" del sender # Unused del kwargs # Unused - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() == 'needs-setup': + if app.needs_setup(): return actions.superuser_run('ejabberd', [ @@ -215,8 +205,7 @@ def on_post_hostname_change(sender, old_hostname, new_hostname, **kwargs): def on_domain_added(sender, domain_type, name, description='', services=None, **kwargs): """Update ejabberd config after domain name change.""" - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() == 'needs-setup': + if app.needs_setup(): return conf = actions.superuser_run('ejabberd', ['get-configuration']) @@ -229,8 +218,7 @@ def on_domain_added(sender, domain_type, name, description='', services=None, def update_turn_configuration(config: TurnConfiguration, managed=True, force=False): """Update ejabberd's STUN/TURN server configuration.""" - setup_helper = globals()['setup_helper'] - if not force and setup_helper.get_state() == 'needs-setup': + if app.needs_setup(): return params = ['configure-turn'] diff --git a/plinth/modules/ejabberd/tests/test_turn_config.py b/plinth/modules/ejabberd/tests/test_turn_config.py index 21de15441..b48ddf67d 100644 --- a/plinth/modules/ejabberd/tests/test_turn_config.py +++ b/plinth/modules/ejabberd/tests/test_turn_config.py @@ -5,7 +5,7 @@ Test module for ejabberd STUN/TURN configuration. import pathlib import shutil -from unittest.mock import MagicMock, patch +from unittest.mock import patch import pytest @@ -58,10 +58,9 @@ def fixture_test_configuration(call_action, conf_file): Patches actions.superuser_run with the fixture call_action. The module state is patched to be 'up-to-date'. """ - with patch('plinth.actions.superuser_run', call_action): - helper = MagicMock() - helper.get_state.return_value = 'up-to-date' - ejabberd.setup_helper = helper + with patch('plinth.actions.superuser_run', + call_action), patch('plinth.modules.ejabberd.app') as app: + app.needs_setup.return_value = False yield diff --git a/plinth/modules/email_server/__init__.py b/plinth/modules/email_server/__init__.py index 71c4e1ab0..915b024fe 100644 --- a/plinth/modules/email_server/__init__.py +++ b/plinth/modules/email_server/__init__.py @@ -14,31 +14,11 @@ from plinth.modules.apache.components import Webserver from plinth.modules.config import get_domainname from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt -from plinth.package import packages_installed, remove +from plinth.package import Packages, remove +from plinth.signals import domain_added, domain_removed from . import audit, manifest -version = 1 - -# Other likely install conflicts have been discarded: -# - msmtp, nullmailer, sendmail don't cause install faults. -# - qmail and smail are missing in Bullseye (Not tested, -# but less likely due to that). -package_conflicts = ('exim4-base', 'exim4-config', 'exim4-daemon-light') -package_conflicts_action = 'ignore' - -packages = [ - 'postfix-ldap', - 'postfix-sqlite', - 'dovecot-pop3d', - 'dovecot-imapd', - 'dovecot-ldap', - 'dovecot-lmtpd', - 'dovecot-managesieved', -] - -packages_bloat = ['rspamd'] - clamav_packages = ['clamav', 'clamav-daemon'] clamav_daemons = ['clamav-daemon', 'clamav-freshclam'] @@ -47,10 +27,6 @@ port_info = { 'dovecot': ('imaps', 993, 'pop3s', 995), } -managed_services = ['postfix', 'dovecot', 'rspamd'] - -managed_packages = packages + packages_bloat - _description = [ _('Roundcube app provides web ' 'interface for users to access email.'), @@ -67,10 +43,30 @@ class EmailServerApp(plinth.app.App): app_id = 'email_server' app_name = _('Email Server') + _version = 1 + def __init__(self): """The app's constructor""" super().__init__() self._add_ui_components() + + # Other likely install conflicts have been discarded: + # - msmtp, nullmailer, sendmail don't cause install faults. + # - qmail and smail are missing in Bullseye (Not tested, + # but less likely due to that). + packages = Packages( + 'packages-email-server', [ + 'postfix-ldap', 'postfix-sqlite', 'dovecot-pop3d', + 'dovecot-imapd', 'dovecot-ldap', 'dovecot-lmtpd', + 'dovecot-managesieved' + ], conflicts=['exim4-base', 'exim4-config', 'exim4-daemon-light'], + conflicts_action=Packages.ConflictsAction.IGNORE) + self.add(packages) + + packages = Packages('packages-email-server-skip-rec', ['rspamd'], + skip_recommends=True) + self.add(packages) + self._add_daemons() self._add_firewall_ports() @@ -91,7 +87,7 @@ class EmailServerApp(plinth.app.App): def _add_ui_components(self): info = plinth.app.Info( - app_id=self.app_id, version=version, name=self.app_name, + app_id=self.app_id, version=self._version, name=self.app_name, short_description=_('Powered by Postfix, Dovecot & Rspamd'), description=_description, manual_page='EmailServer', clients=manifest.clients, @@ -108,7 +104,7 @@ class EmailServerApp(plinth.app.App): self.add(menu_item) def _add_daemons(self): - for srvname in managed_services: + for srvname in ['postfix', 'dovecot', 'rspamd']: # Construct `listen_ports` parameter for the daemon mixed = port_info.get(srvname, ()) port_numbers = [v for v in mixed if isinstance(v, int)] @@ -131,10 +127,15 @@ class EmailServerApp(plinth.app.App): ports=all_port_names, is_external=True) self.add(firewall) + @staticmethod + def post_init(): + """Perform post initialization operations.""" + domain_added.connect(on_domain_added) + domain_removed.connect(on_domain_removed) + def diagnose(self): """Run diagnostics and return the results""" results = super().diagnose() - results.extend([r.summarize() for r in audit.domain.get()]) 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.tls.get()]) @@ -152,7 +153,8 @@ def setup(helper, old_version=None): """Installs and configures module""" def _clear_conflicts(): - packages_to_remove = packages_installed(package_conflicts) + component = app.get_component('packages-email-server') + packages_to_remove = component.find_conflicts() if packages_to_remove: logger.info('Removing conflicting packages: %s', packages_to_remove) @@ -160,20 +162,37 @@ def setup(helper, old_version=None): # Install helper.call('pre', _clear_conflicts) - helper.install(packages) - helper.install(packages_bloat, skip_recommends=True) + app.setup(old_version) # Setup helper.call('post', audit.home.repair) - helper.call('post', audit.domain.repair) + helper.call('post', audit.domain.set_domains) helper.call('post', audit.ldap.repair) helper.call('post', audit.spam.repair) helper.call('post', audit.tls.repair) helper.call('post', audit.rcube.repair) # Reload - for srvname in managed_services: - actions.superuser_run('service', ['reload', srvname]) + actions.superuser_run('service', ['reload', 'postfix']) + actions.superuser_run('service', ['reload', 'dovecot']) + actions.superuser_run('service', ['reload', 'rspamd']) # Expose to public internet helper.call('post', app.enable) + + +def on_domain_added(sender, domain_type, name, description='', services=None, + **kwargs): + """Handle addition of a new domain.""" + if app.needs_setup(): + return + + audit.domain.set_domains() + + +def on_domain_removed(sender, domain_type, name, **kwargs): + """Handle removal of a domain.""" + if app.needs_setup(): + return + + audit.domain.set_domains() diff --git a/plinth/modules/email_server/audit/domain.py b/plinth/modules/email_server/audit/domain.py index bfdfb3714..d91762f66 100644 --- a/plinth/modules/email_server/audit/domain.py +++ b/plinth/modules/email_server/audit/domain.py @@ -1,317 +1,57 @@ """Configure email domains""" # SPDX-License-Identifier: AGPL-3.0-or-later -import io -import json -import os import pathlib import re -import select import subprocess -import sys -import time - -from django.core.exceptions import ValidationError -from django.utils.translation import gettext_lazy as _ from plinth.actions import superuser_run -from plinth.errors import ActionError -from plinth.modules.config import get_domainname -from plinth.modules.email_server import interproc, postconf - -from . import models - -EXIT_VALIDATION = 40 - -managed_keys = ['_mailname', 'mydomain', 'myhostname', 'mydestination'] +from plinth.modules import config +from plinth.modules.email_server import postconf +from plinth.modules.names.components import DomainName -class ClientError(RuntimeError): - pass - - -def get(): - translation_table = [ - (check_postfix_domains, _('Postfix domain name config')), - ] - results = [] - with postconf.mutex.lock_all(): - for check, title in translation_table: - results.append(check(title)) - return results - - -def repair(): - superuser_run('email_server', ['domain', 'set_up']) - - -def repair_component(action_name): - allowed_actions = {'set_up': ['postfix']} - if action_name not in allowed_actions: - return - superuser_run('email_server', ['domain', action_name]) - return allowed_actions[action_name] - - -def action_set_up(): - with postconf.mutex.lock_all(): - fix_postfix_domains(check_postfix_domains()) - - -def check_postfix_domains(title=''): - diagnosis = models.MainCfDiagnosis(title, action='set_up') - domain = get_domainname() or 'localhost' - postconf_keys = (k for k in managed_keys if not k.startswith('_')) - conf = postconf.get_many_unsafe(postconf_keys, flag='-x') - - dest_set = set(postconf.parse_maps(conf['mydestination'])) - deletion_set = set() - - temp = _amend_mailname(domain) - if temp is not None: - diagnosis.error('Set /etc/mailname to %s', temp) - diagnosis.flag('_mailname', temp) - - # Amend $mydomain and conf['mydomain'] - temp = _amend_mydomain(conf['mydomain'], domain) - if temp is not None: - diagnosis.error('Set $mydomain to %s', temp) - diagnosis.flag('mydomain', temp) - deletion_set.add(conf['mydomain']) - conf['mydomain'] = temp - - # Amend $myhostname and conf['myhostname'] - temp = _amend_myhostname(conf['myhostname'], conf['mydomain']) - if temp is not None: - diagnosis.error('Set $myhostname to %s', temp) - diagnosis.flag('myhostname', temp) - deletion_set.add(conf['myhostname']) - conf['myhostname'] = temp - - # Delete old domain names - deletion_set.discard('localhost') - dest_set.difference_update(deletion_set) - - # Amend $mydestination - temp = _amend_mydestination(dest_set, conf['mydomain'], conf['myhostname'], - diagnosis.error) - if temp is not None: - diagnosis.flag('mydestination', temp) - elif len(deletion_set) > 0: - corrected_value = ', '.join(sorted(dest_set)) - diagnosis.error('Update $mydestination') - diagnosis.flag('mydestination', corrected_value) - - return diagnosis - - -def _amend_mailname(domain): - with open('/etc/mailname', 'r') as fd: - mailname = fd.readline().strip() - - # If mailname is not localhost, refresh it - if mailname != 'localhost': - temp = _change_to_domain_name(mailname, domain, False) - if temp != mailname: - return temp - - return None - - -def _amend_mydomain(conf_value, domain): - temp = _change_to_domain_name(conf_value, domain, False) - if temp != conf_value: - return temp - - return None - - -def _amend_myhostname(conf_value, mydomain): - if conf_value != mydomain: - if not conf_value.endswith('.' + mydomain): - return mydomain - - return None - - -def _amend_mydestination(dest_set, mydomain, myhostname, error): - addition_set = set() - if mydomain not in dest_set: - error('Value of $mydomain is not in $mydestination') - addition_set.add('$mydomain') - addition_set.add('$myhostname') - if myhostname not in dest_set: - error('Value of $myhostname is not in $mydestination') - addition_set.add('$mydomain') - addition_set.add('$myhostname') - if 'localhost' not in dest_set: - error('localhost is not in $mydestination') - addition_set.add('localhost') - - if addition_set: - addition_set.update(dest_set) - return ', '.join(sorted(addition_set)) - - return None - - -def _change_to_domain_name(value, domain, allow_old_fqdn): - # Detect invalid values - if not value or '.' not in value: - return domain - - if not allow_old_fqdn and value != domain: - return domain - else: - return value - - -def fix_postfix_domains(diagnosis): - diagnosis.apply_changes(_apply_domain_changes) - - -def _apply_domain_changes(conf_dict): - for key, value in conf_dict.items(): - if key.startswith('_'): - update = globals()['su_set' + key] - update(value) - - post = {k: v for (k, v) in conf_dict.items() if not k.startswith('_')} - postconf.set_many_unsafe(post) - - -def get_domain_config(): +def get_domains(): """Return the current domain configuration.""" - postconf_keys = [key for key in managed_keys if not key.startswith('_')] - config = postconf.get_many(postconf_keys) - config['_mailname'] = pathlib.Path('/etc/mailname').read_text().strip() - return config + conf = postconf.get_many(['mydomain', 'mydestination']) + domains = set(postconf.parse_maps(conf['mydestination'])) + defaults = {'$myhostname', 'localhost.$mydomain', 'localhost'} + domains.difference_update(defaults) + return {'primary_domain': conf['mydomain'], 'all_domains': domains} -def set_keys(raw): - # Serialize the keys we know - config_dict = {k: v for (k, v) in raw.items() if k in managed_keys} - if not config_dict: - raise ClientError('To update a key, specify a new value') +def set_domains(primary_domain=None): + """Set the primary domain and all the domains for postfix. """ + all_domains = DomainName.list_names() + if not primary_domain: + primary_domain = get_domains()['primary_domain'] + if primary_domain not in all_domains: + primary_domain = config.get_domainname() or list(all_domains)[0] - ipc = b'%s\n' % json.dumps(config_dict).encode('utf8') - if len(ipc) > 4096: - raise ClientError('POST data exceeds max line length') - - try: - superuser_run('email_server', ['domain', 'set_keys'], input=ipc) - except ActionError as e: - stdout = e.args[1] - if not stdout.startswith('ClientError:'): - raise RuntimeError('Action script failure') from e - else: - raise ValidationError(stdout) from e + superuser_run( + 'email_server', + ['domain', 'set_domains', primary_domain, ','.join(all_domains)]) -def action_set_keys(): - try: - _action_set_keys() - except ClientError as e: - print('ClientError:', end=' ') - print(e.args[0]) - sys.exit(EXIT_VALIDATION) +def action_set_domains(primary_domain, all_domains): + """Set the primary domain and all the domains for postfix. """ + all_domains = [_clean_domain(domain) for domain in all_domains.split(',')] + primary_domain = _clean_domain(primary_domain) + + defaults = {'$myhostname', 'localhost.$mydomain', 'localhost'} + all_domains = set(all_domains).union(defaults) + conf = { + 'myhostname': primary_domain, + 'mydomain': primary_domain, + 'mydestination': ', '.join(all_domains) + } + postconf.set_many(conf) + pathlib.Path('/etc/mailname').write_text(primary_domain + '\n') + subprocess.run(['systemctl', 'try-reload-or-restart', 'postfix'], + check=True) -def _action_set_keys(): - line = _stdin_readline() - if not line.startswith('{') or not line.endswith('}\n'): - raise ClientError('Bad stdin data') - - clean_dict = {} - # Input validation - for key, value in json.loads(line).items(): - if key not in managed_keys: - raise ClientError('Key not allowed: %r' % key) - if not isinstance(value, str): - raise ClientError('Bad value type from key: %r' % key) - clean_function = globals()['clean_' + key.lstrip('_')] - clean_dict[key] = clean_function(value) - - # Apply changes (postconf) - postconf_dict = dict( - filter(lambda kv: not kv[0].startswith('_'), clean_dict.items())) - postconf.set_many(postconf_dict) - - # Apply changes (special) - for key, value in clean_dict.items(): - if key.startswith('_'): - set_function = globals()['su_set' + key] - set_function(value) - - # Important: reload postfix after acquiring lock - with postconf.mutex.lock_all(): - # systemctl reload postfix - args = ['systemctl', 'reload', 'postfix'] - completed = subprocess.run(args, capture_output=True, check=False) - if completed.returncode != 0: - interproc.log_subprocess(completed) - raise OSError('Could not reload postfix') - - -def clean_mailname(mailname): - mailname = mailname.lower().strip() - if not re.match('^[a-z0-9-\\.]+$', mailname): - raise ClientError('Invalid character in host/domain/mail name') - # XXX: need more verification - return mailname - - -def clean_mydomain(raw): - return clean_mailname(raw) - - -def clean_myhostname(raw): - return clean_mailname(raw) - - -def clean_mydestination(raw): - ascii_code = (ord(c) for c in raw) - valid = all(32 <= a <= 126 for a in ascii_code) - if not valid: - raise ClientError('Bad input for $mydestination') - else: - return raw - - -def su_set_mailname(cleaned): - with interproc.atomically_rewrite('/etc/mailname') as fd: - fd.write(cleaned) - fd.write('\n') - - -def _stdin_readline(): - membuf = io.BytesIO() - bytes_saved = 0 - fd = sys.stdin.buffer - time_started = time.monotonic() - - # Reading stdin with timeout - # https://stackoverflow.com/a/21429655 - os.set_blocking(fd.fileno(), False) - - while bytes_saved < 4096: - rlist, wlist, xlist = select.select([fd], [], [], 1.0) - if fd in rlist: - data = os.read(fd.fileno(), 4096) - membuf.write(data) - bytes_saved += len(data) - if len(data) == 0 or b'\n' in data: # end of file or line - break - if time.monotonic() - time_started > 5: - raise TimeoutError() - - # Read a line - membuf.seek(0) - line = membuf.readline() - if not line.endswith(b'\n'): - raise ClientError('Line was too long') - - try: - return line.decode('utf8') - except ValueError as e: - raise ClientError('UTF-8 decode failed') from e +def _clean_domain(domain): + domain = domain.lower().strip() + assert re.match('^[a-z0-9-\\.]+$', domain) + return domain diff --git a/plinth/modules/email_server/forms.py b/plinth/modules/email_server/forms.py index 854f47685..53fac7788 100644 --- a/plinth/modules/email_server/forms.py +++ b/plinth/modules/email_server/forms.py @@ -9,6 +9,8 @@ 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-\.]+$', @@ -25,27 +27,20 @@ class EmailServerForm(forms.Form): super().__init__(*args, **kwargs) -class DomainsForm(forms.Form): - _mailname = forms.CharField(required=True, strip=True, - validators=[domain_validator]) - mydomain = forms.CharField(required=True, strip=True, - validators=[domain_validator]) - myhostname = forms.CharField(required=True, strip=True, - validators=[domain_validator]) - mydestination = forms.CharField(required=True, strip=True, - validators=[destination_validator]) +def _get_domain_choices(): + """Double domain entries for inclusion in the choice field.""" + return ((domain.name, domain.name) for domain in DomainName.list()) - def clean(self): - """Convert values to lower case.""" - data = self.cleaned_data - if '_mailname' in data: - data['_mailname'] = data['_mailname'].lower() - if 'myhostname' in data: - data['myhostname'] = data['myhostname'].lower() - - if 'mydestination' in data: - data['mydestination'] = data['mydestination'].lower() +class DomainForm(forms.Form): + primary_domain = forms.ChoiceField( + choices=_get_domain_choices, + label=_('Primary domain'), + help_text=_( + 'Mails are received for all domains configured in the system. ' + 'Among these, select the most important one.'), + required=True, + ) class AliasCreateForm(forms.Form): diff --git a/plinth/modules/email_server/templates/email_server.html b/plinth/modules/email_server/templates/email_server.html index 9635bbca3..c963e1cff 100644 --- a/plinth/modules/email_server/templates/email_server.html +++ b/plinth/modules/email_server/templates/email_server.html @@ -11,10 +11,6 @@ {% endblock %} {% block subsubmenu %} - - {% trans "Domains" %} - {% trans "Manage Spam" %} diff --git a/plinth/modules/email_server/urls.py b/plinth/modules/email_server/urls.py index 2109efd42..cd56f03c8 100644 --- a/plinth/modules/email_server/urls.py +++ b/plinth/modules/email_server/urls.py @@ -8,8 +8,6 @@ from . import views urlpatterns = [ path('apps/email_server/', views.EmailServerView.as_view(), name='index'), - path('apps/email_server/domains', views.DomainsView.as_view(), - name='domains'), path('apps/email_server/my_aliases', non_admin_view(views.AliasView.as_view()), name='aliases'), path('apps/email_server/config.xml', public(views.XmlView.as_view())), diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index 98aa33b89..f1ad566c6 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -44,16 +44,25 @@ class ExceptionsMixin(View): class EmailServerView(ExceptionsMixin, AppView): """Server configuration page""" app_id = 'email_server' + form_class = forms.DomainForm template_name = 'email_server.html' - audit_modules = ('domain', 'tls', 'rcube') + audit_modules = ('tls', 'rcube') + + def get_initial(self): + """Return the initial values to populate in the form.""" + initial = super().get_initial() + domains = audit.domain.get_domains() + 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 = super().get_context_data(*args, **kwargs) context['related_diagnostics'] = dlist return context @@ -75,12 +84,29 @@ class EmailServerView(ExceptionsMixin, AppView): def post(self, request): repair_field = request.POST.get('repair') - module_name, sep, action_name = repair_field.partition('.') - if not sep or module_name not in self.audit_modules: - return HttpResponseBadRequest('Bad post data') + 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) + 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 + new_data = form.cleaned_data + if old_data['primary_domain'] != new_data['primary_domain']: + try: + 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.')) + + return super().form_valid(form) def _repair(self, module_name, action_name): """Repair the configuration of the given audit module.""" @@ -180,47 +206,6 @@ class AliasView(FormView): aliases_module.put(username, form.cleaned_data['alias']) -class DomainsView(FormView): - """View to allow editing domain related settings.""" - template_name = 'form.html' - form_class = forms.DomainsForm - prefix = 'domain' - success_url = reverse_lazy('email_server:domains') - - def get_initial(self): - """Return the initial values to populate in the form.""" - initial = super().get_initial() - initial.update(audit.domain.get_domain_config()) - return initial - - def get_context_data(self, **kwargs): - """Add the title to the document.""" - context = super().get_context_data(**kwargs) - context['title'] = _('Domains') - return context - - def form_valid(self, form): - """Update the settings for changed domain values.""" - old_data = form.initial - new_data = form.cleaned_data - config = {} - for key in form.initial: - if old_data[key] != new_data[key]: - config[key] = new_data[key] - - if config: - try: - audit.domain.set_keys(config) - messages.success(self.request, _('Configuration updated')) - except Exception: - messages.success(self.request, - _('Error updating configuration')) - else: - messages.info(self.request, _('Setting unchanged')) - - return super().form_valid(form) - - class XmlView(TemplateView): template_name = 'email_autoconfig.xml' diff --git a/plinth/modules/firewall/__init__.py b/plinth/modules/firewall/__init__.py index 6bc78f56f..dacb29e57 100644 --- a/plinth/modules/firewall/__init__.py +++ b/plinth/modules/firewall/__init__.py @@ -21,14 +21,6 @@ from . import manifest gio = import_from_gi('Gio', '2.0') glib = import_from_gi('GLib', '2.0') -version = 2 - -is_essential = True - -managed_packages = ['firewalld', 'nftables'] - -managed_services = ['firewalld'] - _description = [ format_lazy( _('Firewall is a security system that controls the incoming and ' @@ -58,14 +50,16 @@ class FirewallApp(app_module.App): app_id = 'firewall' + _version = 2 + can_be_disabled = False def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, name=_('Firewall'), + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Firewall'), icon='fa-shield', description=_description, manual_page='Firewall') self.add(info) @@ -74,10 +68,10 @@ class FirewallApp(app_module.App): 'firewall:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-firewall', managed_packages) + packages = Packages('packages-firewall', ['firewalld', 'nftables']) self.add(packages) - daemon = Daemon('daemon-firewall', managed_services[0]) + daemon = Daemon('daemon-firewall', 'firewalld') self.add(daemon) backup_restore = BackupRestore('backup-restore-firewall', @@ -98,7 +92,7 @@ def _run_setup(): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) _run_setup() @@ -107,9 +101,9 @@ def force_upgrade(helper, packages): if 'firewalld' not in packages: return False - # firewalld 0.6.x -> 0.7.x, 0.6.x -> 0.8.x, 0.7.x -> 0.8.x + # firewalld 0.6.x -> 0.7.x, 0.6.x -> 0.8.x, 0.7.x -> 0.8.x, 0.9.x -> 1.0.x package = packages['firewalld'] - if Version(package['current_version']) >= Version('0.9') or \ + if Version(package['current_version']) >= Version('1.0') or \ Version(package['new_version']) < Version('0.7'): return False diff --git a/plinth/modules/first_boot/__init__.py b/plinth/modules/first_boot/__init__.py index e90729193..2419dea62 100644 --- a/plinth/modules/first_boot/__init__.py +++ b/plinth/modules/first_boot/__init__.py @@ -5,16 +5,14 @@ FreedomBox app for first boot wizard. import operator import os +import sys from django.urls import reverse -from plinth import app, cfg, module_loader +from plinth import app as app_module +from plinth import cfg from plinth.signals import post_setup -version = 1 - -is_essential = True - first_boot_steps = [ { 'id': 'firstboot_welcome', @@ -34,14 +32,23 @@ _all_first_boot_steps = None _is_completed = None -class FirstBootApp(app.App): +class FirstBootApp(app_module.App): """FreedomBox app for First Boot.""" app_id = 'first_boot' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() + + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True) + self.add(info) + + def post_init(self): + """Perform post initialization operations.""" post_setup.connect(_clear_first_boot_steps) @@ -71,11 +78,11 @@ def _get_steps(): return _all_first_boot_steps steps = [] - modules = module_loader.loaded_modules - for module_object in modules.values(): - if getattr(module_object, 'first_boot_steps', None): - if module_object.setup_helper.get_state() != 'needs-setup': - steps.extend(module_object.first_boot_steps) + for app in app_module.App.list(): + module = sys.modules[app.__module__] + if getattr(module, 'first_boot_steps', None): + if not app.needs_setup(): + steps.extend(module.first_boot_steps) _all_first_boot_steps = sorted(steps, key=operator.itemgetter('order')) return _all_first_boot_steps diff --git a/plinth/modules/gitweb/__init__.py b/plinth/modules/gitweb/__init__.py index 2fdc29ee7..bd0f6bf4a 100644 --- a/plinth/modules/gitweb/__init__.py +++ b/plinth/modules/gitweb/__init__.py @@ -22,10 +22,6 @@ from . import manifest from .forms import is_repo_url from .manifest import GIT_REPO_PATH -version = 1 - -managed_packages = ['gitweb', 'highlight'] - _description = [ _('Git is a distributed version-control system for tracking changes in ' 'source code during software development. Gitweb provides a web ' @@ -46,6 +42,8 @@ class GitwebApp(app_module.App): app_id = 'gitweb' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() @@ -54,7 +52,7 @@ class GitwebApp(app_module.App): self.repos = [] - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Gitweb'), icon_filename='gitweb', short_description=_('Simple Git Hosting'), description=_description, manual_page='GitWeb', @@ -74,7 +72,7 @@ class GitwebApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) - packages = Packages('packages-gitweb', managed_packages) + packages = Packages('packages-gitweb', ['gitweb', 'highlight']) self.add(packages) firewall = Firewall('firewall-gitweb', info.name, @@ -99,8 +97,7 @@ class GitwebApp(app_module.App): def post_init(self): """Perform post initialization operations.""" - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup': + if not self.needs_setup(): self.update_service_access() def set_shortcut_login_required(self, login_required): @@ -161,7 +158,7 @@ class GitwebBackupRestore(BackupRestore): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'gitweb', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/help/__init__.py b/plinth/modules/help/__init__.py index fa0360537..2d748a7de 100644 --- a/plinth/modules/help/__init__.py +++ b/plinth/modules/help/__init__.py @@ -11,9 +11,6 @@ from django.utils.translation import pgettext_lazy from plinth import app as app_module from plinth import cfg, menu, web_server -version = 1 - -is_essential = True app = None @@ -22,12 +19,14 @@ class HelpApp(app_module.App): app_id = 'help' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential) + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True) self.add(info) menu_item = menu.Menu('menu-help', _('Documentation'), None, 'fa-book', diff --git a/plinth/modules/i2p/__init__.py b/plinth/modules/i2p/__init__.py index c5e190f20..7c70dfa85 100644 --- a/plinth/modules/i2p/__init__.py +++ b/plinth/modules/i2p/__init__.py @@ -18,14 +18,6 @@ from plinth.package import Packages from . import manifest -version = 1 - -service_name = 'i2p' - -managed_services = [service_name] - -managed_packages = ['i2p'] - _description = [ _('The Invisible Internet Project is an anonymous network layer intended ' 'to protect communication from censorship and surveillance. I2P ' @@ -51,6 +43,8 @@ class I2PApp(app_module.App): app_id = 'i2p' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() @@ -58,7 +52,7 @@ class I2PApp(app_module.App): groups = {'i2p': _('Manage I2P application')} info = app_module.Info( - app_id=self.app_id, version=version, name=_('I2P'), + app_id=self.app_id, version=self._version, name=_('I2P'), icon_filename='i2p', short_description=_('Anonymity Network'), description=_description, manual_page='I2P', clients=manifest.clients, @@ -78,7 +72,7 @@ class I2PApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) - packages = Packages('packages-i2p', managed_packages) + packages = Packages('packages-i2p', ['i2p']) self.add(packages) firewall = Firewall('firewall-i2p-web', info.name, @@ -94,8 +88,7 @@ class I2PApp(app_module.App): urls=['https://{host}/i2p/']) self.add(webserver) - daemon = Daemon('daemon-i2p', managed_services[0], - listen_ports=[(7657, 'tcp6')]) + daemon = Daemon('daemon-i2p', 'i2p', listen_ports=[(7657, 'tcp6')]) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-i2p', @@ -108,7 +101,7 @@ class I2PApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.disable) # Add favorites to the configuration diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 6948b660d..a38e85567 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -18,13 +18,6 @@ from plinth.utils import format_lazy from . import manifest -version = 1 - -managed_packages = [ - 'ikiwiki', 'libdigest-sha-perl', 'libxml-writer-perl', 'xapian-omega', - 'libsearch-xapian-perl', 'libimage-magick-perl' -] - _description = [ _('ikiwiki is a simple wiki and blog application. It supports ' 'several lightweight markup languages, including Markdown, and ' @@ -46,11 +39,13 @@ class IkiwikiApp(app_module.App): app_id = 'ikiwiki' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('ikiwiki'), icon_filename='ikiwiki', short_description=_('Wiki and Blog'), description=_description, manual_page='Ikiwiki', @@ -65,7 +60,10 @@ class IkiwikiApp(app_module.App): self.refresh_sites() - packages = Packages('packages-ikiwiki', managed_packages) + packages = Packages('packages-ikiwiki', [ + 'ikiwiki', 'libdigest-sha-perl', 'libxml-writer-perl', + 'xapian-omega', 'libsearch-xapian-perl', 'libimage-magick-perl' + ]) self.add(packages) firewall = Firewall('firewall-ikiwiki', info.name, @@ -113,6 +111,6 @@ class IkiwikiApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'ikiwiki', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index be3ef58e8..9a9a8bd18 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -17,12 +17,6 @@ from plinth.utils import format_lazy from . import manifest -version = 3 - -managed_services = ['infinoted'] - -managed_packages = ['infinoted'] - _description = [ _('infinoted is a server for Gobby, a collaborative text editor.'), format_lazy( @@ -40,11 +34,13 @@ class InfinotedApp(app_module.App): app_id = 'infinoted' + _version = 3 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('infinoted'), icon_filename='infinoted', short_description=_('Gobby Server'), description=_description, @@ -65,14 +61,14 @@ class InfinotedApp(app_module.App): clients=info.clients, login_required=False) self.add(shortcut) - packages = Packages('packages-infinoted', managed_packages) + packages = Packages('packages-infinoted', ['infinoted']) self.add(packages) firewall = Firewall('firewall-infinoted', info.name, ports=['infinoted-plinth'], is_external=True) self.add(firewall) - daemon = Daemon('daemon-infinoted', managed_services[0], + daemon = Daemon('daemon-infinoted', 'infinoted', listen_ports=[(6523, 'tcp4'), (6523, 'tcp6')]) self.add(daemon) @@ -83,6 +79,6 @@ class InfinotedApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'infinoted', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/jsxc/__init__.py b/plinth/modules/jsxc/__init__.py index 25200be7d..059c29772 100644 --- a/plinth/modules/jsxc/__init__.py +++ b/plinth/modules/jsxc/__init__.py @@ -17,10 +17,6 @@ from plinth.web_server import StaticFiles from . import manifest -version = 1 - -managed_packages = ['libjs-jsxc'] - _description = [ _('JSXC is a web client for XMPP. Typically it is used with an XMPP ' 'server running locally.'), @@ -36,13 +32,15 @@ class JSXCApp(app_module.App): app_id = 'jsxc' + _version = 1 + can_be_disabled = False def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('JSXC'), icon_filename='jsxc', short_description=_('Chat Client'), description=_description, manual_page='JSXC', @@ -61,7 +59,7 @@ class JSXCApp(app_module.App): clients=info.clients) self.add(shortcut) - packages = Packages('packages-jsxc', managed_packages) + packages = Packages('packages-jsxc', ['libjs-jsxc']) self.add(packages) firewall = Firewall('firewall-jsxc', info.name, @@ -85,5 +83,5 @@ class JSXCApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.enable) diff --git a/plinth/modules/letsencrypt/__init__.py b/plinth/modules/letsencrypt/__init__.py index 2763a5a51..e01141c6e 100644 --- a/plinth/modules/letsencrypt/__init__.py +++ b/plinth/modules/letsencrypt/__init__.py @@ -18,19 +18,11 @@ from plinth.modules.apache.components import diagnose_url from plinth.modules.backups.components import BackupRestore from plinth.modules.names.components import DomainType from plinth.package import Packages -from plinth.signals import domain_added, domain_removed, post_module_loading +from plinth.signals import domain_added, domain_removed, post_app_loading from plinth.utils import format_lazy from . import components, manifest -version = 3 - -is_essential = True - -depends = ['names'] - -managed_packages = ['certbot'] - _description = [ format_lazy( _('A digital certificate allows users of a web service to verify the ' @@ -58,12 +50,14 @@ class LetsEncryptApp(app_module.App): app_id = 'letsencrypt' + _version = 3 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, depends=depends, + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, depends=['names'], name=_('Let\'s Encrypt'), icon='fa-lock', short_description=_('Certificates'), description=_description, @@ -76,7 +70,7 @@ class LetsEncryptApp(app_module.App): 'letsencrypt:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-letsencrypt', managed_packages) + packages = Packages('packages-letsencrypt', ['certbot']) self.add(packages) backup_restore = BackupRestore('backup-restore-letsencrypt', @@ -89,7 +83,7 @@ class LetsEncryptApp(app_module.App): domain_added.connect(on_domain_added) domain_removed.connect(on_domain_removed) - post_module_loading.connect(_certificate_handle_modified) + post_app_loading.connect(_certificate_handle_modified) def diagnose(self): """Run diagnostics and return the results.""" @@ -108,7 +102,7 @@ class LetsEncryptApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) actions.superuser_run( 'letsencrypt', ['setup', '--old-version', str(old_version)]) @@ -134,9 +128,19 @@ def certificate_reobtain(domain): actions.superuser_run('letsencrypt', ['obtain', '--domain', domain]) -def certificate_revoke(domain): - """Revoke a certificate for a domain and notify handlers.""" - actions.superuser_run('letsencrypt', ['revoke', '--domain', domain]) +def certificate_revoke(domain, really_revoke=True): + """Revoke a certificate for a domain and notify handlers. + + Revoke a certificate unless really requested to. Otherwise, simply trigger + actions as if the certificate has been revoked. On actions such as domain + removed, behave as if certificate has been revoked but don't actually + revoke the certificate. Domains could be re-added later and certificates + could be reused. Certificates are precious (due to a rate limit for + obtaining certificates on the Let's Encrypt servers). + """ + if really_revoke: + actions.superuser_run('letsencrypt', ['revoke', '--domain', domain]) + components.on_certificate_event('revoked', [domain], None) @@ -176,7 +180,7 @@ def on_domain_removed(sender, domain_type, name='', **kwargs): try: if name: logger.info('Revoking certificate for %s', name) - certificate_revoke(name) + certificate_revoke(name, really_revoke=False) return True except ActionError as exception: logger.warning('Failed to revoke certificate for %s: %s', name, diff --git a/plinth/modules/letsencrypt/tests/test_domain_name_changes.py b/plinth/modules/letsencrypt/tests/test_domain_name_changes.py index ca73deba2..2d9f6bdd6 100644 --- a/plinth/modules/letsencrypt/tests/test_domain_name_changes.py +++ b/plinth/modules/letsencrypt/tests/test_domain_name_changes.py @@ -69,6 +69,7 @@ def test_remove_domain(certificate_revoke, domain, revoke, result): """Test removing a domain that can certificates.""" assert result == on_domain_removed('test', 'domain-type-test', domain) if revoke: - certificate_revoke.assert_has_calls([call(domain)]) + certificate_revoke.assert_has_calls( + [call(domain, really_revoke=False)]) else: certificate_revoke.assert_not_called() diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index 83a7aa952..55771cd1e 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -5,7 +5,6 @@ FreedomBox app to configure matrix-synapse server. import logging import os -import pathlib from typing import List from django.urls import reverse_lazy @@ -26,14 +25,6 @@ from plinth.utils import format_lazy, is_non_empty_file from . import manifest -version = 7 - -managed_services = ['matrix-synapse'] - -managed_packages = ['matrix-synapse', 'matrix-synapse-ldap3'] - -managed_paths = [pathlib.Path('/etc/matrix-synapse/')] - _description = [ _('Matrix is an new ' 'ecosystem for open, federated instant messaging and VoIP. Synapse is a ' @@ -48,8 +39,6 @@ _description = [ 'an external server.'), coturn_url=reverse_lazy('coturn:index')) ] -depends = ['coturn'] - logger = logging.getLogger(__name__) CONF_DIR = "/etc/matrix-synapse/conf.d/" @@ -70,15 +59,17 @@ class MatrixSynapseApp(app_module.App): app_id = 'matrixsynapse' + _version = 7 + def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( - app_id=self.app_id, version=version, name=_('Matrix Synapse'), - icon_filename='matrixsynapse', short_description=_('Chat Server'), - description=_description, manual_page='MatrixSynapse', - clients=manifest.clients) + app_id=self.app_id, version=self._version, depends=['coturn'], + name=_('Matrix Synapse'), icon_filename='matrixsynapse', + short_description=_('Chat Server'), description=_description, + manual_page='MatrixSynapse', clients=manifest.clients) self.add(info) menu_item = menu.Menu('menu-matrixsynapse', info.name, @@ -94,7 +85,8 @@ class MatrixSynapseApp(app_module.App): clients=info.clients, login_required=True) self.add(shortcut) - packages = Packages('packages-matrixsynapse', managed_packages) + packages = Packages('packages-matrixsynapse', + ['matrix-synapse', 'matrix-synapse-ldap3']) self.add(packages) firewall = Firewall('firewall-matrixsynapse', info.name, @@ -108,14 +100,14 @@ class MatrixSynapseApp(app_module.App): letsencrypt = LetsEncrypt( 'letsencrypt-matrixsynapse', domains=get_domains, - daemons=[managed_services[0]], should_copy_certificates=True, + daemons=['matrix-synapse'], should_copy_certificates=True, private_key_path='/etc/matrix-synapse/homeserver.tls.key', certificate_path='/etc/matrix-synapse/homeserver.tls.crt', user_owner='matrix-synapse', group_owner='nogroup', managing_app='matrixsynapse') self.add(letsencrypt) - daemon = Daemon('daemon-matrixsynapse', managed_services[0], + daemon = Daemon('daemon-matrixsynapse', 'matrix-synapse', listen_ports=[(8008, 'tcp4'), (8448, 'tcp4')]) self.add(daemon) @@ -137,7 +129,7 @@ class MatrixSynapseTurnConsumer(TurnConsumer): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) if old_version and old_version < 6: helper.call('post', upgrade, helper) else: @@ -232,8 +224,7 @@ def get_certificate_status(): def update_turn_configuration(config: TurnConfiguration, managed=True, force=False): """Update the STUN/TURN server configuration.""" - setup_helper = globals()['setup_helper'] - if not force and setup_helper.get_state() == 'needs-setup': + if not force and app.needs_setup(): return params = ['configure-turn'] diff --git a/plinth/modules/matrixsynapse/tests/test_turn_config.py b/plinth/modules/matrixsynapse/tests/test_turn_config.py index 2a9d75c10..28f5bb834 100644 --- a/plinth/modules/matrixsynapse/tests/test_turn_config.py +++ b/plinth/modules/matrixsynapse/tests/test_turn_config.py @@ -3,7 +3,7 @@ Test module for Matrix Synapse STUN/TURN configuration. """ -from unittest.mock import MagicMock, patch +from unittest.mock import patch import pytest @@ -45,15 +45,14 @@ def fixture_test_configuration(call_action, managed_turn_conf_file, Overrides TURN configuration files and patches actions.superuser_run with the fixture call_action """ - with patch('plinth.modules.matrixsynapse.TURN_CONF_PATH', - managed_turn_conf_file), \ - patch('plinth.modules.matrixsynapse.OVERRIDDEN_TURN_CONF_PATH', - overridden_turn_conf_file), \ - patch('plinth.modules.matrixsynapse.is_setup', return_value=True), \ - patch('plinth.actions.superuser_run', call_action): - helper = MagicMock() - helper.get_state.return_value = 'up-to-date' - matrixsynapse.setup_helper = helper + with (patch('plinth.modules.matrixsynapse.TURN_CONF_PATH', + managed_turn_conf_file), + patch('plinth.modules.matrixsynapse.OVERRIDDEN_TURN_CONF_PATH', + overridden_turn_conf_file), + patch('plinth.modules.matrixsynapse.is_setup', return_value=True), + patch('plinth.actions.superuser_run', call_action), + patch('plinth.modules.matrixsynapse.app') as app): + app.needs_setup.return_value = False yield diff --git a/plinth/modules/mediawiki/__init__.py b/plinth/modules/mediawiki/__init__.py index 23f1d073a..5dd860795 100644 --- a/plinth/modules/mediawiki/__init__.py +++ b/plinth/modules/mediawiki/__init__.py @@ -19,12 +19,6 @@ from plinth.package import Packages from . import manifest -version = 10 - -managed_packages = ['mediawiki', 'imagemagick', 'php-sqlite3'] - -managed_services = ['mediawiki-jobrunner'] - _description = [ _('MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia ' 'projects. A wiki engine is a program for creating a collaboratively ' @@ -51,12 +45,14 @@ class MediaWikiApp(app_module.App): app_id = 'mediawiki' + _version = 10 + def __init__(self): """Create components for the app.""" super().__init__() self._private_mode = True - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('MediaWiki'), icon_filename='mediawiki', short_description=_('Wiki'), description=_description, @@ -75,7 +71,8 @@ class MediaWikiApp(app_module.App): clients=info.clients, login_required=True) self.add(shortcut) - packages = Packages('packages-mediawiki', managed_packages) + packages = Packages('packages-mediawiki', + ['mediawiki', 'imagemagick', 'php-sqlite3']) self.add(packages) firewall = Firewall('firewall-mediawiki', info.name, @@ -90,7 +87,7 @@ class MediaWikiApp(app_module.App): 'mediawiki-freedombox') self.add(webserver) - daemon = Daemon('daemon-mediawiki', managed_services[0]) + daemon = Daemon('daemon-mediawiki', 'mediawiki-jobrunner') self.add(daemon) backup_restore = BackupRestore('backup-restore-mediawiki', @@ -109,7 +106,7 @@ class Shortcut(frontpage.Shortcut): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'mediawiki', ['setup']) helper.call('post', actions.superuser_run, 'mediawiki', ['update']) helper.call('post', app.enable) diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index 3ecfc4e9a..7aa1e032d 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -18,11 +18,7 @@ from plinth.utils import format_lazy from . import manifest -version = 2 - -managed_services = ['minetest-server'] - -mods = [ +_mods = [ 'minetest-mod-character-creator', 'minetest-mod-craftguide', 'minetest-mod-infinite-chest', 'minetest-mod-lucky-block', 'minetest-mod-maidroid', 'minetest-mod-mesecons', @@ -33,8 +29,6 @@ mods = [ 'minetest-mod-unifieddyes', 'minetest-mod-worldedit' ] -managed_packages = ['minetest-server'] + mods - _description = [ format_lazy( _('Minetest is a multiplayer infinite-world block sandbox. This ' @@ -55,12 +49,14 @@ class MinetestApp(app_module.App): app_id = 'minetest' + _version = 2 + def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( - app_id=self.app_id, version=version, name=_('Minetest'), + app_id=self.app_id, version=self._version, name=_('Minetest'), icon_filename='minetest', short_description=_('Block Sandbox'), description=_description, manual_page='Minetest', clients=manifest.clients, @@ -80,14 +76,14 @@ class MinetestApp(app_module.App): login_required=False) self.add(shortcut) - packages = Packages('packages-minetest', managed_packages) + packages = Packages('packages-minetest', ['minetest-server'] + _mods) self.add(packages) firewall = Firewall('firewall-minetest', info.name, ports=['minetest-plinth'], is_external=True) self.add(firewall) - daemon = Daemon('daemon-minetest', managed_services[0], + daemon = Daemon('daemon-minetest', 'minetest-server', listen_ports=[(30000, 'udp4')]) self.add(daemon) @@ -103,7 +99,7 @@ class MinetestApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.enable) diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py index 2bd9a518b..f4781d236 100644 --- a/plinth/modules/minidlna/__init__.py +++ b/plinth/modules/minidlna/__init__.py @@ -16,12 +16,6 @@ from plinth.utils import Version from . import manifest -version = 2 - -managed_packages = ['minidlna'] - -managed_services = ['minidlna'] - _description = [ _('MiniDLNA is a simple media server software, with the aim of being ' 'fully compliant with DLNA/UPnP-AV clients. ' @@ -40,13 +34,15 @@ class MiniDLNAApp(app_module.App): """Freedombox app managing miniDlna""" app_id = 'minidlna' + _version = 2 + def __init__(self): """Initialize the app components""" super().__init__() groups = {'minidlna': _('Media streaming server')} - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('MiniDLNA'), icon_filename='minidlna', short_description=_('Simple Media Server'), description=_description, @@ -72,7 +68,7 @@ class MiniDLNAApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) - packages = Packages('packages-minidlna', managed_packages) + packages = Packages('packages-minidlna', ['minidlna']) self.add(packages) firewall = Firewall('firewall-minidlna', info.name, ports=['minidlna'], @@ -83,7 +79,7 @@ class MiniDLNAApp(app_module.App): urls=['http://localhost:8200/']) self.add(webserver) - daemon = Daemon('daemon-minidlna', managed_services[0]) + daemon = Daemon('daemon-minidlna', 'minidlna') self.add(daemon) backup_restore = BackupRestore('backup-restore-minidlna', @@ -97,7 +93,7 @@ class MiniDLNAApp(app_module.App): def setup(helper, old_version=None): """Install and configure the package""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'minidlna', ['setup']) if not old_version: helper.call('post', app.enable) diff --git a/plinth/modules/mldonkey/__init__.py b/plinth/modules/mldonkey/__init__.py index 088132b63..56801ed32 100644 --- a/plinth/modules/mldonkey/__init__.py +++ b/plinth/modules/mldonkey/__init__.py @@ -19,12 +19,6 @@ from plinth.utils import format_lazy from . import manifest -version = 2 - -managed_services = ['mldonkey-server'] - -managed_packages = ['mldonkey-server'] - _description = [ _('MLDonkey is a peer-to-peer file sharing application used to exchange ' 'large files. It can participate in multiple peer-to-peer networks ' @@ -48,6 +42,10 @@ class MLDonkeyApp(app_module.App): app_id = 'mldonkey' + _version = 2 + + DAEMON = 'mldonkey-server' + def __init__(self): """Create components for the app.""" super().__init__() @@ -55,7 +53,7 @@ class MLDonkeyApp(app_module.App): groups = {'ed2k': _('Download files using eDonkey applications')} info = app_module.Info( - app_id=self.app_id, version=version, name=_('MLDonkey'), + 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', @@ -74,7 +72,7 @@ class MLDonkeyApp(app_module.App): allowed_groups=list(groups)) self.add(shortcuts) - packages = Packages('packages-mldonkey', managed_packages) + packages = Packages('packages-mldonkey', ['mldonkey-server']) self.add(packages) firewall = Firewall('firewall-mldonkey', info.name, @@ -85,7 +83,7 @@ class MLDonkeyApp(app_module.App): urls=['https://{host}/mldonkey/']) self.add(webserver) - daemon = Daemon('daemon-mldonkey', managed_services[0], + daemon = Daemon('daemon-mldonkey', self.DAEMON, listen_ports=[(4080, 'tcp4')]) self.add(daemon) @@ -102,8 +100,8 @@ class MLDonkeyApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'mldonkey', ['pre-install']) - helper.install(managed_packages) + app.setup(old_version) if not old_version: helper.call('post', app.enable) - add_user_to_share_group(_SYSTEM_USER, managed_services[0]) + add_user_to_share_group(_SYSTEM_USER, MLDonkeyApp.DAEMON) diff --git a/plinth/modules/monkeysphere/__init__.py b/plinth/modules/monkeysphere/__init__.py index 1e10ddb45..c6aea2286 100644 --- a/plinth/modules/monkeysphere/__init__.py +++ b/plinth/modules/monkeysphere/__init__.py @@ -13,10 +13,6 @@ from plinth.package import Packages from . import manifest -version = 1 - -managed_packages = ['monkeysphere'] - _description = [ _('With Monkeysphere, an OpenPGP key can be generated for each configured ' 'domain serving SSH. The OpenPGP public key can then be uploaded to the ' @@ -44,11 +40,13 @@ class MonkeysphereApp(app_module.App): app_id = 'monkeysphere' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Monkeysphere'), icon='fa-certificate', description=_description, manual_page='Monkeysphere') @@ -59,7 +57,7 @@ class MonkeysphereApp(app_module.App): advanced=True) self.add(menu_item) - packages = Packages('packages-monkeysphere', managed_packages) + packages = Packages('packages-monkeysphere', ['monkeysphere']) self.add(packages) users_and_groups = UsersAndGroups('users-and-groups-monkeysphere', @@ -73,4 +71,4 @@ class MonkeysphereApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index c33912af6..0b06d15d1 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -22,14 +22,6 @@ from plinth.utils import Version from . import manifest -version = 2 - -managed_services = ['mumble-server'] - -managed_packages = ['mumble-server'] - -managed_paths = [pathlib.Path('/var/lib/mumble-server')] - _description = [ _('Mumble is an open source, low-latency, encrypted, high quality ' 'voice chat software.'), @@ -46,12 +38,14 @@ class MumbleApp(app_module.App): app_id = 'mumble' + _version = 2 + def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( - app_id=self.app_id, version=version, name=_('Mumble'), + app_id=self.app_id, version=self._version, name=_('Mumble'), icon_filename='mumble', short_description=_('Voice Chat'), description=_description, manual_page='Mumble', clients=manifest.clients, @@ -69,7 +63,7 @@ class MumbleApp(app_module.App): configure_url=reverse_lazy('mumble:index'), clients=info.clients) self.add(shortcut) - packages = Packages('packages-mumble', managed_packages) + packages = Packages('packages-mumble', ['mumble-server']) self.add(packages) firewall = Firewall('firewall-mumble', info.name, @@ -78,7 +72,7 @@ class MumbleApp(app_module.App): letsencrypt = LetsEncrypt( 'letsencrypt-mumble', domains=get_domains, - daemons=managed_services, should_copy_certificates=True, + daemons=['mumble-server'], should_copy_certificates=True, private_key_path='/var/lib/mumble-server/privkey.pem', certificate_path='/var/lib/mumble-server/fullchain.pem', user_owner='mumble-server', group_owner='mumble-server', @@ -86,9 +80,10 @@ class MumbleApp(app_module.App): self.add(letsencrypt) daemon = Daemon( - 'daemon-mumble', managed_services[0], - listen_ports=[(64738, 'tcp4'), (64738, 'tcp6'), (64738, 'udp4'), - (64738, 'udp6')]) + 'daemon-mumble', 'mumble-server', listen_ports=[(64738, 'tcp4'), + (64738, 'tcp6'), + (64738, 'udp4'), + (64738, 'udp6')]) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-mumble', @@ -102,7 +97,7 @@ class MumbleApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'mumble', ['setup']) if not old_version: helper.call('post', app.enable) diff --git a/plinth/modules/names/__init__.py b/plinth/modules/names/__init__.py index 7ca071ceb..a3f8162df 100644 --- a/plinth/modules/names/__init__.py +++ b/plinth/modules/names/__init__.py @@ -15,10 +15,6 @@ from plinth.utils import format_lazy from . import components, manifest -version = 1 - -is_essential = True - logger = logging.getLogger(__name__) _description = [ @@ -38,13 +34,14 @@ class NamesApp(app_module.App): app_id = 'names' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, - name=_('Name Services'), icon='fa-tags', - description=_description, + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Name Services'), + icon='fa-tags', description=_description, manual_page='NameServices') self.add(info) diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index 32d90097f..83c1d52f7 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -14,12 +14,6 @@ from plinth import app as app_module from plinth import daemon, kvstore, menu, network from plinth.package import Packages -version = 1 - -is_essential = True - -managed_packages = ['network-manager', 'batctl'] - first_boot_steps = [ { 'id': 'network_topology_wizard', @@ -55,12 +49,14 @@ class NetworksApp(app_module.App): app_id = 'networks' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, name=_('Networks'), + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Networks'), icon='fa-signal', description=_description, manual_page='Networks') self.add(info) @@ -69,7 +65,7 @@ class NetworksApp(app_module.App): 'networks:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-networks', managed_packages) + packages = Packages('packages-networks', ['network-manager', 'batctl']) self.add(packages) def diagnose(self): @@ -91,7 +87,7 @@ class NetworksApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) actions.superuser_run('networks') helper.call('post', app.enable) diff --git a/plinth/modules/openvpn/__init__.py b/plinth/modules/openvpn/__init__.py index 06d9fd4cf..3d73b0032 100644 --- a/plinth/modules/openvpn/__init__.py +++ b/plinth/modules/openvpn/__init__.py @@ -20,12 +20,6 @@ from plinth.utils import format_lazy from . import manifest -version = 4 - -managed_services = ['openvpn-server@freedombox'] - -managed_packages = ['openvpn', 'easy-rsa'] - _description = [ format_lazy( _('Virtual Private Network (VPN) is a technique for securely ' @@ -47,6 +41,8 @@ class OpenVPNApp(app_module.App): app_id = 'openvpn' + _version = 4 + @property def can_be_disabled(self): """Return whether the app can be disabled.""" @@ -58,7 +54,7 @@ class OpenVPNApp(app_module.App): self.groups = {'vpn': _('Connect to VPN services')} - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('OpenVPN'), icon_filename='openvpn', short_description=_('Virtual Private Network'), description=_description, manual_page='OpenVPN', @@ -82,14 +78,14 @@ class OpenVPNApp(app_module.App): allowed_groups=['vpn']) self.add(shortcut) - packages = Packages('packages-openvpn', managed_packages) + packages = Packages('packages-openvpn', ['openvpn', 'easy-rsa']) self.add(packages) firewall = Firewall('firewall-openvpn', info.name, ports=['openvpn'], is_external=True) self.add(firewall) - daemon = Daemon('daemon-openvpn', managed_services[0], + daemon = Daemon('daemon-openvpn', 'openvpn-server@freedombox', listen_ports=[(1194, 'udp4'), (1194, 'udp6')]) self.add(daemon) @@ -112,7 +108,7 @@ class OpenVPNApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'openvpn', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/pagekite/__init__.py b/plinth/modules/pagekite/__init__.py index 8ae7d04d2..25a50723b 100644 --- a/plinth/modules/pagekite/__init__.py +++ b/plinth/modules/pagekite/__init__.py @@ -16,14 +16,6 @@ from plinth.utils import format_lazy from . import manifest, utils -version = 2 - -depends = ['names'] - -managed_services = ['pagekite'] - -managed_packages = ['pagekite'] - _description = [ format_lazy( _('PageKite is a system for exposing {box_name} services when ' @@ -58,12 +50,16 @@ class PagekiteApp(app_module.App): app_id = 'pagekite' + DAEMON = 'pagekite' + + _version = 2 + def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( - app_id=self.app_id, version=version, depends=depends, + app_id=self.app_id, version=self._version, depends=['names'], name=_('PageKite'), icon='fa-flag', short_description=_('Public Visibility'), description=_description, manual_page='PageKite', @@ -75,14 +71,14 @@ class PagekiteApp(app_module.App): 'pagekite:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-pagekite', managed_packages) + packages = Packages('packages-pagekite', ['pagekite']) self.add(packages) domain_type = DomainType('domain-type-pagekite', _('PageKite Domain'), 'pagekite:index', can_have_certificate=True) self.add(domain_type) - daemon = Daemon('daemon-pagekite', managed_services[0]) + daemon = Daemon('daemon-pagekite', self.DAEMON) self.add(daemon) backup_restore = BackupRestore('backup-restore-pagekite', @@ -92,8 +88,7 @@ class PagekiteApp(app_module.App): def post_init(self): """Perform post initialization operations.""" # Register kite name with Name Services module. - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and self.is_enabled(): + if not self.needs_setup() and self.is_enabled(): utils.update_names_module(is_enabled=True) def enable(self): @@ -109,9 +104,9 @@ class PagekiteApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) if not old_version: helper.call('post', app.enable) if old_version == 1: - actions.superuser_run('service', ['try-restart', managed_services[0]]) + actions.superuser_run('service', ['try-restart', PagekiteApp.DAEMON]) diff --git a/plinth/modules/pagekite/tests/test_functional.py b/plinth/modules/pagekite/tests/test_functional.py index 6c04074b2..cc5087f83 100644 --- a/plinth/modules/pagekite/tests/test_functional.py +++ b/plinth/modules/pagekite/tests/test_functional.py @@ -6,7 +6,7 @@ Functional, browser based tests for pagekite app. import pytest from plinth.tests import functional -pytestmark = [pytest.mark.system, pytest.mark.pagekite] +pytestmark = [pytest.mark.system, pytest.mark.domain, pytest.mark.pagekite] # TODO Scenario: Enable standard services # TODO Scenario: Disable standard services diff --git a/plinth/modules/performance/__init__.py b/plinth/modules/performance/__init__.py index 61f05da17..7a56ed1c3 100644 --- a/plinth/modules/performance/__init__.py +++ b/plinth/modules/performance/__init__.py @@ -13,16 +13,8 @@ from plinth.package import Packages from . import manifest -version = 1 - name = _('Performance') -managed_services = [ - 'pmcd.service', 'pmie.service', 'pmlogger.service', 'pmproxy.service' -] - -managed_packages = ['cockpit-pcp'] - _description = [ _('Performance app allows you to collect, store and view information ' 'about utilization of the hardware. This can give you basic insights ' @@ -40,11 +32,13 @@ class PerformanceApp(app_module.App): app_id = 'performance' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Performance'), icon='fa-bar-chart', short_description=_('System Monitoring'), description=_description, @@ -57,31 +51,31 @@ class PerformanceApp(app_module.App): 'performance:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-performance', managed_packages) + packages = Packages('packages-performance', ['cockpit-pcp']) self.add(packages) backup_restore = BackupRestore('backup-restore-performance', **manifest.backup) self.add(backup_restore) - daemon_0 = Daemon('daemon-performance-0', managed_services[0], + daemon_0 = Daemon('daemon-performance-0', 'pmcd.service', listen_ports=None) self.add(daemon_0) - daemon_1 = Daemon('daemon-performance-1', managed_services[1], + daemon_1 = Daemon('daemon-performance-1', 'pmie.service', listen_ports=None) self.add(daemon_1) - daemon_2 = Daemon('daemon-performance-2', managed_services[2], + daemon_2 = Daemon('daemon-performance-2', 'pmlogger.service', listen_ports=None) self.add(daemon_2) - daemon_3 = Daemon('daemon-performance-3', managed_services[3], + daemon_3 = Daemon('daemon-performance-3', 'pmproxy.service', listen_ports=None) self.add(daemon_3) def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.enable) diff --git a/plinth/modules/power/__init__.py b/plinth/modules/power/__init__.py index 006ba71ea..89c3a4356 100644 --- a/plinth/modules/power/__init__.py +++ b/plinth/modules/power/__init__.py @@ -10,10 +10,6 @@ from plinth.modules.backups.components import BackupRestore from . import manifest -version = 1 - -is_essential = True - _description = [_('Restart or shut down the system.')] app = None @@ -24,12 +20,14 @@ class PowerApp(app_module.App): app_id = 'power' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, name=_('Power'), + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Power'), description=_description, manual_page='Power') self.add(info) diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index 76bea2307..726c825ba 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -19,14 +19,6 @@ from plinth.utils import format_lazy from . import manifest -version = 1 - -is_essential = False - -managed_services = ['privoxy'] - -managed_packages = ['privoxy'] - _description = [ _('Privoxy is a non-caching web proxy with advanced filtering ' 'capabilities for enhancing privacy, modifying web page data and ' @@ -50,12 +42,14 @@ class PrivoxyApp(app_module.App): app_id = 'privoxy' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( - app_id=self.app_id, version=version, name=_('Privoxy'), + app_id=self.app_id, version=self._version, name=_('Privoxy'), icon_filename='privoxy', short_description=_('Web Proxy'), description=_description, manual_page='Privoxy', donation_url='https://www.privoxy.org/faq/general.html#DONATE') @@ -73,14 +67,14 @@ class PrivoxyApp(app_module.App): configure_url=reverse_lazy('privoxy:index'), login_required=True) self.add(shortcut) - packages = Packages('packages-privoxy', managed_packages) + packages = Packages('packages-privoxy', ['privoxy']) self.add(packages) firewall = Firewall('firewall-privoxy', info.name, ports=['privoxy'], is_external=False) self.add(firewall) - daemon = Daemon('daemon-privoxy', managed_services[0], + daemon = Daemon('daemon-privoxy', 'privoxy', listen_ports=[(8118, 'tcp4'), (8118, 'tcp6')]) self.add(daemon) @@ -103,7 +97,7 @@ class PrivoxyApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'privoxy', ['pre-install']) - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.enable) diff --git a/plinth/modules/quassel/__init__.py b/plinth/modules/quassel/__init__.py index 1f7c03a93..533ee5f0e 100644 --- a/plinth/modules/quassel/__init__.py +++ b/plinth/modules/quassel/__init__.py @@ -22,14 +22,6 @@ from plinth.utils import format_lazy from . import manifest -version = 1 - -managed_services = ['quasselcore'] - -managed_packages = ['quassel-core'] - -managed_paths = [pathlib.Path('/var/lib/quassel/')] - _description = [ format_lazy( _('Quassel is an IRC application that is split into two parts, a ' @@ -54,11 +46,13 @@ class QuasselApp(app_module.App): app_id = 'quassel' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Quassel'), icon_filename='quassel', short_description=_('IRC Client'), description=_description, manual_page='Quassel', @@ -78,7 +72,7 @@ class QuasselApp(app_module.App): login_required=True) self.add(shortcut) - packages = Packages('packages-quassel', managed_packages) + packages = Packages('packages-quassel', ['quassel-core']) self.add(packages) firewall = Firewall('firewall-quassel', info.name, @@ -87,14 +81,14 @@ class QuasselApp(app_module.App): letsencrypt = LetsEncrypt( 'letsencrypt-quassel', domains=get_domains, - daemons=managed_services, should_copy_certificates=True, + daemons=['quasselcore'], should_copy_certificates=True, private_key_path='/var/lib/quassel/quasselCert.pem', certificate_path='/var/lib/quassel/quasselCert.pem', user_owner='quasselcore', group_owner='quassel', managing_app='quassel') self.add(letsencrypt) - daemon = Daemon('daemon-quassel', managed_services[0], + daemon = Daemon('daemon-quassel', 'quasselcore', listen_ports=[(4242, 'tcp4'), (4242, 'tcp6')]) self.add(daemon) @@ -109,7 +103,7 @@ class QuasselApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.enable) app.get_component('letsencrypt-quassel').setup_certificates() diff --git a/plinth/modules/radicale/__init__.py b/plinth/modules/radicale/__init__.py index dc93e4174..d80fcd5ba 100644 --- a/plinth/modules/radicale/__init__.py +++ b/plinth/modules/radicale/__init__.py @@ -20,10 +20,6 @@ from plinth.utils import Version, format_lazy from . import manifest -version = 2 - -managed_packages = ['radicale'] - _description = [ format_lazy( _('Radicale is a CalDAV and CardDAV server. It allows synchronization ' @@ -49,11 +45,13 @@ class RadicaleApp(app_module.App): app_id = 'radicale' + _version = 2 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Radicale'), icon_filename='radicale', short_description=_('Calendar and Addressbook'), description=_description, @@ -73,7 +71,7 @@ class RadicaleApp(app_module.App): login_required=True) self.add(shortcut) - packages = Packages('packages-radicale', managed_packages) + packages = Packages('packages-radicale', ['radicale']) self.add(packages) firewall = Firewall('firewall-radicale', info.name, @@ -103,7 +101,7 @@ class RadicaleApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.enable) diff --git a/plinth/modules/roundcube/__init__.py b/plinth/modules/roundcube/__init__.py index 1a897d082..49997b7dc 100644 --- a/plinth/modules/roundcube/__init__.py +++ b/plinth/modules/roundcube/__init__.py @@ -16,10 +16,6 @@ from plinth.utils import Version from . import manifest -version = 1 - -managed_packages = ['sqlite3', 'roundcube', 'roundcube-sqlite3'] - _description = [ _('Roundcube webmail is a browser-based multilingual IMAP ' 'client with an application-like user interface. It provides ' @@ -39,8 +35,6 @@ _description = [ '>https://www.google.com/settings/security/lesssecureapps).'), ] -manual_page = 'Roundcube' - app = None @@ -49,11 +43,13 @@ class RoundcubeApp(app_module.App): app_id = 'roundcube' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Roundcube'), icon_filename='roundcube', short_description=_('Email Client'), description=_description, @@ -73,7 +69,8 @@ class RoundcubeApp(app_module.App): login_required=True) self.add(shortcut) - packages = Packages('packages-roundcube', managed_packages) + packages = Packages('packages-roundcube', + ['sqlite3', 'roundcube', 'roundcube-sqlite3']) self.add(packages) firewall = Firewall('firewall-roundcube', info.name, @@ -92,7 +89,7 @@ class RoundcubeApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'roundcube', ['pre-install']) - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'roundcube', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py index c9d1584e7..b0baee393 100644 --- a/plinth/modules/samba/__init__.py +++ b/plinth/modules/samba/__init__.py @@ -23,12 +23,6 @@ from plinth.utils import format_lazy from . import manifest -version = 2 - -managed_services = ['smbd', 'nmbd'] - -managed_packages = ['samba', 'acl'] - _description = [ _('Samba allows to share files and folders between FreedomBox and ' 'other computers in your local network.'), @@ -53,6 +47,8 @@ class SambaApp(app_module.App): app_id = 'samba' + _version = 2 + def __init__(self): """Create components for the app.""" super().__init__() @@ -60,7 +56,7 @@ class SambaApp(app_module.App): groups = {'freedombox-share': _('Access to the private shares')} info = app_module.Info( - app_id=self.app_id, version=version, name=_('Samba'), + app_id=self.app_id, version=self._version, name=_('Samba'), icon_filename='samba', short_description=_('Network File Storage'), manual_page='Samba', description=_description, clients=manifest.clients, @@ -80,20 +76,19 @@ class SambaApp(app_module.App): login_required=True, allowed_groups=list(groups)) self.add(shortcut) - packages = Packages('packages-samba', managed_packages) + packages = Packages('packages-samba', ['samba', 'acl']) self.add(packages) firewall = Firewall('firewall-samba', info.name, ports=['samba']) self.add(firewall) daemon = Daemon( - 'daemon-samba', managed_services[0], listen_ports=[(139, 'tcp4'), - (139, 'tcp6'), - (445, 'tcp4'), - (445, 'tcp6')]) + 'daemon-samba', 'smbd', listen_ports=[(139, 'tcp4'), (139, 'tcp6'), + (445, 'tcp4'), + (445, 'tcp6')]) self.add(daemon) - daemon_nmbd = Daemon('daemon-samba-nmbd', managed_services[1], + daemon_nmbd = Daemon('daemon-samba-nmbd', 'nmbd', listen_ports=[(137, 'udp4'), (138, 'udp4')]) self.add(daemon_nmbd) @@ -122,7 +117,7 @@ class SambaBackupRestore(BackupRestore): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'samba', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/searx/__init__.py b/plinth/modules/searx/__init__.py index 5a68055c1..53995106f 100644 --- a/plinth/modules/searx/__init__.py +++ b/plinth/modules/searx/__init__.py @@ -18,10 +18,6 @@ from plinth.package import Packages from . import manifest -version = 4 - -managed_packages = ['searx'] - _description = [ _('Searx is a privacy-respecting Internet metasearch engine. ' 'It aggregrates and displays results from multiple search engines.'), @@ -29,8 +25,6 @@ _description = [ 'It stores no cookies by default.') ] -manual_page = 'Searx' - app = None @@ -39,6 +33,8 @@ class SearxApp(app_module.App): app_id = 'searx' + _version = 4 + def __init__(self): """Create components for the app.""" super().__init__() @@ -46,7 +42,7 @@ class SearxApp(app_module.App): groups = {'web-search': _('Search the web')} info = app_module.Info( - app_id=self.app_id, version=version, name=_('Searx'), + app_id=self.app_id, version=self._version, name=_('Searx'), icon_filename='searx', short_description=_('Web Search'), description=_description, manual_page='Searx', clients=manifest.clients, @@ -66,7 +62,7 @@ class SearxApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) - packages = Packages('packages-searx', managed_packages) + packages = Packages('packages-searx', ['searx']) self.add(packages) firewall = Firewall('firewall-searx', info.name, @@ -114,7 +110,7 @@ class SearxWebserverAuth(Webserver): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'searx', ['setup']) if not old_version or old_version < 3: helper.call('post', actions.superuser_run, 'searx', diff --git a/plinth/modules/security/__init__.py b/plinth/modules/security/__init__.py index 4fbad8597..c095376b5 100644 --- a/plinth/modules/security/__init__.py +++ b/plinth/modules/security/__init__.py @@ -11,20 +11,13 @@ from django.utils.translation import gettext_lazy as _ from plinth import actions from plinth import app as app_module -from plinth import menu, module_loader +from plinth import menu +from plinth.daemon import Daemon, RelatedDaemon from plinth.modules.backups.components import BackupRestore from plinth.package import Packages from . import manifest -version = 7 - -is_essential = True - -managed_packages = ['fail2ban', 'debsecan'] - -managed_services = ['fail2ban'] - ACCESS_CONF_FILE = '/etc/security/access.d/50freedombox.conf' ACCESS_CONF_FILE_OLD = '/etc/security/access.conf' ACCESS_CONF_SNIPPET = '-:ALL EXCEPT root fbx plinth (admin) (sudo):ALL' @@ -39,12 +32,14 @@ class SecurityApp(app_module.App): app_id = 'security' + _version = 7 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, name=_('Security'), + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Security'), icon='fa-lock', manual_page='Security') self.add(info) @@ -52,9 +47,12 @@ class SecurityApp(app_module.App): 'security:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-security', managed_packages) + packages = Packages('packages-security', ['fail2ban', 'debsecan']) self.add(packages) + daemon = RelatedDaemon('related-daemon-fail2ban', 'fail2ban') + self.add(daemon) + backup_restore = BackupRestore('backup-restore-security', **manifest.backup) self.add(backup_restore) @@ -62,7 +60,7 @@ class SecurityApp(app_module.App): def setup(helper, old_version=None): """Install the required packages""" - helper.install(managed_packages) + app.setup(old_version) if not old_version: enable_fail2ban() @@ -130,30 +128,33 @@ def get_apps_report(): 'vulns': 0, } } - for module_name, module in module_loader.loaded_modules.items(): - try: - packages = module.managed_packages - except AttributeError: + for app_ in app_module.App.list(): + components = app_.get_components_of_type(Packages) + packages = [] + for component in components: + packages += component.packages + + if not packages: continue # app has no managed packages - try: - services = module.managed_services - except AttributeError: - services = None + components = app_.get_components_of_type(Daemon) + services = [] + for component in components: + services.append(component.unit) # filter out apps not setup yet - if module.setup_helper.get_state() == 'needs-setup': + if app_.needs_setup(): continue - apps[module_name] = { - 'name': module_name, + apps[app_.app_id] = { + 'name': app_.app_id, 'packages': set(packages), 'vulns': 0, 'sandboxed': None, } if services: - apps[module_name]['sandboxed'] = False + apps[app_.app_id]['sandboxed'] = False for service in services: # If an app lists a timer, work on the associated service # instead @@ -161,8 +162,8 @@ def get_apps_report(): service = service.rpartition('.')[0] if _get_service_is_sandboxed(service): - apps[module_name]['sandboxed'] = True - apps[module_name][ + apps[app_.app_id]['sandboxed'] = True + apps[app_.app_id][ 'sandbox_coverage'] = sandbox_coverage.get(service) for cve_packages in cves.values(): diff --git a/plinth/modules/shaarli/__init__.py b/plinth/modules/shaarli/__init__.py index 2239d2082..b58062559 100644 --- a/plinth/modules/shaarli/__init__.py +++ b/plinth/modules/shaarli/__init__.py @@ -13,10 +13,6 @@ from plinth.package import Packages from . import manifest -version = 1 - -managed_packages = ['shaarli'] - _description = [ _('Shaarli allows you to save and share bookmarks.'), _('Note that Shaarli only supports a single user account, which you will ' @@ -31,11 +27,13 @@ class ShaarliApp(app_module.App): app_id = 'shaarli' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Shaarli'), icon_filename='shaarli', short_description=_('Bookmarks'), description=_description, manual_page='Shaarli', @@ -54,7 +52,7 @@ class ShaarliApp(app_module.App): login_required=True) self.add(shortcut) - packages = Packages('packages-shaarli', managed_packages) + packages = Packages('packages-shaarli', ['shaarli']) self.add(packages) firewall = Firewall('firewall-shaarli', info.name, @@ -67,5 +65,5 @@ class ShaarliApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.enable) diff --git a/plinth/modules/shaarli/data/etc/plinth/modules-enabled/shaarli b/plinth/modules/shaarli/data/etc/plinth/modules-enabled/shaarli index 103c9ec60..ae3ff45d0 100644 --- a/plinth/modules/shaarli/data/etc/plinth/modules-enabled/shaarli +++ b/plinth/modules/shaarli/data/etc/plinth/modules-enabled/shaarli @@ -1 +1 @@ -#plinth.modules.shaarli +plinth.modules.shaarli diff --git a/plinth/modules/shadowsocks/__init__.py b/plinth/modules/shadowsocks/__init__.py index f37f754c8..c396272fa 100644 --- a/plinth/modules/shadowsocks/__init__.py +++ b/plinth/modules/shadowsocks/__init__.py @@ -17,12 +17,6 @@ from plinth.utils import format_lazy from . import manifest -version = 3 - -managed_services = ['shadowsocks-libev-local@freedombox'] - -managed_packages = ['shadowsocks-libev'] - _description = [ _('Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to ' 'protect your Internet traffic. It can be used to bypass Internet ' @@ -45,11 +39,15 @@ class ShadowsocksApp(app_module.App): app_id = 'shadowsocks' + _version = 3 + + DAEMON = 'shadowsocks-libev-local@freedombox' + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Shadowsocks'), icon_filename='shadowsocks', short_description=_('Socks5 Proxy'), @@ -70,7 +68,7 @@ class ShadowsocksApp(app_module.App): login_required=True) self.add(shortcut) - packages = Packages('packages-shadowsocks', managed_packages) + packages = Packages('packages-shadowsocks', ['shadowsocks-libev']) self.add(packages) firewall = Firewall('firewall-shadowsocks', info.name, @@ -78,7 +76,7 @@ class ShadowsocksApp(app_module.App): is_external=False) self.add(firewall) - daemon = Daemon('daemon-shadowsocks', managed_services[0], + daemon = Daemon('daemon-shadowsocks', self.DAEMON, listen_ports=[(1080, 'tcp4'), (1080, 'tcp6')]) self.add(daemon) @@ -89,6 +87,6 @@ class ShadowsocksApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'shadowsocks', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/sharing/__init__.py b/plinth/modules/sharing/__init__.py index 1ac5ee950..7498285c9 100644 --- a/plinth/modules/sharing/__init__.py +++ b/plinth/modules/sharing/__init__.py @@ -15,8 +15,6 @@ from plinth.utils import format_lazy from . import manifest -version = 1 - _description = [ format_lazy( _('Sharing allows you to share files and folders on your {box_name} ' @@ -32,10 +30,12 @@ class SharingApp(app_module.App): app_id = 'sharing' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Sharing'), icon_filename='sharing', manual_page='Sharing', description=_description) self.add(info) diff --git a/plinth/modules/snapshot/__init__.py b/plinth/modules/snapshot/__init__.py index d92a01897..872324b6a 100644 --- a/plinth/modules/snapshot/__init__.py +++ b/plinth/modules/snapshot/__init__.py @@ -18,12 +18,6 @@ from plinth.package import Packages from . import manifest -version = 4 - -is_essential = True - -managed_packages = ['snapper'] - _description = [ _('Snapshots allows creating and managing btrfs file system snapshots. ' 'These can be used to roll back the system to a previously known ' @@ -50,13 +44,15 @@ class SnapshotApp(app_module.App): app_id = 'snapshot' + _version = 4 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Storage Snapshots'), icon='fa-film', - description=_description, + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Storage Snapshots'), + icon='fa-film', description=_description, manual_page='Snapshots') self.add(info) @@ -64,7 +60,7 @@ class SnapshotApp(app_module.App): 'snapshot:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-snapshot', managed_packages) + packages = Packages('packages-snapshot', ['snapper']) self.add(packages) backup_restore = SnapshotBackupRestore('backup-restore-snapshot', @@ -92,7 +88,7 @@ def is_supported(): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) if is_supported(): helper.call('post', actions.superuser_run, 'snapshot', ['setup', '--old-version', diff --git a/plinth/modules/ssh/__init__.py b/plinth/modules/ssh/__init__.py index efc3addac..6fb1eb41d 100644 --- a/plinth/modules/ssh/__init__.py +++ b/plinth/modules/ssh/__init__.py @@ -19,14 +19,6 @@ from plinth.package import Packages from . import manifest -version = 1 - -is_essential = True - -managed_services = ['ssh'] - -managed_packages = ['openssh-server'] - _description = [ _('A Secure Shell server uses the secure shell protocol to accept ' 'connections from remote computers. An authorized remote computer ' @@ -42,12 +34,14 @@ class SSHApp(app_module.App): app_id = 'ssh' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Secure Shell (SSH) Server'), icon='fa-terminal', description=_description) self.add(info) @@ -56,14 +50,14 @@ class SSHApp(app_module.App): 'ssh:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-ssh', managed_packages) + packages = Packages('packages-ssh', ['openssh-server']) self.add(packages) firewall = Firewall('firewall-ssh', info.name, ports=['ssh'], is_external=True) self.add(firewall) - daemon = Daemon('daemon-ssh', managed_services[0]) + daemon = Daemon('daemon-ssh', 'ssh') self.add(daemon) backup_restore = BackupRestore('backup-restore-ssh', **manifest.backup) @@ -72,6 +66,7 @@ class SSHApp(app_module.App): def setup(helper, old_version=None): """Configure the module.""" + app.setup(old_version) actions.superuser_run('ssh', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/sso/__init__.py b/plinth/modules/sso/__init__.py index a6c2019fb..faabda642 100644 --- a/plinth/modules/sso/__init__.py +++ b/plinth/modules/sso/__init__.py @@ -9,38 +9,32 @@ from plinth import actions from plinth import app as app_module from plinth.package import Packages -version = 1 - -is_essential = True - -depends = ['security', 'apache'] - -managed_packages = [ - 'libapache2-mod-auth-pubtkt', - 'openssl', - 'python3-openssl', - 'flite', -] +app = None class SSOApp(app_module.App): """FreedomBox app for single sign on.""" app_id = 'sso' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, depends=depends, - name=_('Single Sign On')) + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, + depends=['security', + 'apache'], name=_('Single Sign On')) self.add(info) - packages = Packages('packages-sso', managed_packages) + packages = Packages('packages-sso', [ + 'libapache2-mod-auth-pubtkt', 'openssl', 'python3-openssl', 'flite' + ]) self.add(packages) def setup(helper, old_version=None): """Install the required packages""" - helper.install(managed_packages) + app.setup(old_version) actions.superuser_run('auth-pubtkt', ['create-key-pair']) diff --git a/plinth/modules/storage/__init__.py b/plinth/modules/storage/__init__.py index 9bcea62ba..1a486a3f0 100644 --- a/plinth/modules/storage/__init__.py +++ b/plinth/modules/storage/__init__.py @@ -21,10 +21,6 @@ from plinth.utils import format_lazy from . import manifest, udisks2 -version = 4 - -managed_packages = ['parted', 'udisks2', 'gir1.2-udisks-2.0'] - _description = [ format_lazy( _('This module allows you to manage storage media attached to your ' @@ -35,8 +31,6 @@ _description = [ logger = logging.getLogger(__name__) -is_essential = True - app = None @@ -45,14 +39,16 @@ class StorageApp(app_module.App): app_id = 'storage' + _version = 4 + can_be_disabled = False def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, name=_('Storage'), + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Storage'), icon='fa-hdd-o', description=_description, manual_page='Storage') self.add(info) @@ -61,7 +57,9 @@ class StorageApp(app_module.App): 'storage:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-storage', managed_packages) + packages = Packages('packages-storage', + ['parted', 'udisks2', 'gir1.2-udisks-2.0'], + skip_recommends=True) self.add(packages) backup_restore = BackupRestore('backup-restore-storage', @@ -279,7 +277,7 @@ def get_error_message(error): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages, skip_recommends=True) + app.setup(old_version) helper.call('post', actions.superuser_run, 'storage', ['setup']) helper.call('post', app.enable) disks = get_disks() diff --git a/plinth/modules/storage/forms.py b/plinth/modules/storage/forms.py index c40b6e82d..3b7cab766 100644 --- a/plinth/modules/storage/forms.py +++ b/plinth/modules/storage/forms.py @@ -10,14 +10,15 @@ from django import forms from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ -from plinth import actions, module_loader +from plinth import actions +from plinth import app as app_module from plinth.modules import storage def get_available_samba_shares(): """Get available samba shares.""" available_shares = [] - if is_module_enabled('samba'): + if _is_app_enabled('samba'): samba_shares = json.loads( actions.superuser_run('samba', ['get-shares'])) if samba_shares: @@ -30,13 +31,11 @@ def get_available_samba_shares(): return available_shares -def is_module_enabled(name): +def _is_app_enabled(app_id): """Check whether a module is enabled.""" - if name in module_loader.loaded_modules: - module = module_loader.loaded_modules['samba'] - if module.setup_helper.get_state( - ) != 'needs-setup' and module.app.is_enabled(): - return True + app = app_module.App.get(app_id) + if not app.needs_setup() and app.is_enabled(): + return True return False diff --git a/plinth/modules/syncthing/__init__.py b/plinth/modules/syncthing/__init__.py index 776ff9d44..3cf8b0758 100644 --- a/plinth/modules/syncthing/__init__.py +++ b/plinth/modules/syncthing/__init__.py @@ -19,12 +19,6 @@ from plinth.utils import format_lazy from . import manifest -version = 5 - -managed_services = ['syncthing@syncthing'] - -managed_packages = ['syncthing'] - _description = [ _('Syncthing is an application to synchronize files across multiple ' 'devices, e.g. your desktop computer and mobile phone. Creation, ' @@ -51,6 +45,10 @@ class SyncthingApp(app_module.App): app_id = 'syncthing' + _version = 5 + + DAEMON = 'syncthing@syncthing' + def __init__(self): """Create components for the app.""" super().__init__() @@ -59,7 +57,7 @@ class SyncthingApp(app_module.App): 'syncthing-access': _('Administer Syncthing application') } - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Syncthing'), icon_filename='syncthing', short_description=_('File Synchronization'), description=_description, @@ -81,7 +79,7 @@ class SyncthingApp(app_module.App): allowed_groups=list(self.groups)) self.add(shortcut) - packages = Packages('packages-syncthing', managed_packages) + packages = Packages('packages-syncthing', ['syncthing']) self.add(packages) firewall = Firewall('firewall-syncthing-web', info.name, @@ -96,7 +94,7 @@ class SyncthingApp(app_module.App): urls=['https://{host}/syncthing/']) self.add(webserver) - daemon = Daemon('daemon-syncthing', managed_services[0]) + daemon = Daemon('daemon-syncthing', self.DAEMON) self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-syncthing', @@ -110,9 +108,9 @@ class SyncthingApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'syncthing', ['setup']) - add_user_to_share_group(SYSTEM_USER, managed_services[0]) + add_user_to_share_group(SYSTEM_USER, SyncthingApp.DAEMON) if not old_version: helper.call('post', app.enable) diff --git a/plinth/modules/tahoe/__init__.py b/plinth/modules/tahoe/__init__.py index e9630593c..6c4bbcd1e 100644 --- a/plinth/modules/tahoe/__init__.py +++ b/plinth/modules/tahoe/__init__.py @@ -22,12 +22,6 @@ from plinth.utils import format_lazy from . import manifest from .errors import TahoeConfigurationError -version = 1 - -managed_services = ['tahoe-lafs'] - -managed_packages = ['tahoe-lafs'] - _description = [ _('Tahoe-LAFS is a decentralized secure file storage system. ' 'It uses provider independent security to store files over a ' @@ -56,11 +50,13 @@ class TahoeApp(app_module.App): app_id = 'tahoe' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Tahoe-LAFS'), icon_filename='tahoe-lafs', short_description=_('Distributed File Storage'), @@ -80,7 +76,7 @@ class TahoeApp(app_module.App): configure_url=reverse_lazy('tahoe:index'), login_required=True) self.add(shortcut) - packages = Packages('packages-tahoe', managed_packages) + packages = Packages('packages-tahoe', ['tahoe-lafs']) self.add(packages) firewall = Firewall('firewall-tahoe', info.name, @@ -90,7 +86,7 @@ class TahoeApp(app_module.App): webserver = Webserver('webserver-tahoe', 'tahoe-plinth') self.add(webserver) - daemon = Daemon('daemon-tahoe', managed_services[0]) + daemon = Daemon('daemon-tahoe', 'tahoe-lafs') self.add(daemon) backup_restore = BackupRestore('backup-restore-tahoe', @@ -146,7 +142,7 @@ def get_configured_domain_name(): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) def post_setup(configured_domain_name): diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index 42c91d12a..1c81edacd 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -22,16 +22,6 @@ from plinth.signals import domain_added, domain_removed from . import manifest, utils -version = 5 - -depends = ['names'] - -managed_packages = [ - 'tor', 'tor-geoipdb', 'torsocks', 'obfs4proxy', 'apt-transport-tor' -] - -managed_services = ['tor@plinth'] - _description = [ _('Tor is an anonymous communication system. You can learn more ' 'about it from the Tor ' @@ -49,12 +39,15 @@ class TorApp(app_module.App): app_id = 'tor' + _version = 5 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Tor'), icon_filename='tor', + info = app_module.Info(app_id=self.app_id, version=self._version, + depends=['names' + ], name=_('Tor'), icon_filename='tor', short_description=_('Anonymity Network'), description=_description, manual_page='Tor', clients=manifest.clients, @@ -66,7 +59,9 @@ class TorApp(app_module.App): parent_url_name='apps') self.add(menu_item) - packages = Packages('packages-tor', managed_packages) + packages = Packages('packages-tor', [ + 'tor', 'tor-geoipdb', 'torsocks', 'obfs4proxy', 'apt-transport-tor' + ]) self.add(packages) domain_type = DomainType('domain-type-tor', _('Tor Onion Service'), @@ -83,7 +78,7 @@ class TorApp(app_module.App): self.add(firewall) daemon = Daemon( - 'daemon-tor', managed_services[0], strict_check=True, + 'daemon-tor', 'tor@plinth', strict_check=True, listen_ports=[(9050, 'tcp4'), (9050, 'tcp6'), (9040, 'tcp4'), (9040, 'tcp6'), (9053, 'udp4'), (9053, 'udp6')]) self.add(daemon) @@ -98,9 +93,8 @@ class TorApp(app_module.App): def post_init(self): """Perform post initialization operations.""" # Register hidden service name with Name Services module. - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and \ - self.is_enabled() and app_is_running(self): + if (not app.needs_setup() and self.is_enabled() + and app_is_running(self)): status = utils.get_status(initialized=False) hostname = status['hs_hostname'] services = [int(port['virtport']) for port in status['hs_ports']] @@ -160,7 +154,7 @@ class TorApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call( 'post', actions.superuser_run, 'tor', ['setup', '--old-version', str(old_version)]) diff --git a/plinth/modules/tor/tests/test_functional.py b/plinth/modules/tor/tests/test_functional.py index 0efca9a25..6804c24e6 100644 --- a/plinth/modules/tor/tests/test_functional.py +++ b/plinth/modules/tor/tests/test_functional.py @@ -14,7 +14,7 @@ _TOR_FEATURE_TO_ELEMENT = { 'software': 'tor-apt_transport_tor_enabled' } -pytestmark = [pytest.mark.apps, pytest.mark.tor] +pytestmark = [pytest.mark.apps, pytest.mark.domain, pytest.mark.tor] class TestTorApp(functional.BaseAppTests): diff --git a/plinth/modules/transmission/__init__.py b/plinth/modules/transmission/__init__.py index e28ccc2e6..477c33c8c 100644 --- a/plinth/modules/transmission/__init__.py +++ b/plinth/modules/transmission/__init__.py @@ -20,12 +20,6 @@ from plinth.package import Packages from . import manifest -version = 4 - -managed_services = ['transmission-daemon'] - -managed_packages = ['transmission-daemon'] - _description = [ _('Transmission is a BitTorrent client with a web interface.'), _('BitTorrent is a peer-to-peer file sharing protocol. ' @@ -43,6 +37,10 @@ class TransmissionApp(app_module.App): app_id = 'transmission' + _version = 4 + + DAEMON = 'transmission-daemon' + def __init__(self): """Create components for the app.""" super().__init__() @@ -52,7 +50,7 @@ class TransmissionApp(app_module.App): } info = app_module.Info( - app_id=self.app_id, version=version, name=_('Transmission'), + app_id=self.app_id, version=self._version, name=_('Transmission'), icon_filename='transmission', short_description=_('BitTorrent Web Client'), description=_description, manual_page='Transmission', @@ -72,7 +70,7 @@ class TransmissionApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) - packages = Packages('packages-transmission', managed_packages) + packages = Packages('packages-transmission', ['transmission-daemon']) self.add(packages) firewall = Firewall('firewall-transmission', info.name, @@ -85,7 +83,7 @@ class TransmissionApp(app_module.App): self.add(webserver) daemon = Daemon( - 'daemon-transmission', managed_services[0], listen_ports=[ + 'daemon-transmission', self.DAEMON, listen_ports=[ (9091, 'tcp4'), (51413, 'tcp4'), (51413, 'tcp6'), @@ -105,7 +103,7 @@ class TransmissionApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) if old_version and old_version <= 3 and app.is_enabled(): app.get_component('firewall-transmission').enable() @@ -117,5 +115,5 @@ def setup(helper, old_version=None): helper.call('post', actions.superuser_run, 'transmission', ['merge-configuration'], input=json.dumps(new_configuration).encode()) - add_user_to_share_group(SYSTEM_USER, managed_services[0]) + add_user_to_share_group(SYSTEM_USER, TransmissionApp.DAEMON) helper.call('post', app.enable) diff --git a/plinth/modules/ttrss/__init__.py b/plinth/modules/ttrss/__init__.py index 1ae8a73c0..fb90ad392 100644 --- a/plinth/modules/ttrss/__init__.py +++ b/plinth/modules/ttrss/__init__.py @@ -19,14 +19,6 @@ from plinth.utils import Version, format_lazy from . import manifest -version = 3 - -managed_services = ['tt-rss'] - -managed_packages = [ - 'tt-rss', 'postgresql', 'dbconfig-pgsql', 'php-pgsql', 'python3-psycopg2' -] - _description = [ _('Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, ' 'designed to allow reading news from any location, while feeling as ' @@ -48,13 +40,15 @@ class TTRSSApp(app_module.App): app_id = 'ttrss' + _version = 3 + def __init__(self): """Create components for the app.""" super().__init__() groups = {'feed-reader': _('Read and subscribe to news feeds')} - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Tiny Tiny RSS'), icon_filename='ttrss', short_description=_('News Feed Reader'), description=_description, @@ -75,7 +69,10 @@ class TTRSSApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) - packages = Packages('packages-ttrss', managed_packages) + packages = Packages('packages-ttrss', [ + 'tt-rss', 'postgresql', 'dbconfig-pgsql', 'php-pgsql', + 'python3-psycopg2' + ]) self.add(packages) firewall = Firewall('firewall-ttrss', info.name, @@ -86,7 +83,7 @@ class TTRSSApp(app_module.App): urls=['https://{host}/tt-rss']) self.add(webserver) - daemon = Daemon('daemon-ttrss', managed_services[0]) + daemon = Daemon('daemon-ttrss', 'tt-rss') self.add(daemon) users_and_groups = UsersAndGroups('users-and-groups-ttrss', @@ -125,7 +122,7 @@ class TTRSSBackupRestore(BackupRestore): def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'ttrss', ['pre-setup']) - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'ttrss', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py index 1ffffd674..c0879d532 100644 --- a/plinth/modules/upgrades/__init__.py +++ b/plinth/modules/upgrades/__init__.py @@ -16,19 +16,12 @@ import plinth from plinth import actions from plinth import app as app_module from plinth import cfg, glib, kvstore, menu +from plinth.daemon import RelatedDaemon from plinth.modules.backups.components import BackupRestore from plinth.package import Packages from . import manifest -version = 9 - -is_essential = True - -managed_packages = ['unattended-upgrades', 'needrestart'] - -managed_services = ['freedombox-dist-upgrade'] - first_boot_steps = [ { 'id': 'backports_wizard', @@ -69,14 +62,16 @@ class UpgradesApp(app_module.App): app_id = 'upgrades' + _version = 9 + can_be_disabled = False def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, name=_('Update'), + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Update'), icon='fa-refresh', description=_description, manual_page='Upgrades') self.add(info) @@ -85,9 +80,14 @@ class UpgradesApp(app_module.App): 'upgrades:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-upgrades', managed_packages) + packages = Packages('packages-upgrades', + ['unattended-upgrades', 'needrestart']) self.add(packages) + daemon = RelatedDaemon('related-daemon-upgrades', + 'freedombox-dist-upgrade') + self.add(daemon) + backup_restore = BackupRestore('backup-restore-upgrades', **manifest.backup) self.add(backup_restore) @@ -139,7 +139,7 @@ class UpgradesApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) # Enable automatic upgrades but only on first install if not old_version and not cfg.develop: diff --git a/plinth/modules/users/__init__.py b/plinth/modules/users/__init__.py index af9d56363..7a1dd68b9 100644 --- a/plinth/modules/users/__init__.py +++ b/plinth/modules/users/__init__.py @@ -17,17 +17,6 @@ from plinth.package import Packages from .components import UsersAndGroups -version = 3 - -is_essential = True - -managed_packages = [ - 'ldapscripts', 'ldap-utils', 'libnss-ldapd', 'libpam-ldapd', 'nscd', - 'nslcd', 'samba-common-bin', 'slapd', 'tdb-tools' -] - -managed_services = ['slapd'] - first_boot_steps = [ { 'id': 'users_firstboot', @@ -56,27 +45,32 @@ class UsersApp(app_module.App): app_id = 'users' + _version = 3 + can_be_disabled = False def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - is_essential=is_essential, - name=_('Users and Groups'), icon='fa-users', - description=_description, manual_page='Users') + info = app_module.Info(app_id=self.app_id, version=self._version, + is_essential=True, name=_('Users and Groups'), + icon='fa-users', description=_description, + manual_page='Users') self.add(info) menu_item = menu.Menu('menu-users', info.name, None, info.icon, 'users:index', parent_url_name='system') self.add(menu_item) - packages = Packages('packages-users', managed_packages) + packages = Packages('packages-users', [ + 'ldapscripts', 'ldap-utils', 'libnss-ldapd', 'libpam-ldapd', + 'nscd', 'nslcd', 'samba-common-bin', 'slapd', 'tdb-tools' + ]) self.add(packages) - daemon = Daemon('daemon-users', managed_services[0], - listen_ports=[(389, 'tcp4'), (389, 'tcp6')]) + daemon = Daemon('daemon-users', 'slapd', listen_ports=[(389, 'tcp4'), + (389, 'tcp6')]) self.add(daemon) # Add the admin group @@ -98,7 +92,7 @@ class UsersApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) if not old_version: helper.call('post', actions.superuser_run, 'users', ['first-setup']) helper.call('post', actions.superuser_run, 'users', ['setup']) diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 0feae35d8..80ca8972f 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -16,10 +16,6 @@ from . import manifest, utils nm = import_from_gi('NM', '1.0') -version = 1 - -managed_packages = ['wireguard'] - _description = [ _('WireGuard is a fast, modern, secure VPN tunnel.'), format_lazy( @@ -43,12 +39,14 @@ class WireguardApp(app_module.App): app_id = 'wireguard' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( - app_id=self.app_id, version=version, name=_('WireGuard'), + app_id=self.app_id, version=self._version, name=_('WireGuard'), icon_filename='wireguard', short_description=_('Virtual Private Network'), description=_description, manual_page='WireGuard', @@ -69,7 +67,7 @@ class WireguardApp(app_module.App): clients=info.clients) self.add(shortcut) - packages = Packages('packages-wireguard', managed_packages) + packages = Packages('packages-wireguard', ['wireguard']) self.add(packages) firewall = Firewall('firewall-wireguard', info.name, @@ -99,5 +97,5 @@ class WireguardApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', app.enable) diff --git a/plinth/modules/wordpress/__init__.py b/plinth/modules/wordpress/__init__.py index 8c07b7c05..f4061acc8 100644 --- a/plinth/modules/wordpress/__init__.py +++ b/plinth/modules/wordpress/__init__.py @@ -19,21 +19,6 @@ from . import manifest PUBLIC_ACCESS_FILE = '/etc/wordpress/is_public' -version = 1 - -managed_services = ['wordpress-freedombox.timer'] - -# Add php to avoid wordpress package bringing in lib-apache2-mod-php. -# WordPress only supports MySQL/MariaDB as database server. -managed_packages = [ - 'wordpress', - 'php', # Avoid WordPress package bringing in libapache2-mod-php - 'php-imagick', # Optional, for performance - 'php-ssh2', # Optional, to upload plugins/themes using SSH connection - 'php-zip', # Optional, for performance - 'default-mysql-server', # WordPress only supports MySQL/MariaDB as DB -] - _description = [ _('WordPress is a popular way to create and manage websites and blogs. ' 'Content can be managed using a visual interface. Layout and ' @@ -63,12 +48,14 @@ class WordPressApp(app_module.App): app_id = 'wordpress' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() info = app_module.Info( - app_id=self.app_id, version=version, name=_('WordPress'), + app_id=self.app_id, version=self._version, name=_('WordPress'), icon_filename='wordpress', short_description=_('Website and Blog'), description=_description, manual_page='WordPress', clients=manifest.clients, @@ -86,7 +73,23 @@ class WordPressApp(app_module.App): url='/wordpress/', clients=info.clients) self.add(shortcut) - packages = Packages('packages-wordpress', managed_packages) + # Add php to avoid wordpress package bringing in lib-apache2-mod-php. + # WordPress only supports MySQL/MariaDB as database server. + packages = Packages( + 'packages-wordpress', + [ + 'wordpress', + # Avoid WordPress package bringing in libapache2-mod-php + 'php', + # Optional, for performance + 'php-imagick', + # Optional, to upload plugins/themes using SSH connection + 'php-ssh2', + # Optional, for performance + 'php-zip', + # WordPress only supports MySQL/MariaDB as DB + 'default-mysql-server', + ]) self.add(packages) firewall = Firewall('firewall-wordpress', info.name, @@ -97,7 +100,7 @@ class WordPressApp(app_module.App): urls=['https://{host}/wordpress/']) self.add(webserver) - daemon = Daemon('daemon-wordpress', managed_services[0]) + daemon = Daemon('daemon-wordpress', 'wordpress-freedombox.timer') self.add(daemon) backup_restore = WordPressBackupRestore('backup-restore-wordpress', @@ -119,6 +122,6 @@ class WordPressBackupRestore(BackupRestore): def setup(helper, old_version=None): """Install and configure the module.""" - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'wordpress', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/zoph/__init__.py b/plinth/modules/zoph/__init__.py index 89525c227..c1486b05e 100644 --- a/plinth/modules/zoph/__init__.py +++ b/plinth/modules/zoph/__init__.py @@ -21,14 +21,6 @@ from . import manifest logger = logging.getLogger(__name__) -version = 1 - -# XXX: This implementation of Zoph does not work with version 0.9.9 in Buster. -# As an easy hack to make the app only available in Bullseye, php7.4 dependency -# has been added. After making the last release for Buster, this can be removed -# to allow compatibility with newer versions of PHP that become available. -managed_packages = ['zoph', 'php7.4'] - _description = [ format_lazy( _('Zoph manages your photo collection. Photos are stored on your ' @@ -56,11 +48,13 @@ class ZophApp(app_module.App): app_id = 'zoph' + _version = 1 + def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, + info = app_module.Info(app_id=self.app_id, version=self._version, name=_('Zoph'), icon_filename='zoph', short_description=_('Photo Organizer'), description=_description, manual_page='Zoph', @@ -79,7 +73,7 @@ class ZophApp(app_module.App): login_required=True) self.add(shortcut) - packages = Packages('packages-zoph', managed_packages) + packages = Packages('packages-zoph', ['zoph']) self.add(packages) firewall = Firewall('firewall-zoph', info.name, @@ -98,7 +92,7 @@ class ZophApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'zoph', ['pre-install']) - helper.install(managed_packages) + app.setup(old_version) helper.call('post', actions.superuser_run, 'zoph', ['setup']) helper.call('post', app.enable) diff --git a/plinth/package.py b/plinth/package.py index f2e1a1946..80951c39e 100644 --- a/plinth/package.py +++ b/plinth/package.py @@ -3,11 +3,14 @@ Framework for installing and updating distribution packages """ +import enum import json import logging +import pathlib import subprocess +import sys import threading -from typing import Union +from typing import Optional, Union import apt.cache from django.utils.translation import gettext as _ @@ -27,24 +30,80 @@ class Packages(app.FollowerComponent): of packages required by an app. """ - def __init__(self, component_id: str, packages: list[str]): + class ConflictsAction(enum.Enum): + """Action to take when a conflicting package is installed.""" + IGNORE = 'ignore' # Proceed as if there are no conflicts + REMOVE = 'remove' # Remove the packages before installing the app + + def __init__(self, component_id: str, packages: list[str], + skip_recommends: bool = False, + conflicts: Optional[list[str]] = None, + conflicts_action: Optional[ConflictsAction] = None): """Initialize a new packages component. 'component_id' should be a unique ID across all components of an app and across all components. 'packages' is the list of Debian packages managed by this component. + + 'skip_recommends' is a boolean specifying whether recommended packages + should be installed along with the listed packages. + + 'conflicts' is the list of Debian packages that can't simultaneously be + installed with packages listed here. None if there are no known + conflicting packages. + + 'conflicts_action' is a string representing the action to take when it + is found that conflicting Debian packages are installed on the system. + None if there are no known conflicting packages. """ super().__init__(component_id) self.component_id = component_id self._packages = packages + self.skip_recommends = skip_recommends + self.conflicts = conflicts + self.conflicts_action = conflicts_action @property def packages(self) -> list[str]: """Return the list of packages managed by this component.""" return self._packages + def setup(self, old_version): + """Install the packages.""" + # TODO: Drop the need for setup helper. + module_name = self.app.__module__ + module = sys.modules[module_name] + helper = module.setup_helper + helper.install(self.packages, skip_recommends=self.skip_recommends) + + def find_conflicts(self) -> Optional[list[str]]: + """Return list of conflicting packages installed on the system.""" + if not self.conflicts: + return None + + return packages_installed(self.conflicts) + + def has_unavailable_packages(self): + """Return whether any of the packages are not available. + + Returns True if one or more of the packages is not available in the + user's Debian distribution or False otherwise. Returns None if it + cannot be reliably determined whether the packages are available or + not. + """ + apt_lists_dir = pathlib.Path('/var/lib/apt/lists/') + num_files = len( + [child for child in apt_lists_dir.iterdir() if child.is_file()]) + if num_files < 2: # not counting the lock file + return None + + # List of all packages from all Package components + cache = apt.Cache() + return any(package for package in self.packages + if package not in cache) + class PackageException(Exception): """A package operation has failed.""" diff --git a/plinth/setup.py b/plinth/setup.py index 9e3d23dd1..ca9da25da 100644 --- a/plinth/setup.py +++ b/plinth/setup.py @@ -3,9 +3,8 @@ Utilities for performing application setup operations. """ -import importlib import logging -import os +import sys import threading import time from collections import defaultdict @@ -13,7 +12,8 @@ from collections import defaultdict import apt import plinth -from plinth.package import Packages, packages_installed +from plinth import app as app_module +from plinth.package import Packages from plinth.signals import post_setup from . import package @@ -65,8 +65,9 @@ class Helper(object): if self.current_operation: return - current_version = self.get_setup_version() - if current_version >= self.module.version: + app = self.module.app + current_version = app.get_setup_version() + if current_version >= app.info.version: return self.allow_install = allow_install @@ -84,7 +85,7 @@ class Helper(object): logger.exception('Error running setup - %s', exception) raise exception else: - self.set_setup_version(self.module.version) + app.set_setup_version(app.info.version) post_setup.send_robust(sender=self.__class__, module_name=self.module_name) finally: @@ -122,80 +123,6 @@ class Helper(object): self.current_operation = {'step': step} return method(*args, **kwargs) - def get_state(self): - """Return whether the module is not setup or needs upgrade.""" - current_version = self.get_setup_version() - if current_version and self.module.version <= current_version: - return 'up-to-date' - - # If a module need installing/updating but no setup method is - # available, then automatically set version. - # - # Minor violation of 'get' only discipline for convenience. - if not hasattr(self.module, 'setup'): - self.set_setup_version(self.module.version) - return 'up-to-date' - - if not current_version: - return 'needs-setup' - - return 'needs-update' - - def get_setup_version(self): - """Return the setup version of a module.""" - # XXX: Optimize version gets - from . import models - - try: - module_entry = models.Module.objects.get(pk=self.module_name) - return module_entry.setup_version - except models.Module.DoesNotExist: - return 0 - - def set_setup_version(self, version): - """Set a module's setup version.""" - from . import models - - models.Module.objects.update_or_create( - pk=self.module_name, defaults={'setup_version': version}) - - def has_unavailable_packages(self): - """Find if any of the packages managed by the module are not available. - - Returns True if one or more of the packages is not available in the - user's Debian distribution or False otherwise. - Returns None if it cannot be reliably determined whether the - packages are available or not. - """ - APT_LISTS_DIR = '/var/lib/apt/lists/' - num_files = len([ - name for name in os.listdir(APT_LISTS_DIR) - if os.path.isfile(os.path.join(APT_LISTS_DIR, name)) - ]) - if num_files < 2: # not counting the lock file - return None - - pkg_components = list(self.module.app.get_components_of_type(Packages)) - if not pkg_components: # This app has no packages to install - return False - - # List of all packages from all Package components - managed_pkgs = (package for component in pkg_components - for package in component.packages) - cache = apt.Cache() - unavailable_pkgs = (pkg_name for pkg_name in managed_pkgs - if pkg_name not in cache) - return any(unavailable_pkgs) - - def get_package_conflicts(self): - """Report list of conflicting packages for the user.""" - package_conflicts, package_conflicts_action = \ - _get_module_package_conflicts(self.module) - if package_conflicts: - package_conflicts = packages_installed(package_conflicts) - - return package_conflicts, package_conflicts_action - def init(module_name, module): """Create a setup helper for a module for later use.""" @@ -212,34 +139,33 @@ def stop(): _force_upgrader.shutdown() -def setup_modules(module_list=None, essential=False, allow_install=True): - """Run setup on selected or essential modules.""" +def setup_apps(app_ids=None, essential=False, allow_install=True): + """Run setup on selected or essential apps.""" logger.info( - 'Running setup for modules, essential - %s, ' - 'selected modules - %s', essential, module_list) - for module_name, module in plinth.module_loader.loaded_modules.items(): - if essential and not _is_module_essential(module): + 'Running setup for apps, essential - %s, ' + 'selected apps - %s', essential, app_ids) + for app in app_module.App.list(): + if essential and not app.info.is_essential: continue - if module_list and module_name not in module_list: + if app_ids and app.app_id not in app_ids: continue + module = sys.modules[app.__module__] module.setup_helper.run(allow_install=allow_install) -def list_dependencies(module_list=None, essential=False): - """Print list of packages required by selected or essential modules.""" - for module_import_path in plinth.module_loader.get_modules_to_load(): - module_name = module_import_path.split('.')[-1] - module = importlib.import_module(module_import_path) - if essential and not _is_module_essential(module): +def list_dependencies(app_ids=None, essential=False): + """Print list of packages required by selected or essential apps.""" + for app in app_module.App.list(): + if essential and not app.info.is_essential: continue - if module_list and module_name not in module_list and \ - '*' not in module_list: + if app_ids and app.app_id not in app_ids and \ + '*' not in app_ids: continue - for component in module.app.get_components_of_type(Packages): + for component in app.get_components_of_type(Packages): for package_name in component.packages: print(package_name) @@ -274,85 +200,68 @@ def _run_setup(): def _run_first_setup(): - """Run setup on essential modules on first setup.""" + """Run setup on essential apps on first setup.""" global is_first_setup_running is_first_setup_running = True # TODO When it errors out, show error in the UI - run_setup_on_modules(None, allow_install=False) + run_setup_on_apps(None, allow_install=False) is_first_setup_running = False def _run_regular_setup(): - """Run setup on all modules also installing required packages.""" + """Run setup on all apps also installing required packages.""" # TODO show notification that upgrades are running if package.is_package_manager_busy(): raise Exception('Package manager is busy.') - all_modules = _get_modules_for_regular_setup() - run_setup_on_modules(all_modules, allow_install=True) + app_ids = _get_apps_for_regular_setup() + run_setup_on_apps(app_ids, allow_install=True) -def _get_modules_for_regular_setup(): - all_modules = plinth.module_loader.loaded_modules.items() +def _get_apps_for_regular_setup(): - def is_setup_required(module): + def is_setup_required(app): """Setup is required for: - 1. essential modules that are not up-to-date - 2. non-essential modules that are installed and need updates + 1. essential apps that are not up-to-date + 2. non-essential app that are installed and need updates """ - if _is_module_essential(module) and \ - not _module_state_matches(module, 'up-to-date'): + if (app.info.is_essential and + app.get_setup_state() != app_module.App.SetupState.UP_TO_DATE): return True - if _module_state_matches(module, 'needs-update'): + if app.get_setup_state() == app_module.App.SetupState.NEEDS_UPDATE: return True return False - return [name for name, module in all_modules if is_setup_required(module)] - - -def _is_module_essential(module): - """Return if a module is an essential module.""" - return getattr(module, 'is_essential', False) - - -def _get_module_package_conflicts(module): - """Return list of packages that conflict with packages of a module.""" - return (getattr(module, 'package_conflicts', - None), getattr(module, 'package_conflicts_action', None)) - - -def _module_state_matches(module, state): - """Return if the current setup state of a module matches given state.""" - return module.setup_helper.get_state() == state + return [ + app.app_id for app in app_module.App.list() if is_setup_required(app) + ] def _set_is_first_setup(): - """Set whether all essential modules have been setup at least once.""" + """Set whether all essential apps have been setup at least once.""" global _is_first_setup - modules = plinth.module_loader.loaded_modules.values() - _is_first_setup = any((module for module in modules - if _is_module_essential(module) - and _module_state_matches(module, 'needs-setup'))) + _is_first_setup = any((app for app in app_module.App.list() + if app.info.is_essential and app.needs_setup())) -def run_setup_on_modules(module_list, allow_install=True): - """Run setup on the given list of modules. +def run_setup_on_apps(app_ids, allow_install=True): + """Run setup on the given list of apps. - module_list is the list of modules to run setup on. If None is given, run - setup on all essential modules only. + apps is the list of apps to run setup on. If None is given, run setup on + all essential apps only. allow_install with or without package installation. When setting up - essential modules, installing packages is not required as FreedomBox - (Plinth) itself has dependencies on all essential modules. + essential apps, installing packages is not required as FreedomBox + (Plinth) itself has dependencies on all essential apps. """ try: - if not module_list: - setup_modules(essential=True, allow_install=allow_install) + if not app_ids: + setup_apps(essential=True, allow_install=allow_install) else: - setup_modules(module_list, allow_install=allow_install) + setup_apps(app_ids, allow_install=allow_install) except Exception as exception: logger.error('Error running setup - %s', exception) raise @@ -512,19 +421,22 @@ class ForceUpgrader(): apps = self._get_list_of_apps_to_force_upgrade() logger.info( - 'Apps needing conffile upgrades: %s', - ', '.join([str(app.app.info.name) for app in apps]) or 'None') + 'Apps needing conffile upgrades: %s', ', '.join( + [str(app_module.App.get(app_id).info.name) for app_id in apps]) + or 'None') need_retry = False - for app, packages in apps.items(): + for app_id, packages in apps.items(): + app = app_module.App.get(app_id) + module = sys.modules[app.__module__] try: - logger.info('Force upgrading app: %s', app.app.info.name) - if app.force_upgrade(app.setup_helper, packages): + logger.info('Force upgrading app: %s', app.info.name) + if module.force_upgrade(module.setup_helper, packages): logger.info('Successfully force upgraded app: %s', - app.app.info.name) + app.info.name) else: logger.info('Ignored force upgrade for app: %s', - app.app.info.name) + app.info.name) except Exception as exception: logger.exception('Error running force upgrade: %s', exception) need_retry = True @@ -534,7 +446,7 @@ class ForceUpgrader(): raise self.TemporaryFailure('Some apps failed to force upgrade.') def _get_list_of_apps_to_force_upgrade(self): - """Return a list of app modules on which to run force upgrade.""" + """Return a list of app on which to run force upgrade.""" packages = self._get_list_of_upgradable_packages() if not packages: # No packages to upgrade return {} @@ -555,8 +467,8 @@ class ForceUpgrader(): apps = defaultdict(dict) for package_name in conffile_packages: - for app in package_apps_map[package_name]: - apps[app][package_name] = conffile_packages[package_name] + for app_id in package_apps_map[package_name]: + apps[app_id][package_name] = conffile_packages[package_name] return apps @@ -576,21 +488,22 @@ class ForceUpgrader(): """ package_apps_map = defaultdict(set) upgradable_packages = set() - for module in plinth.module_loader.loaded_modules.values(): + for app in app_module.App.list(): + module = sys.modules[app.__module__] if not getattr(module, 'force_upgrade', None): # App does not implement force upgrade continue - if not _module_state_matches(module, 'up-to-date'): + if (app.get_setup_state() != app_module.App.SetupState.UP_TO_DATE): # App is not installed. # Or needs an update, let it update first. continue - for component in module.app.get_components_of_type(Packages): + for component in app.get_components_of_type(Packages): upgradable_packages.update(component.packages) for managed_package in component.packages: - package_apps_map[managed_package].add(module) + package_apps_map[managed_package].add(app.app_id) return upgradable_packages.intersection( set(packages)), package_apps_map diff --git a/plinth/signals.py b/plinth/signals.py index c064d4351..e476b2acb 100644 --- a/plinth/signals.py +++ b/plinth/signals.py @@ -9,7 +9,7 @@ from django.dispatch import Signal pre_module_loading = Signal() # Arguments: - -post_module_loading = Signal() +post_app_loading = Signal() # Arguments: module_name post_setup = Signal() diff --git a/plinth/templates/setup.html b/plinth/templates/setup.html index 3d9d78bbf..37cb5ea22 100644 --- a/plinth/templates/setup.html +++ b/plinth/templates/setup.html @@ -13,18 +13,18 @@ {% include "toolbar.html" %} - {% if setup_state == 'up-to-date' %} + {% if setup_state.value == 'up-to-date' %} {% trans "Application installed." %} {% elif not setup_current_operation %}

- {% if setup_state == 'needs-setup' %} + {% if setup_state.value == 'needs-setup' %} {% blocktrans trimmed %} Install this application? {% endblocktrans %} - {% elif setup_state == 'needs-update' %} + {% elif setup_state.value == 'needs-update' %} {% blocktrans trimmed %} This application needs an update. Update now? {% endblocktrans %} @@ -41,7 +41,7 @@ Please wait for a few moments before trying again. {% endblocktrans %} - {% elif setup_helper.has_unavailable_packages %} + {% elif has_unavailable_packages %}

- {% elif package_conflicts and package_conflicts_action != 'ignore' %} + {% elif package_conflicts and package_conflicts_action.value != 'ignore' %}