diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bf0cb8465..9b74d4070 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,7 +31,7 @@ Naming conventions: repository. * Before committing your changes ensure that your code conforms to base code hygiene by running tests (see HACKING.md) and the automatic code formatting - tools `yapf` and `isort`. + tools `yapf` and `isort`. Please check also with `flake8`. * Please include one single feature per merge request, to keep the review simple and focused on one topic. (This might still mean hundreds of lines of code.) Use a branch other than `master`, so you can create multiple merge requests diff --git a/HACKING.md b/HACKING.md index 12431e4e4..01398c259 100644 --- a/HACKING.md +++ b/HACKING.md @@ -1,17 +1,51 @@ # Hacking -## Requirements for Development OS +This document provides reference information for FreedomBox **contribution** hacking **procedures**: +1. [Picking a task to work on](#picking-a-task-to-work-on) +1. [Setting up and using development environments](#development-environments-setting-up-and-their-usage) +1. [Contributing translations + how to make/keep FreedomBox international](#makingkeeping-freedombox-international) +1. [Testing](#testing) +1. [Building user documentation](#building-the-user-documentation-separately) +1. [Submitting your changes](#submitting-your-changes) +1. [Other related stuff](#miscelanea) + +It doesn't cover arquitecture, design choices, or other product internals. + +## Picking a task to work on + +You can report bugs on FreedomBox Service's (Plinth's) [issue +tracker](https://salsa.debian.org/freedombox-team/freedombox/issues). +Newcomers will find easy, self-contained tasks tagged as "beginner". + +Source code for FreedomBox Service is available from +[salsa.debian.org](https://salsa.debian.org/freedombox-team/freedombox). + + + +## Development environments: setting up and their usage + +### Requirements for Development OS FreedomBox is built as part of Debian GNU/Linux. However, you don't need to install Debian to do development for FreedomBox. FreedomBox development is -typically done on a container or a Virtual Machine. +typically done with a container or a Virtual Machine. -* For running a container, you need systemd containers, Git, Python and a +* For running a container, you need systemd containers, Git, Python3 and a sudo-enabled user. This approach is recommended. * For running a VM, you can work on any operating system that can install latest versions of Git, Vagrant and VirtualBox. -## Using Containers +In addition: + +- To run code quality checks you need flake8 and yapf. These may be installed + inside the container with Python3 and pip but installing them on host leads to + smoother development experience. +- To update translation strings on the host machine, you need Django and gettext + to be installed on host machine. These can be installed with Python3 and pip. +- You need Mumble voice chat software to participate in bi-weekly live + development discussions. + +### Using Containers The `./container` script shipped with FreedomBox source code can manage the development environment inside a systemd-nspawn container. @@ -43,7 +77,7 @@ development environment inside a systemd-nspawn container. host$ ./container ssh ``` -### Using after Setup +#### Using after Setup After logging into the container, the source code is available in `/freedombox` directory: @@ -71,7 +105,7 @@ guest$ sudo ./setup.py install Note: This development container has automatic upgrades disabled by default. -### Troubleshooting +#### Troubleshooting * Sometimes `host$ ./container destroy && ./container up` doesn't work. In such cases, try to delete the hidden `.container` folder and then `host$ @@ -79,13 +113,17 @@ Note: This development container has automatic upgrades disabled by default. * Not all kinds of changes are automatically updated. Try `guest$ sudo mount -o remount /freedombox`. -## Using Vagrant + +[back to index](#hacking) + + +### Using Vagrant Use VirtualBox and Vagrant if for some reason the container option is not suitable, such as when you are running non-GNU/Linux machine or a non-systemd machine. -### For Debian GNU/Linux and Derivatives +#### For Debian GNU/Linux and Derivatives 1. Install Git, Vagrant and VirtualBox using apt. @@ -93,7 +131,7 @@ machine. $ sudo apt install git virtualbox vagrant ``` -#### Installing VirtualBox manually +##### Installing VirtualBox manually 1. Add Oracle's key to apt's list of accepted keys. @@ -126,11 +164,11 @@ Example for Buster: $ sudo apt install virtualbox-6.1 ``` -### For Other GNU/Linux Distributions or *BSDs +#### For Other GNU/Linux Distributions or *BSDs 1. Install Git, Vagrant and VirtualBox using your favourite package manager. -### For macOS +#### For macOS 1. Install [Homebrew](https://brew.sh/). @@ -142,7 +180,7 @@ Example for Buster: $ brew cask install vagrant ``` -### For Windows +#### For Windows 1. Install [Git](https://git-scm.com/download/windows), [VirtualBox](https://www.virtualbox.org/wiki/Downloads) and @@ -157,7 +195,7 @@ Example for Buster: 3. Run all the following commands inside Git Bash. -### Setting Up Development Environment Using Vagrant +#### Setting Up Development Environment Using Vagrant Vagrant is a free software command line utility for managing the life cycle of virtual machines. The FreedomBox project provides ready-made virtual machines @@ -187,7 +225,7 @@ and requires about 4.5 GB of disk space. host$ vagrant ssh ``` -### Using the Virtual Machine +#### Using the Virtual Machine After logging into the virtual machine (VM), the source code is available in /vagrant directory: @@ -216,7 +254,48 @@ vm$ sudo ./setup.py install Note: This development virtual machine has automatic upgrades disabled by default. -## Running Tests + +[back to index](#hacking) + + +## Making/keeping FreedomBox international + +### Marking text for translation + +To mark text for translation, FreedomBox uses Django's translation strings. A +module should e.g. `from django.utils.translation import ugettext as _` and wrap +user-facing text with `_()`. Use it like this: + +```python +message = _('Application successfully installed and configured.') +``` + +See [Django +documentation](https://docs.djangoproject.com/en/3.1/topics/i18n/translation/) +for more details. + +### Translating literals (contributing translations) + +The easiest way to start translating is with your browser, by using +[Weblate](https://hosted.weblate.org/projects/freedombox/plinth/). +Your changes will automatically get pushed to the code repository. + +Alternatively, you can directly edit the `.po` file in your language directory +`Plinth/plinth/locale/` and create a pull request (see [CONTRIBUTING.md](CONTRIBUTING.md)). +In that case, consider introducing yourself on #freedombox IRC (irc.debian.org), +because some work may have been done already on the [Debian translators +discussion lists](https://www.debian.org/MailingLists/subscribe) +or the Weblate localization platform. + +For more information on translations: https://wiki.debian.org/FreedomBox/Translate + + +[back to index](#hacking) + + +## Testing + +### Running Tests To run all the tests in the container/VM: @@ -249,7 +328,7 @@ guest$ py.test-3 plinth/tests/test_actions.py::TestActions guest$ py.test-3 plinth/tests/test_actions.py::TestActions::test_is_package_manager_busy ``` -## Running the Test Coverage Analysis +### Running the Test Coverage Analysis To run the coverage tool in the container/VM: @@ -271,11 +350,15 @@ with color-coding in the left margin to indicate which statements or branches were executed via the tests (green) and which statements or branches were not executed (red). -## Running Functional Tests -### Install Dependencies +[back to index](#hacking) -#### For running tests inside the container + +### Functional Tests + +#### Install Dependencies + +##### For running tests inside the container Inside the container run @@ -283,7 +366,7 @@ Inside the container run guest$ cd /freedombox ; sudo plinth/tests/functional/install.sh ``` -#### For running tests inside the VM +##### For running tests inside the VM From the host, provision the virtual machine with tests: @@ -291,7 +374,7 @@ From the host, provision the virtual machine with tests: host$ vagrant provision --provision-with tests ``` -#### For running tests on host machine +##### For running tests on host machine Follow the instructions below to run the tests on host machine. If you wish perform the tests on host machine, the host machine must be based on Debian @@ -311,7 +394,7 @@ host$ sudo apt install smbclient # optional, to test samba you can place at /usr/local/bin/geckodriver . Geckodriver will use whichever binary is named 'firefox' for launching the browser and interacting with it. -### Run FreedomBox Service +#### Run FreedomBox Service *Warning*: Functional tests will change the configuration of the system under test, including changing the hostname and users. Therefore you @@ -324,7 +407,7 @@ interface of FreedomBox should be accessible at https://localhost:4430/. To run samba tests, port 4450 on the host should be forwarded to port 445 on the guest. -### Setup FreedomBox Service for tests +#### Setup FreedomBox Service for tests Via Plinth, create a new user as follows: @@ -334,12 +417,12 @@ Via Plinth, create a new user as follows: This step is optional if a fresh install of Plinth is being tested. Functional tests will create the required user using FreedomBox's first boot process. -### Run Functional Tests +#### Running Functional Tests **When inside a container/VM you will need to target the guest** ```bash -guest$ export FREEDOMBOX_URL=https://localhost FREEDOMBOX_SAMBA_PORT=445 +guest$ export FREEDOMBOX_URL=https://localhost FREEDOMBOX_SSH_PORT=22 FREEDOMBOX_SAMBA_PORT=445 ``` You will be running `py.test-3`. @@ -370,7 +453,11 @@ installed. $ py.test-3 -n 4 --dist=loadfile --include-functional -m essential ``` -## Building the Documentation Separately + +[back to index](#hacking) + + +## Building the User Documentation Separately FreedomBox Service (Plinth) man page is built from DocBook source in the `doc/` directory. FreedomBox manual is downloaded from the wiki is also available @@ -382,47 +469,24 @@ To build the documentation separately, run: guest$ make -C doc ``` -## Repository -FreedomBox Service (Plinth) is available from -[salsa.debian.org](https://salsa.debian.org/freedombox-team/freedombox). +[back to index](#hacking) -## Bugs & TODO -You can report bugs on FreedomBox Service's (Plinth's) [issue -tracker](https://salsa.debian.org/freedombox-team/freedombox/issues). +## Submitting your changes -See CONTRIBUTING.md for information how to best contribute code. +See [CONTRIBUTING.md](CONTRIBUTING.md) for information how to best contribute code. -## Internationalization -To mark text for translation, FreedomBox Service (Plinth) uses Django's -translation strings. A module should e.g. `from django.utils.translation import -ugettext as _` and wrap user-facing text with `_()`. Use it like this: +[back to index](#hacking) -```python -message = _('Application successfully installed and configured.') -``` -## Translations +## Miscelanea -The easiest way to start translating is with your browser, by using -[Weblate](https://hosted.weblate.org/projects/freedombox/plinth/). -Your changes will automatically get pushed to the code repository. - -Alternatively, you can directly edit the `.po` file in your language directory -`Plinth/plinth/locale/` and create a pull request (see CONTRIBUTING.md). -In that case, consider introducing yourself on #freedombox IRC (irc.debian.org), -because some work may have been done already on the [Debian translators -discussion lists](https://www.debian.org/MailingLists/subscribe) -or the Weblate localization platform. - -For more information on translations: https://wiki.debian.org/FreedomBox/Translate - -## Application Icons +### Application Icons When adding a new App into FreedomBox, an icon is needed to represent the app in -the application view and for shortcuts in the front page. The following the +the application view and for shortcuts in the front page. Follow these guidelines for creating an app icon: - Use SVG format. @@ -433,3 +497,19 @@ guidelines for creating an app icon: - Background should be transparent. - Leave no margins and prefer a square icon. If the icon is wide, leave top and bottom margins. If the icon is tall, leave left and right margins. + +### Team Coordination + +The project team coordinates by means of bi-weekly [audio +calls](https://wiki.debian.org/FreedomBox/ProgressCalls) and IRC discussions on +#freedombox-dev at oftc.net. + +### Other Development Informations + +* Generic [contribution overview](https://wiki.debian.org/FreedomBox/Contribute) + * [How to create apps for FreedomBox (Developer Manual)](https://docs.freedombox.org) + * User Experience [design](https://wiki.debian.org/FreedomBox/Design) + * [Code contribution](https://wiki.debian.org/FreedomBox/Contribute/Code) + + +[back to index](#hacking) diff --git a/actions/bepasty b/actions/bepasty index f6bc5eb46..b8bf179a0 100755 --- a/actions/bepasty +++ b/actions/bepasty @@ -148,7 +148,7 @@ def subcommand_setup(arguments): passwords[1]: 'editor', passwords[2]: 'viewer', }, - 'DEFAULT_PERMISSIONS': '', + 'DEFAULT_PERMISSIONS': 'read', } conf_file_write(conf) CONF_FILE.chmod(0o640) diff --git a/actions/calibre b/actions/calibre new file mode 100755 index 000000000..bc8d51cd7 --- /dev/null +++ b/actions/calibre @@ -0,0 +1,76 @@ +#!/usr/bin/python3 +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Configuration helper for calibre. +""" + +import argparse +import json +import pathlib +import shutil +import subprocess + +from plinth.modules import calibre + +LIBRARIES_PATH = pathlib.Path('/var/lib/calibre-server-freedombox/libraries') + + +def parse_arguments(): + """Return parsed command line arguments as dictionary.""" + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + + subparsers.add_parser('list-libraries', + help='Return the list of libraries setup') + subparser = subparsers.add_parser('create-library', + help='Create an empty library') + subparser.add_argument('name', help='Name of the new library') + subparser = subparsers.add_parser('delete-library', + help='Delete a library and its contents') + subparser.add_argument('name', help='Name of the library to delete') + + subparsers.required = True + return parser.parse_args() + + +def subcommand_list_libraries(_): + """Return the list of libraries setup.""" + libraries = [] + for library in LIBRARIES_PATH.glob('*/metadata.db'): + libraries.append(str(library.parent.name)) + + print(json.dumps({'libraries': libraries})) + + +def subcommand_create_library(arguments): + """Create an empty library.""" + calibre.validate_library_name(arguments.name) + library = LIBRARIES_PATH / arguments.name + library.mkdir(mode=0o755) # Raise exception if already exists + subprocess.call( + ['calibredb', '--with-library', library, 'list_categories'], + stdout=subprocess.DEVNULL) + + # Force systemd StateDirectory= logic to assign proper ownership to the + # DynamicUser= + shutil.chown(LIBRARIES_PATH.parent, 'root', 'root') + + +def subcommand_delete_library(arguments): + """Delete a library and its contents.""" + calibre.validate_library_name(arguments.name) + library = LIBRARIES_PATH / arguments.name + shutil.rmtree(library) + + +def main(): + """Parse arguments and perform all duties.""" + arguments = parse_arguments() + + subcommand = arguments.subcommand.replace('-', '_') + subcommand_method = globals()['subcommand_' + subcommand] + subcommand_method(arguments) + + +if __name__ == '__main__': + main() diff --git a/actions/mumble b/actions/mumble index 4a1c3f3c2..e2ec6fba2 100755 --- a/actions/mumble +++ b/actions/mumble @@ -1,14 +1,19 @@ #!/usr/bin/python3 # SPDX-License-Identifier: AGPL-3.0-or-later - """ Configure Mumble server. """ import argparse +import pathlib import sys -from subprocess import Popen, PIPE +from subprocess import PIPE, Popen + +import augeas + +CONFIG_FILE = '/etc/mumble-server.ini' +DATA_DIR = '/var/lib/mumble-server' def parse_arguments(): @@ -17,24 +22,38 @@ def parse_arguments(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + subparsers.add_parser('setup', help='Setup Mumble server') subparsers.add_parser('create-password', help='Setup mumble superuser password') + subparsers.add_parser('get-domain', help='Print Mumble domain') + subparser = subparsers.add_parser('set-domain', help='Setup Mumble domain') + subparser.add_argument('domain_name', help='Domain name to be allowed') + + subparsers.required = True return parser.parse_args() +def subcommand_setup(_): + """Setup Mumble server.""" + aug = load_augeas() + aug.set('.anon/sslCert', DATA_DIR + '/fullchain.pem') + aug.set('.anon/sslKey', DATA_DIR + '/privkey.pem') + aug.save() + + def read_from_stdin(): """Read password from stdin""" return (''.join(sys.stdin)).strip() -def subcommand_create_password(arguments): +def subcommand_create_password(_): """Save superuser password with murmurd command""" password = read_from_stdin() - cmd = ['murmurd', '-ini', '/etc/mumble-server.ini', '-readsupw'] + cmd = ['murmurd', '-ini', CONFIG_FILE, '-readsupw'] proc = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False) # The exit code of the command above seems to be 1 when successful! @@ -45,12 +64,36 @@ def subcommand_create_password(arguments): phrase = "Superuser password set on server" if phrase not in err: - print( - "Error occured while saving password: %s" % err - ) + print("Error occured while saving password: %s" % err) sys.exit(1) +def subcommand_get_domain(_): + """Print the file containing domain name or empty string.""" + domain_file = pathlib.Path('/var/lib/mumble-server/domain-freedombox') + try: + print(domain_file.read_text()) + except FileNotFoundError: + pass + + +def subcommand_set_domain(arguments): + """Write a file containing domain name.""" + domain_file = pathlib.Path('/var/lib/mumble-server/domain-freedombox') + domain_file.write_text(arguments.domain_name) + + +def load_augeas(): + """Initialize Augeas.""" + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) + aug.transform('Php', CONFIG_FILE) + aug.set('/augeas/context', '/files' + CONFIG_FILE) + aug.load() + + return aug + + def main(): """Parse arguments and perform all duties.""" arguments = parse_arguments() diff --git a/actions/quassel b/actions/quassel index e93b90cd7..8da6c8b81 100755 --- a/actions/quassel +++ b/actions/quassel @@ -14,7 +14,7 @@ def parse_arguments(): subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') subparser = subparsers.add_parser('set-domain', - help='Setup Cockpit configuration') + help='Setup Quassel configuration') subparser.add_argument('domain_name', help='Domain name to be allowed') subparsers.required = True diff --git a/actions/ssh b/actions/ssh index d2aee9319..cc777170d 100755 --- a/actions/ssh +++ b/actions/ssh @@ -5,6 +5,7 @@ Configuration helper for SSH server. """ import argparse +import grp import os import pwd import shutil @@ -14,7 +15,7 @@ import sys import augeas -from plinth import action_utils +from plinth import action_utils, utils def parse_arguments(): @@ -32,6 +33,7 @@ def parse_arguments(): help='Set SSH authorized keys') set_keys.add_argument('--username', required=True, type=_managed_user) set_keys.add_argument('--keys', required=True) + set_keys.add_argument('--auth-user', required=True) subparsers.add_parser('get-password-config', help='Get SSH password auth configuration') @@ -44,6 +46,24 @@ def parse_arguments(): return parser.parse_args() +def _validate_user(username, must_be_admin=True): + """Validate a user.""" + if must_be_admin: + try: + admins = grp.getgrnam('admin').gr_mem + except KeyError: + admins = [] + + if username not in admins: + msg = '"{}" is not authorized to perform this action'.format( + username) + raise argparse.ArgumentTypeError(msg) + + password = _read_password() + if not utils.is_authenticated_user(username, password): + raise argparse.ArgumentTypeError("Invalid credentials") + + def _managed_user(username): """Raise an error if the user is root.""" if pwd.getpwnam(username).pw_gid == 0: @@ -52,6 +72,11 @@ def _managed_user(username): return username +def _read_password(): + """Read the password from stdin.""" + return ''.join(sys.stdin) + + def subcommand_setup(arguments): """Setup Open SSH server. @@ -91,6 +116,10 @@ def subcommand_get_keys(arguments): def subcommand_set_keys(arguments): """Set SSH authorized keys.""" user = arguments.username + auth_user = arguments.auth_user + + must_be_admin = user != auth_user + _validate_user(auth_user, must_be_admin=must_be_admin) ssh_folder = os.path.join(get_user_homedir(user), '.ssh') key_file_path = os.path.join(ssh_folder, 'authorized_keys') diff --git a/actions/upgrades b/actions/upgrades index c3c8e9975..36c6cb945 100755 --- a/actions/upgrades +++ b/actions/upgrades @@ -11,16 +11,16 @@ import re import subprocess import sys -from plinth.action_utils import run_apt_command +from plinth.action_utils import run_apt_command, service_restart from plinth.modules.apache.components import check_url -from plinth.modules.upgrades import (get_current_release, is_backports_current, - SOURCES_LIST) +from plinth.modules.upgrades import (BACKPORTS_SOURCES_LIST, SOURCES_LIST, + get_current_release, is_backports_current) AUTO_CONF_FILE = '/etc/apt/apt.conf.d/20auto-upgrades' LOG_FILE = '/var/log/unattended-upgrades/unattended-upgrades.log' DPKG_LOG_FILE = '/var/log/unattended-upgrades/unattended-upgrades-dpkg.log' -BACKPORTS_RELEASE_FILE_URL = \ - 'https://deb.debian.org/debian/dists/{}-backports/Release' +RELEASE_FILE_URL = \ + 'https://deb.debian.org/debian/dists/{}/Release' APT_PREFERENCES_FREEDOMBOX = '''Explanation: This file is managed by FreedomBox, do not edit. Explanation: Allow carefully selected updates to 'freedombox' from backports. @@ -75,6 +75,9 @@ Pin: release a=buster-backports Pin-Priority: 500 ''' +dist_upgrade_flag = pathlib.Path( + '/var/lib/freedombox/dist-upgrade-in-progress') + def parse_arguments(): """Return parsed command line arguments as dictionary""" @@ -95,20 +98,28 @@ def parse_arguments(): setup_repositories.add_argument('--develop', required=False, default=False, action='store_true', help='Development mode') + setup_repositories.add_argument( + '--test-upgrade', required=False, default=False, action='store_true', + help='Test dist-upgrade from stable to testing') subparsers.required = True return parser.parse_args() -def subcommand_run(_): +def _run(): """Run unattended-upgrades""" subprocess.run(['dpkg', '--configure', '-a']) run_apt_command(['--fix-broken', 'install']) + subprocess.Popen(['systemctl', 'start', 'freedombox-manual-upgrade'], + stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, close_fds=True, + start_new_session=True) + + +def subcommand_run(_): + """Run unattended-upgrades""" try: - subprocess.Popen(['systemctl', 'start', 'freedombox-manual-upgrade'], - stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL, close_fds=True, - start_new_session=True) + _run() except FileNotFoundError: print('Error: systemctl is not available.', file=sys.stderr) sys.exit(2) @@ -117,24 +128,28 @@ def subcommand_run(_): sys.exit(3) -def subcommand_check_auto(_): - """Check if automatic upgrades are enabled""" +def _check_auto(): + """Check if automatic upgrades are enabled.""" arguments = [ 'apt-config', 'shell', 'UpdateInterval', 'APT::Periodic::Update-Package-Lists' ] - try: - output = subprocess.check_output(arguments).decode() - except subprocess.CalledProcessError as error: - print('Error: {0}'.format(error), file=sys.stderr) - sys.exit(1) - + output = subprocess.check_output(arguments).decode() update_interval = 0 match = re.match(r"UpdateInterval='(.*)'", output) if match: update_interval = int(match.group(1)) - print(bool(update_interval)) + return bool(update_interval) + + +def subcommand_check_auto(_): + """Check if automatic upgrades are enabled""" + try: + print(_check_auto()) + except subprocess.CalledProcessError as error: + print('Error: {0}'.format(error), file=sys.stderr) + sys.exit(1) def subcommand_enable_auto(_): @@ -180,14 +195,16 @@ def _get_protocol(): return 'http' -def _is_release_file_available(protocol, dist): - """Return whether the release for backports is available.""" +def _is_release_file_available(protocol, dist, backports=False): + """Return whether the release for dist[-backports] is available.""" wrapper = None if protocol == 'tor+http': wrapper = 'torsocks' - result = check_url(BACKPORTS_RELEASE_FILE_URL.format(dist), - wrapper=wrapper) + if backports: + dist += '-backports' + + result = check_url(RELEASE_FILE_URL.format(dist), wrapper=wrapper) return result == 'passed' @@ -238,12 +255,12 @@ def _check_and_backports_sources(develop=False): if protocol == 'tor+http': print('Package download over Tor is enabled.') - if not _is_release_file_available(protocol, dist): + if not _is_release_file_available(protocol, dist, backports=True): print(f'Release file for {dist}-backports is not available yet.') return print(f'{dist}-backports is now available. Adding to sources.') - _add_backports_sources(SOURCES_LIST, protocol, dist) + _add_backports_sources(BACKPORTS_SOURCES_LIST, protocol, dist) # In case of dist upgrade, rewrite the preferences file. _add_apt_preferences() @@ -271,6 +288,120 @@ def _add_apt_preferences(): file_handle.write(APT_PREFERENCES_APPS) +def _check_and_dist_upgrade(develop=False, test_upgrade=False): + """Check for new stable release. If there is one, and updates are + enabled, perform dist-upgrade. + + If develop is True, check for possible upgrade from stable to testing. + If test_upgrade is True, also perform the upgrade to testing. + """ + if dist_upgrade_flag.exists(): + print('Continuing previously interrupted dist-upgrade.') + _perform_dist_upgrade() + return + + release, dist = get_current_release() + if release in ['unstable', 'testing']: + print(f'System release is {release}. Skip checking for new stable ' + 'release.') + return + + check_dists = ['stable'] + if develop: + check_dists.append('testing') + + codename = None + for check_dist in check_dists: + url = RELEASE_FILE_URL.format(check_dist) + command = ['curl', '--silent', '--location', '--fail', url] + protocol = _get_protocol() + if protocol == 'tor+http': + command.insert(0, 'torsocks') + print('Package download over Tor is enabled.') + + try: + output = subprocess.check_output(command).decode() + except (subprocess.CalledProcessError, FileNotFoundError): + print(f'Error while checking for new {check_dist} release') + else: + for line in output.split('\n'): + if line.startswith('Codename:'): + codename = line.split()[1] + + if not codename: + print('"Codename:" not found in release file.') + return + + if codename == dist: + print(f'{dist} is already the latest release.') + return + + if not _check_auto(): + print('Automatic updates are not enabled.') + return + + if check_dist == 'testing' and not test_upgrade: + print(f'Skipping dist-upgrade to {check_dist} since --test-upgrade is ' + 'not set.') + return + + output = subprocess.check_output(['df', '--output=avail,pcent', '/']) + output = output.decode().split('\n')[1].split() + free_space, free_percent = int(output[0]), int(output[1][:-1]) + if free_space < 1000000 or free_percent < 10: + print('Not enough free space in /.') + return + + print(f'Upgrading from {dist} to {codename}...') + if check_dist == 'testing': + with open(SOURCES_LIST, 'r') as sources_list: + lines = sources_list.readlines() + + with open(SOURCES_LIST, 'w') as sources_list: + for line in lines: + new_line = line.replace('stable', codename) + if 'security' in new_line: + new_line = new_line.replace('/updates', '-security') + + sources_list.write(new_line) + + print('Dist upgrade in progress. Setting flag.') + dist_upgrade_flag.touch(mode=0o660) + _perform_dist_upgrade() + + +def _perform_dist_upgrade(): + """Perform upgrade to next release of Debian.""" + run_apt_command(['update']) + run_apt_command(['install', 'base-files']) + run_apt_command(['install', 'unattended-upgrades']) + subprocess.run(['unattended-upgrade', '--verbose']) + + # Remove obsolete packages that may prevent other packages from + # upgrading. + run_apt_command(['remove', 'libgcc1']) + + # Hold packages known to have conffile prompts. FreedomBox service + # will handle their upgrade later. + HOLD_PACKAGES = ['firewalld', 'radicale'] + try: + subprocess.run(['apt-mark', 'hold'] + HOLD_PACKAGES) + run_apt_command(['full-upgrade']) + finally: + subprocess.run(['apt-mark', 'unhold'] + HOLD_PACKAGES) + + run_apt_command(['autoremove']) + + print('Dist upgrade complete. Removing flag.') + if dist_upgrade_flag.exists(): + dist_upgrade_flag.unlink() + + # FreedomBox Service may have tried to restart several times + # during the upgrade, but failed. It will stop trying after 5 + # retries. Restart it once more to ensure it is running. + service_restart('plinth') + + def subcommand_setup(_): """Setup apt preferences.""" _add_apt_preferences() @@ -282,8 +413,11 @@ def subcommand_setup_repositories(arguments): Repositories list for now only contains the backports. If the file exists, assume that it contains backports. + Check if a new stable release is available, and perform + dist-upgrade if updates are enabled. """ _check_and_backports_sources(arguments.develop) + _check_and_dist_upgrade(arguments.develop, arguments.test_upgrade) def main(): diff --git a/actions/users b/actions/users index bbc26b136..fb91987ef 100755 --- a/actions/users +++ b/actions/users @@ -14,8 +14,9 @@ import sys import augeas -from plinth import action_utils +from plinth import action_utils, utils +INPUT_LINES = None ACCESS_CONF = '/etc/security/access.conf' LDAPSCRIPTS_CONF = '/etc/ldapscripts/freedombox-ldapscripts.conf' @@ -31,10 +32,13 @@ def parse_arguments(): subparser = subparsers.add_parser('create-user', help='Create an LDAP user') subparser.add_argument('username', help='Name of the LDAP user to create') + subparser.add_argument('--auth-user', required=True) subparser = subparsers.add_parser('remove-user', help='Delete an LDAP user') - subparser.add_argument('username', help='Name of the LDAP user to delete') + subparser.add_argument( + 'username', help='Name of the LDAP user to delete. If the username is ' + 'the last admin user, a password should be provided through STDIN.') subparser = subparsers.add_parser('rename-user', help='Rename an LDAP user') @@ -45,6 +49,7 @@ def parse_arguments(): help='Set the password of an LDAP user') subparser.add_argument( 'username', help='Name of the LDAP user to set the password for') + subparser.add_argument('--auth-user', required=True) subparser = subparsers.add_parser('create-group', help='Create an LDAP group') @@ -65,12 +70,14 @@ def parse_arguments(): help='Add an LDAP user to an LDAP group') subparser.add_argument('username', help='LDAP user to add to group') subparser.add_argument('groupname', help='LDAP group to add the user to') + subparser.add_argument('--auth-user', required=False) subparser = subparsers.add_parser('set-user-status', help='Set user as active or inactive') subparser.add_argument('username', help='User to change status') subparser.add_argument('status', choices=['active', 'inactive'], help='New status of the user') + subparser.add_argument('--auth-user', required=True) subparser = subparsers.add_parser( 'remove-user-from-group', @@ -78,6 +85,7 @@ def parse_arguments(): subparser.add_argument('username', help='LDAP user to remove from group') subparser.add_argument('groupname', help='LDAP group to remove the user from') + subparser.add_argument('--auth-user', required=False) help_get_group_users = 'Get the list of all users in an LDAP group' subparser = subparsers.add_parser('get-group-users', @@ -90,6 +98,38 @@ def parse_arguments(): return parser.parse_args() +def validate_user(username, must_be_admin=True): + """Validate a user.""" + if must_be_admin: + admins = get_admin_users() + + if not admins: + # any user is valid + return + + if not username: + msg = 'Argument --auth-user is required' + raise argparse.ArgumentTypeError(msg) + + if username not in admins: + msg = '"{}" is not authorized to perform this action'.format( + username) + raise argparse.ArgumentTypeError(msg) + + if not username: + msg = 'Argument --auth-user is required' + raise argparse.ArgumentTypeError(msg) + + validate_password(username) + + +def validate_password(username): + """Raise an error if the user password is invalid.""" + password = read_password(last=True) + if not utils.is_authenticated_user(username, password): + raise argparse.ArgumentTypeError("Invalid credentials") + + def subcommand_first_setup(_): """Perform initial setup of LDAP.""" # Avoid reconfiguration of slapd during module upgrades, because @@ -243,18 +283,36 @@ def disconnect_samba_user(username): raise -def read_password(): - """Read the password from stdin.""" - return ''.join(sys.stdin) +def get_input_lines(): + """Return list of input lines from stdin.""" + global INPUT_LINES + if INPUT_LINES is None: + INPUT_LINES = [line.strip() for line in sys.stdin] + return INPUT_LINES + + +def read_password(last=False): + """Return the password. + + Set last=True to read password from last line of the input. + + """ + line = -1 if last else 0 + return get_input_lines()[line] def subcommand_create_user(arguments): """Create an LDAP user, set password and flush cache.""" - _run(['ldapadduser', arguments.username, 'users']) + username = arguments.username + auth_user = arguments.auth_user + + validate_user(auth_user) + + _run(['ldapadduser', username, 'users']) password = read_password() - set_user_password(arguments.username, password) + set_user_password(username, password) flush_cache() - set_samba_user(arguments.username, password) + set_samba_user(username, password) def subcommand_remove_user(arguments): @@ -262,6 +320,10 @@ def subcommand_remove_user(arguments): username = arguments.username groups = get_user_groups(username) + # require authentication if the user is last admin user + if get_group_users('admin') == [username]: + validate_password(username) + delete_samba_user(username) for group in groups: @@ -314,9 +376,58 @@ def set_samba_user(username, password): def subcommand_set_user_password(arguments): """Set a user's password.""" + username = arguments.username + auth_user = arguments.auth_user + + must_be_admin = username != auth_user + validate_user(auth_user, must_be_admin=must_be_admin) + password = read_password() - set_user_password(arguments.username, password) - set_samba_user(arguments.username, password) + set_user_password(username, password) + set_samba_user(username, password) + + +def get_admin_users(): + """Returns list of members in the admin group. + + Raises an error if the slapd service is not running. + + """ + admin_users = [] + + try: + output = subprocess.check_output([ + 'ldapsearch', '-LLL', '-Q', '-Y', 'EXTERNAL', '-H', 'ldapi:///', + '-o', 'ldif-wrap=no', '-s', 'base', '-b', + 'cn=admin,ou=groups,dc=thisbox', 'memberUid' + ]).decode() + except subprocess.CalledProcessError as error: + if error.returncode == 32: + # no entries found + return [] + raise + + for line in output.splitlines(): + if line.startswith('memberUid: '): + user = line.split('memberUid: ', 1)[1].strip() + admin_users.append(user) + + return admin_users + + +def get_group_users(groupname): + """Returns list of members in the group.""" + try: + process = _run(['ldapgid', '-P', groupname], stdout=subprocess.PIPE) + except subprocess.CalledProcessError: + return [] # Group does not exist + + output = process.stdout.decode() + # extract users from output, example: 'admin:*:10001:user1,user2' + users = output.rsplit(':')[-1].strip().split(',') + if users == ['']: + return [] + return users def get_user_groups(username): @@ -371,10 +482,14 @@ def subcommand_create_group(arguments): def subcommand_remove_group(arguments): """Remove an LDAP group.""" - if group_exists(arguments.groupname): - _run(['ldapdeletegroup', arguments.groupname]) + groupname = arguments.groupname - flush_cache() + if groupname == 'admin': + raise argparse.ArgumentTypeError("Can't remove the group 'admin'") + + if group_exists(groupname): + _run(['ldapdeletegroup', groupname]) + flush_cache() def add_user_to_group(username, groupname): @@ -385,7 +500,12 @@ def add_user_to_group(username, groupname): def subcommand_add_user_to_group(arguments): """Add an LDAP user to an LDAP group.""" - add_user_to_group(arguments.username, arguments.groupname) + groupname = arguments.groupname + + if groupname == 'admin': + validate_user(arguments.auth_user) + + add_user_to_group(arguments.username, groupname) flush_cache() @@ -396,31 +516,31 @@ def remove_user_from_group(username, groupname): def subcommand_remove_user_from_group(arguments): """Remove an LDAP user from an LDAP group.""" - remove_user_from_group(arguments.username, arguments.groupname) + username = arguments.username + groupname = arguments.groupname + + if groupname == 'admin': + validate_user(arguments.auth_user) + + remove_user_from_group(username, groupname) flush_cache() - if arguments.groupname == 'freedombox-share': - disconnect_samba_user(arguments.username) + if groupname == 'freedombox-share': + disconnect_samba_user(username) def subcommand_get_group_users(arguments): """Get the list of users of an LDAP group.""" - try: - process = _run(['ldapgid', '-P', arguments.groupname], - stdout=subprocess.PIPE) - except subprocess.CalledProcessError: - return # Group does not exist, return empty list - - output = process.stdout.decode() - users = output.rsplit(':')[-1] - if users: - for user in users.strip().split(','): - print(user) + for user in get_group_users(arguments.groupname): + print(user) def subcommand_set_user_status(arguments): """Set the status of the user.""" username = arguments.username status = arguments.status + auth_user = arguments.auth_user + + validate_user(auth_user) if status == 'active': flag = '-e' diff --git a/container b/container index b82276da2..5ebf08bce 100755 --- a/container +++ b/container @@ -286,11 +286,11 @@ def _get_systemd_nspawn_version(): def _download_file(url, target_file, force=False): """Download a file from remote URL.""" - if target_file.exists() and not force: - return - - if force: - os.remove(target_file) + if target_file.exists(): + if force: + os.remove(target_file) + else: + return partial_file = target_file.with_suffix(target_file.suffix + '.partial') @@ -480,6 +480,7 @@ def _setup_nm_connection(distribution): 'connection.type': '802-3-ethernet', 'connection.interface-name': _get_interface_name(distribution), 'connection.autoconnect': 'yes', + 'connection.zone': 'trusted', 'ipv4.method': 'shared', } subprocess.run(['sudo', 'nmcli', 'connection', 'add'] + @@ -695,6 +696,11 @@ def _destroy(distribution): except FileNotFoundError: pass + connection_name = f'fbx-{distribution}-shared' + logger.info('Removing Network Manager connection %s', connection_name) + subprocess.run(['sudo', 'nmcli', 'connection', 'delete', connection_name], + stdout=subprocess.DEVNULL) + logger.info('Keeping downloaded image: %s', _get_compressed_image_path(distribution)) @@ -805,8 +811,12 @@ def _get_latest_image_timestamp(distribution): def _is_update_required(distribution): """Compare local image timestamp against the latest image timestamp.""" - filename = URLS[distribution].split('/')[-1] - local_image_timestamp = os.path.getmtime(work_directory / filename) + file_path = work_directory / URLS[distribution].split('/')[-1] + + if not file_path.exists(): + return True + + local_image_timestamp = os.path.getmtime(file_path) one_day = datetime.timedelta(days=1).total_seconds() latest_image_timestamp = _get_latest_image_timestamp(distribution) return latest_image_timestamp - local_image_timestamp > one_day diff --git a/debian/changelog b/debian/changelog index 6d6bedaae..755b12545 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,74 @@ +plinth (20.15) unstable; urgency=medium + + [ Coucouf ] + * Translated using Weblate (French) + * Translated using Weblate (French) + * Translated using Weblate (French) + * Translated using Weblate (French) + + [ Joseph Nuthalapati ] + * bepasty: Change default permissions to 'read' + * calibre: Add new e-book library app + * calibre: Minor changes to app description + * container: Handle edge cases with container update + + [ Fioddor Superconcentrado ] + * HACKING: Add extra development requirements + * CONTRIBUTING: Require flake8 compliance + * Translated using Weblate (Spanish) + * HACKING.md: Re-organised contents according to onboarding journey + * Translated using Weblate (Spanish) + + [ Sunil Mohan Adapa ] + * module_loader, web_framework: Update console log messages + * dynamicdns: Drop unnecessary code to set app as enabled + * pagekite: Don't announce unconfigured kite as a valid domain + * pagekite: Don't update names module if not installed + * tor: Don't check if enabled when not installed + * tests: functional: Simplify calling the login helper + * doc: Before fetching, drop all old to cleanup deleted pages/images + * coturn: Don't handle certificates if not installed + * quassel: Don't handle certificates if not installed + * quassel: Fix minor typo + * mumble: Store and use a single domain for TLS certificate setup + * doc: dev: Link to list of potential apps from tutorial + * coturn: Don't handle certificates if not installed + * quassel: Don't handle certificates if not installed + * users: Deal with admin user already existing during first boot + * users: cosmetic: Yapf refactoring + * *: Minor flake8 fixes + * debian/control: Add sshpass as build dependency + + [ Michael Breidenbach ] + * Translated using Weblate (Swedish) + + [ ssantos ] + * Translated using Weblate (Portuguese) + + [ Phil Morrell ] + * mumble: configure letsencrypt component + + [ Burak Yavuz ] + * Translated using Weblate (Turkish) + + [ Petter Reinholdtsen ] + * Translated using Weblate (Norwegian Bokmål) + + [ Veiko Aasa ] + * ssh: action script: Require user credentials when editing ssh keys + * users: Require admin credentials when creating or editing a user + * container: Assign virtual network interface to trusted firewall zone + + [ James Valleroy ] + * upgrades: Extend function to check for normal dist availability + * upgrades: Detect and upgrade to next stable release + * upgrades: Set a flag so interrupted dist-upgrade can be continued + * upgrades: Check free space before dist-upgrade + * locale: Update translation strings + * doc: Fetch latest manual + + -- James Valleroy Mon, 05 Oct 2020 19:25:41 -0400 + plinth (20.14.1~bpo10+1) buster-backports; urgency=high * Rebuild for buster-backports. diff --git a/debian/control b/debian/control index c3c10670d..ce92fd915 100644 --- a/debian/control +++ b/debian/control @@ -32,6 +32,7 @@ Build-Depends: python3-flake8, python3-gi, python3-markupsafe, + python3-pampy, python3-paramiko, python3-psutil, python3-pytest, @@ -43,6 +44,7 @@ Build-Depends: python3-setuptools, python3-setuptools-git, python3-yaml, + sshpass, xmlto, xsltproc Standards-Version: 4.5.0 @@ -104,6 +106,7 @@ Depends: python3-django-stronghold, python3-gi, python3-markupsafe, + python3-pampy, python3-paramiko, python3-psutil, python3-requests, diff --git a/doc/Makefile b/doc/Makefile index 94c0ee0e6..4e63015cb 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -60,13 +60,21 @@ install: all # require further reviews. fetch-main-list:=$(foreach lang,$(MANUAL_LANGUAGES),fetch-main-$(lang)) fetch-pages-list:=$(foreach lang,$(MANUAL_LANGUAGES),fetch-pages-$(lang)) +fetch-cleanup-list:=$(foreach lang,$(MANUAL_LANGUAGES),fetch-cleanup-$(lang)) -.PHONY: fetch $(fetch-main-list) $(fetch-pages-list) +.PHONY: fetch $(fetch-main-list) $(fetch-pages-list) $(fetch-cleanup-list) fetch: $(fetch-main-list) $(fetch-pages-list) +# Remove raw wiki pages and images before fetching to drop items deleted +# upstream. +featch-cleanup-%: lang = $* +$(fetch-cleanup-list): fetch-cleanup-%: + rm -f manual/$(lang)/*.raw.wiki + rm -f manual/$(lang)/images/*.png manual/$(lang)/images/*.jpg + fetch-main-%: lang = $* fetch-main-%: lang-fragment = $(subst en/,,$*/) -$(fetch-main-list): fetch-main-%: +$(fetch-main-list): fetch-main-%: fetch-cleanup-% MANUAL_URL_RAW_LANG=$(subst {lang-fragment},$(lang-fragment),$(MANUAL_URL_RAW)) ; \ wget --quiet --user-agent=Firefox \ -O manual/$(lang)/freedombox-manual.raw.wiki $${MANUAL_URL_RAW_LANG} @@ -82,7 +90,7 @@ $(fetch-main-list): fetch-main-%: fetch-pages-%: lang = $* fetch-pages-%: lang-fragment = $(subst en/,,$*/) -$(fetch-pages-list): fetch-pages-%: +$(fetch-pages-list): fetch-pages-%: fetch-cleanup-% MANUAL_URL_LANG=$(subst {lang-fragment},$(lang-fragment),$(MANUAL_URL_RAW)) ; \ PAGES=$$(wget --quiet --user-agent=Firefox -O - $${MANUAL_URL_LANG} | \ sed -n -e "s|.*<`. For the purpose of this tutorial, let us pick Transmission. Transmission daemon handles Bitorrent file sharing. BitTorrent is a peer-to-peer file sharing protocol. diff --git a/doc/manual/en/Cockpit.raw.wiki b/doc/manual/en/Cockpit.raw.wiki index 5d284d1f1..80282d2fd 100644 --- a/doc/manual/en/Cockpit.raw.wiki +++ b/doc/manual/en/Cockpit.raw.wiki @@ -1,6 +1,6 @@ #language en -~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[FreedomBox/Manual/Cockpit|Español]] -~ +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Cockpit|Español]] -~ <> @@ -26,7 +26,7 @@ Ensure that the user account on !FreedomBox that will used for Cockpit is part o {{attachment:cockpit-admin-user.png}} -Launch the Cockpit web interface. Login using the configured user account. +Launch the Cockpit web interface. Login using the configured user account. Be sure to check the box to "reuse my password for privileged tasks", otherwise you will not be able to perform various tasks such as configuring raid, or editing users, once logged in. {{attachment:cockpit-login.png}} diff --git a/doc/manual/en/Contribute.raw.wiki b/doc/manual/en/Contribute.raw.wiki index 9e91a1f75..f332be74b 100644 --- a/doc/manual/en/Contribute.raw.wiki +++ b/doc/manual/en/Contribute.raw.wiki @@ -31,7 +31,7 @@ Please check next [[FreedomBox/ProgressCalls|progress calls]] to keep yourself o === Add an Application === -If you are a developer and wish to see an application available in !FreedomBox, you can contribute by adding the application to !FreedomBox. See the [[https://docs.freedombox.org/|FreedomBox Developer Manual]]. +If you are a developer and wish to see an application available in !FreedomBox, you can contribute by adding the application to !FreedomBox. See the [[https://docs.freedombox.org/|FreedomBox Developer Manual]]. Many applications that can be added to !FreedomBox have been identified on the [[FreedomBox/LeavingTheCloud|leaving the cloud]] page. === Bugs === diff --git a/doc/manual/en/I2P.raw.wiki b/doc/manual/en/I2P.raw.wiki index 8581473cb..9c1afc6e5 100644 --- a/doc/manual/en/I2P.raw.wiki +++ b/doc/manual/en/I2P.raw.wiki @@ -24,13 +24,6 @@ The following services are offered via I2P in !FreedomBox by default. Additional * '''IRC network''': I2P network contains an IRC network called Irc2P. This network hosts the I2P project's official IRC channel among other channels. This service is enabled by default in !FreedomBox. To use it, open your favourite IRC client. Then configure it to connect to host ''freedombox.local'' (or your !FreedomBox's local IP address) with port number ''6668''. This service is available only when you are reaching !FreedomBox using local network (networks in internal zone) and not available when connecting to !FreedomBox from the Internet. One exception to this is when you connect to !FreedomBox's VPN service from Internet you can still use this service. * '''I2P router console''': This is the central management interface for I2P. It shows the current status of I2P, bandwidth statistics and allows modifying various configuration settings. You can tune your participation in the I2P network and use/edit a list of your favourite I2P sites (eepsites). Only logged-in users belonging to 'Manage I2P application' group can use this service. -=== Port Forwarding === - -If your !FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for I2P: - * TCP 4444 - * TCP 4445 - * TCP 6668 - ## END_INCLUDE Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. diff --git a/doc/manual/en/RaspberryPi4B.raw.wiki b/doc/manual/en/RaspberryPi4B.raw.wiki index bdb219ef0..d2380c822 100644 --- a/doc/manual/en/RaspberryPi4B.raw.wiki +++ b/doc/manual/en/RaspberryPi4B.raw.wiki @@ -12,7 +12,7 @@ Please do not expect any output on a monitor connected via HDMI to this device a Before downloading and using !FreedomBox you need to ensure that latest [[https://github.com/pftf/RPi4|Raspberry Pi 4 UEFI Firmware]] is available on an SD card. See [[https://github.com/pftf/RPi4#installation|instructions]] on how to create an SD card with this firmware. The gist is that you download the firmware zip files, erase the SD card, create a FAT partition, unzip the files to SD card and finally insert the SD card into the board. -!FreedomBox images meant for all "arm64" hardware work well for this device. Currently only "testing" images work and "stable" images. However, the firmware must present in SD card. This means that !FreedomBox itself must be present on a different disk such as a USB flash disk or USB SATA disk. Follow the instructions on the download page to create a !FreedomBox USB disk and boot the device. These images also work well for USB 2.0 and USB 3.0 disk drives and the process for preparing them is same as for an SD card. +!FreedomBox images meant for all "arm64" hardware work well for this device. Currently only "testing" images work and not "stable" images. However, the firmware must be present in an SD card. This means that !FreedomBox itself must be present on a different disk such as a USB flash disk or USB SATA disk. Follow the instructions on the download page to create a !FreedomBox USB disk and boot the device. These images also work well for USB 2.0 and USB 3.0 disk drives and the process for preparing them is same as for an SD card. An alternative to downloading these images is to install Debian on the device and then install !FreedomBox on it. diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki index cb765df02..f8e335ae8 100644 --- a/doc/manual/en/ReleaseNotes.raw.wiki +++ b/doc/manual/en/ReleaseNotes.raw.wiki @@ -10,6 +10,39 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 20.15 (2020-10-05) == + +=== Highlights === + + * calibre: Add new e-book library app + * mumble: configure letsencrypt component + * upgrades: Detect and upgrade to next stable release + +=== Other Changes === + + * bepasty: Change default permissions to 'read' + * container: Assign virtual network interface to trusted firewall zone + * container: Handle edge cases with container update + * coturn: Don't handle certificates if not installed + * debian/control: Add sshpass as build dependency + * doc: Before fetching, drop all old to cleanup deleted pages/images + * doc: dev: Link to list of potential apps from tutorial + * dynamicdns: Drop unnecessary code to set app as enabled + * locale: Update translations for French, Norwegian Bokmål, Portuguese, Spanish, Swedish, Turkish + * module_loader, web_framework: Update console log messages + * mumble: Store and use a single domain for TLS certificate setup + * pagekite: Don't announce unconfigured kite as a valid domain + * pagekite: Don't update names module if not installed + * quassel: Don't handle certificates if not installed + * ssh: action script: Require user credentials when editing ssh keys + * tests: functional: Simplify calling the login helper + * tor: Don't check if enabled when not installed + * upgrades: Check free space before dist-upgrade + * upgrades: Extend function to check for normal dist availability + * upgrades: Set a flag so interrupted dist-upgrade can be continued + * users: Deal with admin user already existing during first boot + * users: Require admin credentials when creating or editing a user + == FreedomBox 20.14.1 (2020-09-23) == * cockpit: Don't show home page icon to non-admin users diff --git a/doc/manual/es/Cockpit.raw.wiki b/doc/manual/es/Cockpit.raw.wiki index a21dd5075..edae7cd34 100644 --- a/doc/manual/es/Cockpit.raw.wiki +++ b/doc/manual/es/Cockpit.raw.wiki @@ -26,7 +26,7 @@ Asegúrate de que la cuenta de usuario de !FreedomBox que se empleará con Cockp {{attachment:cockpit-admin-user.png}} -Arranca el interfaz web de Cockpit. Ingresa con la cuenta de usuario configurada. +Arranca el interfaz web de Cockpit. Ingresa con la cuenta de usuario configurada. Asegúrate de marcar la caja "reusar mi contraseña para tareas restrigidas", de otro modo una vez dentro no podrás realizas algunas tareas como configurar RAID o editar usuarios. {{attachment:cockpit-login.png}} diff --git a/doc/manual/es/RaspberryPi4B.raw.wiki b/doc/manual/es/RaspberryPi4B.raw.wiki index bdb219ef0..d2380c822 100644 --- a/doc/manual/es/RaspberryPi4B.raw.wiki +++ b/doc/manual/es/RaspberryPi4B.raw.wiki @@ -12,7 +12,7 @@ Please do not expect any output on a monitor connected via HDMI to this device a Before downloading and using !FreedomBox you need to ensure that latest [[https://github.com/pftf/RPi4|Raspberry Pi 4 UEFI Firmware]] is available on an SD card. See [[https://github.com/pftf/RPi4#installation|instructions]] on how to create an SD card with this firmware. The gist is that you download the firmware zip files, erase the SD card, create a FAT partition, unzip the files to SD card and finally insert the SD card into the board. -!FreedomBox images meant for all "arm64" hardware work well for this device. Currently only "testing" images work and "stable" images. However, the firmware must present in SD card. This means that !FreedomBox itself must be present on a different disk such as a USB flash disk or USB SATA disk. Follow the instructions on the download page to create a !FreedomBox USB disk and boot the device. These images also work well for USB 2.0 and USB 3.0 disk drives and the process for preparing them is same as for an SD card. +!FreedomBox images meant for all "arm64" hardware work well for this device. Currently only "testing" images work and not "stable" images. However, the firmware must be present in an SD card. This means that !FreedomBox itself must be present on a different disk such as a USB flash disk or USB SATA disk. Follow the instructions on the download page to create a !FreedomBox USB disk and boot the device. These images also work well for USB 2.0 and USB 3.0 disk drives and the process for preparing them is same as for an SD card. An alternative to downloading these images is to install Debian on the device and then install !FreedomBox on it. diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki index cb765df02..f8e335ae8 100644 --- a/doc/manual/es/ReleaseNotes.raw.wiki +++ b/doc/manual/es/ReleaseNotes.raw.wiki @@ -10,6 +10,39 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 20.15 (2020-10-05) == + +=== Highlights === + + * calibre: Add new e-book library app + * mumble: configure letsencrypt component + * upgrades: Detect and upgrade to next stable release + +=== Other Changes === + + * bepasty: Change default permissions to 'read' + * container: Assign virtual network interface to trusted firewall zone + * container: Handle edge cases with container update + * coturn: Don't handle certificates if not installed + * debian/control: Add sshpass as build dependency + * doc: Before fetching, drop all old to cleanup deleted pages/images + * doc: dev: Link to list of potential apps from tutorial + * dynamicdns: Drop unnecessary code to set app as enabled + * locale: Update translations for French, Norwegian Bokmål, Portuguese, Spanish, Swedish, Turkish + * module_loader, web_framework: Update console log messages + * mumble: Store and use a single domain for TLS certificate setup + * pagekite: Don't announce unconfigured kite as a valid domain + * pagekite: Don't update names module if not installed + * quassel: Don't handle certificates if not installed + * ssh: action script: Require user credentials when editing ssh keys + * tests: functional: Simplify calling the login helper + * tor: Don't check if enabled when not installed + * upgrades: Check free space before dist-upgrade + * upgrades: Extend function to check for normal dist availability + * upgrades: Set a flag so interrupted dist-upgrade can be continued + * users: Deal with admin user already existing during first boot + * users: Require admin credentials when creating or editing a user + == FreedomBox 20.14.1 (2020-09-23) == * cockpit: Don't show home page icon to non-admin users diff --git a/plinth/__init__.py b/plinth/__init__.py index 66211c9ba..3e38cd8e4 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -3,4 +3,4 @@ Package init file. """ -__version__ = '20.14' +__version__ = '20.15' diff --git a/plinth/locale/ar_SA/LC_MESSAGES/django.po b/plinth/locale/ar_SA/LC_MESSAGES/django.po index 40c7d4f73..63cf89075 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\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:57 +msgid "Administer calibre application" +msgstr "" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1015,11 +1118,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1337,7 +1442,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1786,12 +1891,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1808,16 +1907,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2283,7 +2372,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2930,32 +3019,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -2973,7 +3062,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3365,7 +3454,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3632,6 +3721,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4085,29 +4175,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5468,24 +5558,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5674,11 +5764,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "" @@ -5819,20 +5909,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5841,63 +5943,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5910,15 +6015,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -5936,19 +6042,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -5962,46 +6086,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6412,28 +6541,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index fcff0e55a..291506f3a 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2019-10-12 14:52+0000\n" "Last-Translator: Nevena Mircheva \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:57 +msgid "Administer calibre application" +msgstr "" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1020,11 +1123,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1342,7 +1447,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1791,12 +1896,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1813,16 +1912,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2288,7 +2377,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2935,32 +3024,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -2978,7 +3067,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3370,7 +3459,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3637,6 +3726,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4090,29 +4180,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5475,24 +5565,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5681,11 +5771,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5828,20 +5918,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5850,63 +5952,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5919,15 +6024,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -5945,19 +6051,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -5971,46 +6095,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6423,28 +6552,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index c80dc8643..b07d76e4e 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -387,6 +387,7 @@ msgstr "" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "" @@ -653,7 +654,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "" @@ -811,12 +812,114 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +msgid "Administer calibre application" +msgstr "" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1013,11 +1116,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1335,7 +1440,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1784,12 +1889,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1806,16 +1905,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2281,7 +2370,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2928,32 +3017,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -2971,7 +3060,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3363,7 +3452,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3630,6 +3719,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4083,29 +4173,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5466,24 +5556,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5672,11 +5762,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "" @@ -5817,20 +5907,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5839,63 +5941,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5908,15 +6013,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -5934,19 +6040,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -5960,46 +6084,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6410,28 +6539,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index 7fecc090b..fbf4a2ca9 100644 --- a/plinth/locale/cs/LC_MESSAGES/django.po +++ b/plinth/locale/cs/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-06-24 11:41+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Spravovat aplikaci Syncthing" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Název repozitáře" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Sdílení s tímto názvem už existuje." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Smazat Git repozitář %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Smazat %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Spravovat repozitáře" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Vytvořit repozitář" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Nejsou k dispozici žádné repozitáře." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Smazat stránku %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Repozitář vytvořen." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "An error occurred while creating the library." +msgstr "Při nastavování se vyskytla chyba." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} smazáno." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "{name} se nepodařilo smazat: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1126,11 +1247,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "TLS doména" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1513,7 +1636,7 @@ msgid "Use HTTP basic authentication" msgstr "Použít základní HTTP ověřování" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Uživatelské jméno" @@ -2041,12 +2164,6 @@ msgstr "Smazat Git repozitář %(name)s" msgid "Delete this repository permanently?" msgstr "Nevratně smazat tento repozitář?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Smazat %(name)s" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Repozitář vytvořen." @@ -2065,16 +2182,6 @@ msgstr "Repozitář upraven." msgid "Edit repository" msgstr "Upravit repozitář" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} smazáno." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "{name} se nepodařilo smazat: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentace" @@ -2646,7 +2753,7 @@ msgid "Chat Client" msgstr "Chatovací klient" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "Licenční informace o JavaScriptu" @@ -3400,7 +3507,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3408,7 +3515,7 @@ msgstr "" "Mumble je open source software pro šifrovanou, vysoce kvalitní hlasovou " "komunikaci s nízkou prodlevou." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3418,21 +3525,21 @@ msgstr "" "dispozici jsou klienti pro připojení z " "desktopu a Android zařízení." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Hlasový chat" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "SSH server password" msgid "Set SuperUser Password" msgstr "Heslo SSH serveru" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3450,7 +3557,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3890,7 +3997,7 @@ msgstr "Upravit připojení" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Upravit" @@ -4163,6 +4270,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4687,29 +4795,29 @@ msgstr "" "kombinace protokol/port, které zde můžete určit. Například o HTTPS na portu " "jiném, než 443 je známo, že způsobuje problémy." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Webový server (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "Stránky budou k dispozici na http://{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Webový server (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "Stránky budou k dispozici na https://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Zabezpečený shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6335,24 +6443,24 @@ msgstr "Tor Socks proxy" msgid "Tor Bridge Relay" msgstr "Předávájící Tor most" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Port Tor předávání k dispozici" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 transport zaregistrován" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 transport zaregistrován" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Potvrdit použití Tor na {url} na tcp{kind}" @@ -6590,11 +6698,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Aktualizovat" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6750,23 +6858,39 @@ msgstr "Přístup ke všem službám a nastavení systému" msgid "Check LDAP entry \"{search_item}\"" msgstr "Zkontrolujte LDAP položku „{search_item}“" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" "Toto uživatelské jméno je už používáno někým jiným nebo vyhrazeno pro systém." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "Neplatný název serveru" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Heslo k účtu správce" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Zobrazit heslo" + +#: plinth/modules/users/forms.py:105 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6787,20 +6911,23 @@ msgstr "" "skupině správců (admin) se budou moci přihlásit všude. Mohou se k systému " "přihlásit také prostřednictvím SSH a mají práva správy (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Vytvoření LDAP uživatele se nezdařilo." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Přidání nového uživatele do skupiny {group} se nezdařilo." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Pověřené SSH klíče" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6810,45 +6937,49 @@ msgstr "" "systému i bez zadávání hesla. Klíčů je možné vložit vícero, každý na vlastní " "řádek. Prázdné řádky a ty, které začínají na znak # budou ignorovány." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "Přejmenování LDAP uživatele se nezdařilo." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Odebrání uživatele ze skupiny se nezdařilo." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Přidání uživatele do skupiny se nezdařilo." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "Nepodařilo se vložit SSH klíče." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Přidání uživatele do skupiny se nezdařilo." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Není možné smazat účet jediného zbývajícího správce systému." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Změna hesla LDAP uživatele se nezdařila." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Přidání nového uživatele do skupiny správců (admin) se nezdařilo." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Omezení přístupu ke konzoli se nezdařilo." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Uživatelský účet vytvořen, není jste jím přihlášeni" @@ -6861,15 +6992,16 @@ msgstr "Změna hesla pro %(username)s" msgid "Save Password" msgstr "Uložit heslo" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Vytvořit uživatele" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Smazat uživatele" @@ -6887,7 +7019,7 @@ msgstr "Smazat %(username)s" msgid "Administrator Account" msgstr "Účet správce" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6897,12 +7029,34 @@ msgstr "" "možné později změnit. Tomuto uživateli budou dána práva správy. Později je " "možné přidat další uživatele." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Vytvořit účet" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Účet správce" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Není možné smazat účet jediného zbývajícího správce systému." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Uživatelé" @@ -6916,7 +7070,13 @@ msgstr "Smazat uživatele %(username)s" msgid "Edit user %(username)s" msgstr "Upravit uživatele %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "Upravit uživatele %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6925,39 +7085,39 @@ msgstr "" "Heslo změníte pomocí formuláře pro změnu " "hesla." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Uložit změny" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Uživatel %(username)s vytvořen." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "Uživatel %(username)s aktualizován." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Upravit uživatele" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "Uživatel {user} smazán." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "Smazání LDAP uživatele se nezdařilo." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Změnit heslo" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Heslo úspěšně změněno." @@ -7454,28 +7614,28 @@ msgstr "Aplikace" msgid "System" msgstr "Systém" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Změnit heslo" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Restartovat" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Vypnout" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Odhlásit" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Vyberte jazyk" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Přihlásit" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index b0cd3922d..3ba564470 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-08-18 20:32+0000\n" "Last-Translator: Jens Molgaard \n" "Language-Team: Danish calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Install this application?" +msgid "Administer calibre application" +msgstr "Installer denne applikation?" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Create User" +msgid "Name of the new library" +msgstr "Opret Bruger" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "This service already exists" +msgid "A library with this name already exists." +msgstr "Denne tjeneste eksisterer allerede" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Slet Wiki eller Blog %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Slet %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create User" +msgid "Manage Libraries" +msgstr "Opret Bruger" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Opret lager" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "Tor relay port available" +msgid "No libraries available." +msgstr "Tor videresendelsesport tilgængelig" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Slet sitet %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "packages not found" +msgid "Library created." +msgstr "pakker ikke fundet" + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "An error occurred while creating the library." +msgstr "Der opstod en fejl under konfigurationen." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} slettet." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "Kunne ikke slette {name}: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1130,13 +1251,15 @@ msgstr "Coturn" msgid "VoIP Helper" msgstr "VoIP-hjælper" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 #, fuzzy #| msgid "Subdomain" msgid "TLS domain" msgstr "Subdomæne" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1532,7 +1655,7 @@ msgid "Use HTTP basic authentication" msgstr "Brug basal (\"basic\") HTTP-autentifikation" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Brugernavn" @@ -2077,12 +2200,6 @@ msgstr "Slet Wiki eller Blog %(name)s" msgid "Delete this repository permanently?" msgstr "Slet bruger permanent?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Slet %(name)s" - #: plinth/modules/gitweb/views.py:45 #, fuzzy #| msgid "packages not found" @@ -2107,16 +2224,6 @@ msgstr "pakker ikke fundet" msgid "Edit repository" msgstr "Opret Bruger" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} slettet." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "Kunne ikke slette {name}: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentation" @@ -2666,7 +2773,7 @@ msgid "Chat Client" msgstr "IRC-klient (Quassel)" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -3436,7 +3543,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3444,7 +3551,7 @@ msgstr "" "Mumble er open source software der tilbyder en højkvalitets tale-tjeneste " "med lav forsinkelse og kryptering." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3454,23 +3561,23 @@ msgstr "" "Klienter til computere og Android-enheder " "er tilgængelige." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "Tale-tjeneste (Mumble)" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "Save Password" msgid "Set SuperUser Password" msgstr "Gem Kodeord" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3488,7 +3595,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3940,7 +4047,7 @@ msgstr "Rediger Forbindelse" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Rediger" @@ -4216,6 +4323,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4758,29 +4866,29 @@ msgstr "" "her. For eksempel er HTTPS på andre porte end 443 kendt for at give " "problemer." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Webserver (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "Siden vil være tilgængelig på http://{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Webserver (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "Siden vil være tilgængelig på https://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Secure Shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6370,24 +6478,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor videresendelsesport tilgængelig" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registreret" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registreret" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, 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}" @@ -6615,11 +6723,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Opdater" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Manual" msgid "FreedomBox Updated" @@ -6781,22 +6889,38 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrol af LDAP-konfiguration \"{search_item}\"" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "Ugyldigt servernavn" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Account" +msgid "Authorization Password" +msgstr "Administratorkonto" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Vis kodeord" + +#: plinth/modules/users/forms.py:105 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6818,20 +6942,23 @@ msgstr "" "tjenester. De kan også logge ind på systemet gennem SSH og har " "administratorprivilegier (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Kunne ikke oprette LDAP-bruger." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Kunne ikke tilføje ny bruger til gruppen {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6841,45 +6968,50 @@ msgstr "" "sikkert ind på systemet uden et kodeord. Der kan defineres flere nøgler, en " "på hver linje. Tomme linjer og linjer som starter med # bliver ignoreret." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "Kunne ikke omdøbe LDAP-bruger." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Kunne ikke fjerne bruger fra gruppe." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Kunne ikke tilføje bruger til gruppe." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Kunne ikke tilføje bruger til gruppe." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Kunne ikke ændre LDAP-kodeord." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Kunne ikke tilføje ny bruger til admin-gruppen." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to obtain certificate for domain {domain}: {error}" +msgid "Failed to restrict console access: {error}" msgstr "" +"Fejl ved forsøg på at erhverve certifikatet for domænet {domain}: {error}" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Brugerkonto oprettet, du er nu logget ind" @@ -6892,15 +7024,16 @@ msgstr "Ændr Kodeord for %(username)s" msgid "Save Password" msgstr "Gem Kodeord" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Opret Bruger" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Slet Bruger" @@ -6918,7 +7051,7 @@ msgstr "Slet %(username)s" msgid "Administrator Account" msgstr "Administratorkonto" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6928,14 +7061,34 @@ msgstr "" "Kodeordet kan ændres senere. Brugeren vil få tildelt " "administratorrettigheder. Andre brugere kan tilføjes senere." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 #, fuzzy #| msgid "PageKite Account" msgid "Create Account" msgstr "PageKite-konto" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Administratorkonto" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Brugere" @@ -6949,7 +7102,12 @@ msgstr "Slet bruger %(username)s" msgid "Edit user %(username)s" msgstr "Rediger Bruger %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "Rediger Bruger %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6958,39 +7116,39 @@ msgstr "" "Brug siden til kodeordsændring for at " "ændre kodeord." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Gem Ændringer" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Bruger %(username)s oprettet." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "Bruger %(username)s opdateret." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Rediger Bruger" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "Brugeren {user} slettet." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "Kunne ikke slette LDAP-bruger." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Ændr kodeord" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Kodeord blev ændret." @@ -7470,34 +7628,34 @@ msgstr "Apps" msgid "System" msgstr "System" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Ændr kodeord" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 #, fuzzy #| msgid "Restart Now" msgid "Restart" msgstr "Genstart Nu" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 #, fuzzy #| msgid "Shut Down Now" msgid "Shut down" msgstr "Sluk Nu" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Log ud" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 #, fuzzy #| msgid "Language" msgid "Select language" msgstr "Sprog" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Log ind" @@ -8196,12 +8354,6 @@ msgstr "" #~ msgstr "" #~ "Fejl ved forsøg på at erhverve certifikatet for domænet {domain}: {error}" -#, fuzzy -#~| msgid "Failed to obtain certificate for domain {domain}: {error}" -#~ msgid "Failed to switch certificate use for app {module}: {error}" -#~ msgstr "" -#~ "Fejl ved forsøg på at erhverve certifikatet for domænet {domain}: {error}" - #, fuzzy #~| msgid "Failed to revoke certificate for domain {domain}: {error}" #~ msgid "" @@ -8843,6 +8995,3 @@ msgstr "" #~ msgid "Bittorrent (Transmission)" #~ msgstr "BitTorrent (Transmission)" - -#~ msgid "Edit User %(username)s" -#~ msgstr "Rediger Bruger %(username)s" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index 2739d351b..b03923e55 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-09-23 11:08+0000\n" "Last-Translator: Dietmar \n" "Language-Team: German calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Syncthing-Anwendung einstellen" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Name des resositorys" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Eine Freigabe mit diesem Namen existiert bereits." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Git Repository %(name)s löschen" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "%(name)s löschen" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Archive verwalten" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Archiv anlegen" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Keine Archive verfügbar." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Seite %(site)s löschen" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Archiv erstellt." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred while creating the repository." +msgid "An error occurred while creating the library." +msgstr "Beim Erstellen des Repository ist ein Fehler aufgetreten." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} gelöscht." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "{name} konnte nicht gelöscht werden: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1135,11 +1256,13 @@ msgstr "Coturn" msgid "VoIP Helper" msgstr "VoIP-Helfer" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "TLS Domain" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1515,7 +1638,7 @@ msgid "Use HTTP basic authentication" msgstr "HTTP-Basisauthentifizierung verwenden" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Benutzername" @@ -2043,12 +2166,6 @@ msgstr "Git Repository %(name)s löschen" msgid "Delete this repository permanently?" msgstr "Dieses respository permanent löschen?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "%(name)s löschen" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Archiv erstellt." @@ -2065,16 +2182,6 @@ msgstr "Archiv bearbeitet." msgid "Edit repository" msgstr "Archiv bearbeiten" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} gelöscht." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "{name} konnte nicht gelöscht werden: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentation" @@ -2645,7 +2752,7 @@ msgid "Chat Client" msgstr "Chatclient" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "JavaScript-Lizenzinformation" @@ -3420,7 +3527,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3428,7 +3535,7 @@ msgstr "" "Mumble ist eine hochwertige quelloffene Software für Telefonie und Chat, mit " "Verschlüsselung und geringer Latenz." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3438,19 +3545,19 @@ msgstr "" "verbinden. Auf Mumble finden Sie " "Anwendungen, um sich vom Desktop oder Android-Gerät mit Mumble zu verbinden." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Sprachkonferenz" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "SuperUser-Kennwort festlegen" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3471,7 +3578,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "SuperUser-Kennwort wurde erfolgreich aktualisiert." @@ -3962,7 +4069,7 @@ msgstr "Verbindung bearbeiten" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Bearbeiten" @@ -4240,6 +4347,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "Überspringen Sie diesen Schritt" @@ -4782,31 +4890,31 @@ msgstr "" "Beispielsweise HTTPS auf anderen Ports als 443, ist bekannt dafür, Probleme " "zu verursachen." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Webserver (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" "Webseite wird unter http://{0} verfügbar sein" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Webserver (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" "Webseite wird unter https://{0} verfügbar sein" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Secure Shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6418,24 +6526,24 @@ msgstr "Tor-Socks-Proxy" msgid "Tor Bridge Relay" msgstr "Tor-Bridge-Relay" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor-Relay-Port ist verfügbar" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3-Transport registriert" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4-Transport registriert" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Tor-Nutzung auf {url} über TCP{kind} bestätigen" @@ -6670,11 +6778,11 @@ msgstr "" "erachtet wird, erfolgt dieser automatisch um 02:00 Uhr, so dass alle " "Anwendungen kurzzeitig nicht verfügbar sind." -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Aktualisieren" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "FreedomBox aktualisiert" @@ -6844,22 +6952,38 @@ msgstr "Zugriff auf alle Anwendungen und Systemeinstellungen" msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP-Eintrag „{search_item}“ prüfen" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "Benutzername wird bereits verwendet oder ist reserviert." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "Einen gültigen Benutzernamen eingeben." -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Erforderlich. 150 Zeichen oder weniger. Nur englische Buchstaben, Ziffern " "und @/./-/_." -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Administrator-Passwort" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Add password" +msgid "Invalid password." +msgstr "Kennwort hinzufügen" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6874,20 +6998,23 @@ msgstr "" "allen Diensten anmelden und sie können sich auch über SSH im System anmelden " "und besitzen Administratorrechte (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Erstellen des LDAP-Benutzers ist fehlgeschlagen." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Der Benutzer konnte nicht der Gruppe {group} hinzugefügt werden." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Autorisierte SSH-Schlüssel" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6898,43 +7025,47 @@ msgstr "" "eingeben, einen pro Zeile. Leerzeilen und Zeilen, die mit # beginnen, werden " "ignoriert." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "Umbenennen des LDAP-Benutzers fehlgeschlagen." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Entfernen des Benutzers von der Gruppe fehlgeschlagen." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Hinzufügen eines Benutzers zur Gruppe ist fehlgeschlagen." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "SSH-Schlüssel kann nicht gesetzt werden." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "Fehler beim Ändern des Benutzerstatus." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Der einzige Administrator des Systems kann nicht gelöscht werden." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Ändern des LDAP-Benutzerpassworts ist fehlgeschlagen." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Hinzufügen eines neuen Benutzers zur admin-Gruppe ist fehlgeschlagen." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Einschränken des Konsolenzugriffs fehlgeschlagen." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Benutzerkonto wurde erstellt, Sie sind jetzt angemeldet" @@ -6947,15 +7078,16 @@ msgstr "Passwort für %(username)s ändern" msgid "Save Password" msgstr "Passwort speichern" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Benutzer anlegen" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Benutzer löschen" @@ -6973,7 +7105,7 @@ msgstr "%(username)s löschen" msgid "Administrator Account" msgstr "Administratorkonto" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6983,12 +7115,34 @@ msgstr "" "zugreifen. Das Passwort kann später geändert werden. Dieser Benutzer erhält " "Administrator-Rechte. Weitere Benutzer können später hinzugefügt werden." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Konto erstellen" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Administratorkonto" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Der einzige Administrator des Systems kann nicht gelöscht werden." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Benutzer" @@ -7002,7 +7156,12 @@ msgstr "Benutzer %(username)s löschen" msgid "Edit user %(username)s" msgstr "Benutzer %(username)s bearbeiten" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "Benutzer %(username)s bearbeiten" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -7012,39 +7171,39 @@ msgstr "" "href='%(change_password_url)s'>Passwortänderungsformular, um das " "Passwort zu ändern." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Änderungen speichern" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Benutzer %(username)s angelegt." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "Benutzer %(username)s geändert." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Benutzer bearbeiten" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "Benutzer {user} gelöscht." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "Löschen von LDAP-Benutzer fehlgeschlagen." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Passwort ändern" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Passwort erfolgreich geändert." @@ -7502,28 +7661,28 @@ msgstr "Apps" msgid "System" msgstr "System" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Passwort ändern" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Neu starten" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Herunterfahren" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Abmelden" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Sprache wählen" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Anmelden" @@ -9193,8 +9352,5 @@ msgstr "Gujarati" #~ msgid "Bittorrent (Transmission)" #~ msgstr "Bittorrent (Transmission)" -#~ msgid "Edit User %(username)s" -#~ msgstr "Benutzer %(username)s bearbeiten" - #~ msgid "Scramblesuit transport registered" #~ msgstr "Scramblesuit Transport registriert" diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index c5cc82f9e..59cf0028a 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -386,6 +386,7 @@ msgstr "" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "" @@ -652,7 +653,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "" @@ -810,12 +811,114 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +msgid "Administer calibre application" +msgstr "" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1012,11 +1115,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1334,7 +1439,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1783,12 +1888,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1805,16 +1904,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2280,7 +2369,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2927,32 +3016,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -2970,7 +3059,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3362,7 +3451,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3629,6 +3718,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4082,29 +4172,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5465,24 +5555,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5671,11 +5761,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "" @@ -5816,20 +5906,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5838,63 +5940,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5907,15 +6012,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -5933,19 +6039,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -5959,46 +6083,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6409,28 +6538,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 5cb5a3c49..d3eb3d4e4 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-05-29 18:41+0000\n" "Last-Translator: Allan Nordhøy \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:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Διαχειριστείτε την εφαρμογή Syncthing" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Όνομα του αποθετηρίου" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Υπάρχει ήδη ένα μέρισμα με αυτό το όνομα." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Διαγραφή αποθετηρίου Git %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Διαγραφή %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Διαχείριση αποθετηρίων" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Δημιουργία Αποθετηρίου" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Δεν υπάρχουν διαθέσιμα αποθετήρια." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Διαγραφή ιστότοπου %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Το αποθετήριο δημιουργήθηκε." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred while creating the repository." +msgid "An error occurred while creating the library." +msgstr "Παρουσιάστηκε σφάλμα κατά τη δημιουργία του αποθετηρίου." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "το {name} διαγράφηκε." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "Δεν ήταν δυνατή η διαγραφή του {name}: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1167,11 +1288,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "ΤLS όνομα διαδικτύου" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1554,7 +1677,7 @@ msgid "Use HTTP basic authentication" msgstr "Χρήση βασικού ελέγχου ταυτότητας HTTP" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Όνομα χρήστη" @@ -2082,12 +2205,6 @@ msgstr "Διαγραφή αποθετηρίου Git %(name)s" msgid "Delete this repository permanently?" msgstr "Να διαγραφεί μόνιμα αυτό το αποθετήριο;" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Διαγραφή %(name)s" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Το αποθετήριο δημιουργήθηκε." @@ -2104,16 +2221,6 @@ msgstr "To αποθετήριο τροποποιήθηκε." msgid "Edit repository" msgstr "Τροποποίηση αποθετηρίου" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "το {name} διαγράφηκε." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "Δεν ήταν δυνατή η διαγραφή του {name}: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Boηθητικά έγγραφα" @@ -2707,7 +2814,7 @@ msgid "Chat Client" msgstr "Πρόγραμμα-πελάτης συνομιλίας" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "Πληροφορίες άδειας χρήσης JavaScript" @@ -3496,7 +3603,7 @@ msgstr "Δημοσιεύθηκε το κλειδί στο διακομιστή msgid "Error occurred while publishing key." msgstr "Παρουσιάστηκε σφάλμα κατά τη δημοσίευση του κλειδιού." -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3504,7 +3611,7 @@ msgstr "" "Το mumble είναι ένα ανοικτού πηγαίου κώδικα, χαμηλής καθυστέρησης, " "κρυπτογραφημένο και υπηλής ποιότητας προγραμμα φωνητικής συνομιλίας." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3514,19 +3621,19 @@ msgstr "" "href=\"http://mumble.info\"> Πελάτες για να συνδεθείτε με το Mumble από " "τον υπολογιστή και τις συσκευές Android είναι διαθέσιμες." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Φωνητική συνομιλία" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "Ορισμός κωδικού πρόσβασης SuperUser" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3547,7 +3654,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "Ο κωδικός πρόσβασης SuperUser Ενημερώθηκε με επιτυχία." @@ -3988,7 +4095,7 @@ msgstr "Επεξεργασία σύνδεσης" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Επεξεργασία" @@ -4262,6 +4369,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4777,30 +4885,30 @@ msgstr "" "παράδειγμα, HTTPS, στις θύρες εκτός από 443 είναι γνωστό ότι προκαλούν " "προβλήματα." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Διακομιστής Διαδικτύου (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" "Η τοποθεσία θα είναι διαθέσιμη στο http://{0} " -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Διακομιστής Διαδικτύου (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "Το Site θα είναι διαθέσιμο στο https://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Secure Shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6465,24 +6573,24 @@ msgstr "Tor διακομιστής μεσολάβησης τύπου socks5" msgid "Tor Bridge Relay" msgstr "Γέφυρα/μεσολαβητής Tor" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Θύρα μεσολαβητή Tor διαθέσιμη" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 μεταφορά καταχωρήθηκε" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 μεταφορά καταχωρήθηκε" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Πρόσβαση στη διεύθυνση URL {url} με tcp {kind} μέσω του Tor" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Επιβεβαίωση χρήσης του Tor στο {url} στο προτόκολλο TCP {kind}" @@ -6716,11 +6824,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Ενημερωμένη έκδοση" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6889,22 +6997,38 @@ msgstr "Πρόσβαση σε όλες τις υπηρεσίες και τις msgid "Check LDAP entry \"{search_item}\"" msgstr "Ελέγξτε την καταχώρηση LDAP \"{search_item}\"" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "Το όνομα χρήστη είναι δεσμευμένο." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "Μη έγκυρο όνομα διακομιστή" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Κωδικός Πρόσβασης Διαχειριστή" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Εμφάνιση κωδικού" + +#: plinth/modules/users/forms.py:105 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6926,20 +7050,23 @@ msgstr "" "υπηρεσίες. Μπορούν επίσης να συνδεθούν στο σύστημα μέσω του SSH και να έχουν " "δικαιώματα διαχειριστή (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Η δημιουργία χρήστη LDAP απέτυχε." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Απέτυχε η προσθήκη νέου χρήστη στην ομάδα {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Εξουσιοδοτημένα κλειδιά SSH" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6950,43 +7077,47 @@ msgstr "" "Μπορείτε να εισαγάγετε πολλαπλά κλειδιά, ένα σε κάθε γραμμή. Οι κενές " "γραμμές και οι γραμμές που ξεκινούν με # θα αγνοηθούν." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "Η μετονομασία του χρήστη LDAP απέτυχε." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Απέτυχε η κατάργηση του χρήστη από την ομάδα." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Απέτυχε η προσθήκη χρήστη στην ομάδα." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "Δεν ήταν δυνατό να προστεθούν τα κλειδιά SSH." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "Απέτυχε η αλλαγή της κατάστασης χρήστη." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Δεν είναι δυνατή η διαγραφή του μοναδικού διαχειριστή στο σύστημα." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Η αλλαγή του κωδικού πρόσβασης χρήστη LDAP απέτυχε." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Αποτυχία προσθήκης νέου χρήστη στην ομάδα διαχειριστών." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Απέτυχε ο περιορισμός της πρόσβασης στην κονσόλα." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Ο λογαριασμός χρήστη δημιουργήθηκε, τώρα είστε συνδεδεμένοι" @@ -6999,15 +7130,16 @@ msgstr "Αλλαγή κωδικού πρόσβασης για το %(usernam msgid "Save Password" msgstr "Αποθήκευση κωδικού πρόσβασης" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Δημιουργία χρήστη" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Διαγραφή χρήστη" @@ -7025,7 +7157,7 @@ msgstr "Διαγραφή %(username)s" msgid "Administrator Account" msgstr "Λογαριασμός διαχειριστή" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -7036,12 +7168,34 @@ msgstr "" "αυτόν το χρήστη θα εκχωρούνται δικαιώματα διαχείρισης. Άλλοι χρήστες μπορούν " "να προστεθούν αργότερα." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Δημιουργία λογαριασμού" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Λογαριασμός διαχειριστή" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Δεν είναι δυνατή η διαγραφή του μοναδικού διαχειριστή στο σύστημα." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Χρήστες" @@ -7055,7 +7209,13 @@ msgstr "Διαγραφή χρήστη %(username)s" msgid "Edit user %(username)s" msgstr "Επεξεργασία χρήστη %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "Επεξεργασία χρήστη %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -7064,39 +7224,39 @@ msgstr "" "Χρησιμοποιήστε τη φόρμα αλλαγής κωδικού " "πρόσβασης για να αλλάξετε τον κωδικό πρόσβασης." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Αποθήκευση αλλαγών" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Ο χρήστης %(username)s δημιουργήθηκε." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "O χρήστης %(username)s ενημερώθηκε." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Επεξεργασία χρήστη" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "Ο χρήστης {user} διαγράφηκε." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "Η διαγραφή του χρήστη LDAP απέτυχε." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Αλλαγή κωδικού πρόσβασης" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Ο κωδικός πρόσβασης άλλαξε με επιτυχία." @@ -7593,28 +7753,28 @@ msgstr "Εφαρμογές" msgid "System" msgstr "Σύστημα" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Αλλαγή κωδικού πρόσβασης" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Κάνετε επανεκκίνηση" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "ΤΕΡΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΑΣ" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Αποσύνδεση" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Επιλογή γλώσσας" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Σύνδεση" diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index d6675a941..4cbe438a1 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" -"PO-Revision-Date: 2020-08-30 18:23+0000\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" +"PO-Revision-Date: 2020-10-05 22:58+0000\n" "Last-Translator: Fioddor Superconcentrado \n" "Language-Team: Spanish \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.2.1-dev\n" +"X-Generator: Weblate 4.3-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -152,10 +152,8 @@ msgid "{app} (No data to backup)" msgstr "{app} (Sin datos que respaldar)" #: plinth/modules/backups/forms.py:50 -#, fuzzy -#| msgid "Create Repository" msgid "Repository" -msgstr "Crear repositorio" +msgstr "Repositorio" #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 @@ -226,10 +224,8 @@ msgstr "" "está almacenada con la copia de seguridad." #: plinth/modules/backups/forms.py:122 -#, fuzzy -#| msgid "Create Repository" msgid "Key in Repository" -msgstr "Crear repositorio" +msgstr "Clave en repositorio" #: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 msgid "None" @@ -417,6 +413,7 @@ msgstr "Eliminar el archivo %(name)s" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "Enviar" @@ -715,7 +712,7 @@ msgstr "Permisos para usuarios anónimos que no han puesto contraseña." #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "Permisos" @@ -723,34 +720,31 @@ msgstr "Permisos" msgid "" "Users that log in with this password will have the selected permissions." msgstr "" +"Los usuarios que ingresen con esta contraseña tendrán los permisos " +"seleccionados." #: plinth/modules/bepasty/forms.py:33 #: plinth/modules/bepasty/templates/bepasty.html:31 msgid "Comment" -msgstr "" +msgstr "Comentario" #: plinth/modules/bepasty/forms.py:34 msgid "Any comment to help you remember the purpose of this password." msgstr "" +"Cualquier comentario que te ayude a recordar el propósito de esta contraseña." #: plinth/modules/bepasty/templates/bepasty.html:12 -#, fuzzy -#| msgid "Change Password" msgid "Manage Passwords" -msgstr "Cambiar clave de acceso" +msgstr "Administrar contraseñas" #: plinth/modules/bepasty/templates/bepasty.html:16 #: plinth/modules/bepasty/templates/bepasty.html:18 -#, fuzzy -#| msgid "Show password" msgid "Add password" -msgstr "Mostrar clave de acceso" +msgstr "Añadir contraseña" #: plinth/modules/bepasty/templates/bepasty.html:23 -#, fuzzy -#| msgid "No shares currently configured." msgid "No passwords currently configured." -msgstr "Actualmente no hay comparticiones configuradas." +msgstr "Actualmente no hay contraseñas configuradas." #: plinth/modules/bepasty/templates/bepasty.html:29 #: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 @@ -760,7 +754,7 @@ msgstr "Clave de acceso" #: plinth/modules/bepasty/views.py:42 msgid "Read" -msgstr "" +msgstr "Leer" #: plinth/modules/bepasty/views.py:43 msgid "Create" @@ -768,7 +762,7 @@ msgstr "Crear" #: plinth/modules/bepasty/views.py:44 msgid "List" -msgstr "" +msgstr "Listar" #: plinth/modules/bepasty/views.py:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 @@ -782,10 +776,8 @@ msgid "Delete" msgstr "Eliminar" #: plinth/modules/bepasty/views.py:46 -#, fuzzy -#| msgid "admin" msgid "Admin" -msgstr "admin" +msgstr "Admin" #: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 @@ -800,22 +792,16 @@ msgid "An error occurred during configuration." msgstr "Ha habido un error en la configuración." #: plinth/modules/bepasty/views.py:97 -#, fuzzy -#| msgid "Password updated" msgid "Password added." -msgstr "Clave actualizada" +msgstr "Contraseña actualizada." #: plinth/modules/bepasty/views.py:102 -#, fuzzy -#| msgid "Password" msgid "Add Password" -msgstr "Clave de acceso" +msgstr "Añadir contraseña" #: plinth/modules/bepasty/views.py:119 -#, fuzzy -#| msgid "Password updated" msgid "Password deleted." -msgstr "Clave actualizada" +msgstr "Contraseña eliminada." #: plinth/modules/bind/__init__.py:29 msgid "" @@ -895,12 +881,132 @@ msgstr "Actualizar direcciones IP y dominios" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "Configuración actualizada" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Administrar Syncthing" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Nombre del repositorio" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Ya existe una compartición con este nombre." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Borrar Repositorio Git %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Eliminar %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Administrar Repositorios" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Crear repositorio" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "No hay repositorios disponibles." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Eliminar sitio %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Repositorio creado." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred while creating the repository." +msgid "An error occurred while creating the library." +msgstr "Ha habido un error al crear el repositorio." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} eliminado." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "No se pudo eliminar {name}: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1136,11 +1242,13 @@ msgstr "Coturn" msgid "VoIP Helper" msgstr "Asistente VoIP" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "Dominio TLS" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1244,20 +1352,16 @@ msgid "Diagnostics" msgstr "Diagnósticos" #: plinth/modules/diagnostics/__init__.py:102 -#, fuzzy -#| msgid "Quassel" msgid "passed" -msgstr "Quassel" +msgstr "ok." #: plinth/modules/diagnostics/__init__.py:103 -#, fuzzy -#| msgid "Setup failed." msgid "failed" -msgstr "Ha fallado la configuración." +msgstr "Falló" #: plinth/modules/diagnostics/__init__.py:104 msgid "error" -msgstr "" +msgstr "error" #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 @@ -1471,13 +1575,11 @@ msgstr "El nombre de usuaria/o que empleó al crear la cuenta." #: plinth/modules/dynamicdns/forms.py:65 msgid "GnuDIP" -msgstr "" +msgstr "GnuDIP" #: plinth/modules/dynamicdns/forms.py:68 -#, fuzzy -#| msgid "Update URL" msgid "other update URL" -msgstr "URL de actualización" +msgstr "Otra URL de actualización" #: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" @@ -1508,7 +1610,7 @@ msgid "Use HTTP basic authentication" msgstr "Usar autenticación básica de HTTP" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Nombre de usuaria/o" @@ -1979,14 +2081,12 @@ msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "Una cadena alfanumérica que identifica unívocamente un repositorio." #: plinth/modules/gitweb/forms.py:134 -#, fuzzy -#| msgid "Default Skin" msgid "Default branch" -msgstr "Tema por defecto" +msgstr "Rama por omisión" #: plinth/modules/gitweb/forms.py:135 msgid "Gitweb displays this as a default branch." -msgstr "" +msgstr "Gitweb muestra esta rama por omisión." #: plinth/modules/gitweb/manifest.py:21 msgid "Git" @@ -2028,12 +2128,6 @@ msgstr "Borrar Repositorio Git %(name)s" msgid "Delete this repository permanently?" msgstr "¿Eliminar este repositorio definitivamente?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Eliminar %(name)s" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Repositorio creado." @@ -2050,24 +2144,12 @@ msgstr "Repositorio editado." msgid "Edit repository" msgstr "Editar repositorio" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} eliminado." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "No se pudo eliminar {name}: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Documentación" #: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 -#, fuzzy -#| msgid "Manual" msgctxt "User guide" msgid "Manual" msgstr "Manual" @@ -2628,7 +2710,7 @@ msgid "Chat Client" msgstr "Cliente de Chat" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "Información de licencia de JavaScript" @@ -2787,11 +2869,6 @@ msgstr "" "un servidor Matrix contacten con los de otro servidor." #: plinth/modules/matrixsynapse/__init__.py:40 -#, fuzzy -#| msgid "" -#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. clientes disponibles para móvil, escritorio y la web. Se recomienda " -"el cliente Riot." +"el cliente Element." #: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" @@ -2821,7 +2898,7 @@ msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 msgid "Element" -msgstr "" +msgstr "Element" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -3395,7 +3472,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3403,7 +3480,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:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3413,19 +3490,19 @@ msgstr "" "disponibles Clientes para conectar desde " "sus dispositivos de escritorio o Android." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Chat de voz" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "Definir clave para administración" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3445,7 +3522,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "Clave de administración cambiada con éxito." @@ -3475,10 +3552,8 @@ msgid "All web apps" msgstr "Todas las apps web" #: plinth/modules/names/templates/names.html:16 -#, fuzzy -#| msgid "Service" msgid "Services" -msgstr "Servicio" +msgstr "Servicios" #: plinth/modules/networks/__init__.py:40 msgid "" @@ -3568,8 +3643,6 @@ msgid "Shared" msgstr "Compartido" #: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 -#, fuzzy -#| msgid "Manual" msgctxt "Not automatically" msgid "Manual" msgstr "Manual" @@ -3925,7 +3998,7 @@ msgstr "Editar conexión" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Editar" @@ -4202,6 +4275,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "Saltar este paso" @@ -4733,29 +4807,29 @@ msgstr "" "Por ejemplo, se sabe que HTTPS en un puerto distinto de 443 causará " "problemas." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Servidor Web (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "El sitio estará disponible en http://{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Servidor web seguro (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "El sitio estará disponible en https://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Intérprete de órdenes seguro (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -4774,12 +4848,17 @@ msgid "" "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" +"La app Rendimiento te permite recolectar, almacenar y visualizar información " +"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:29 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" +"Las métricas de rendimiento las recolecta Performance Co-Pilot y se pueden " +"ver empleando la app Cockpit." #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" @@ -4989,10 +5068,8 @@ msgstr "" "cualquier calendario/agenda." #: plinth/modules/radicale/forms.py:30 -#, fuzzy -#| msgid "Access Point" msgid "Access rights" -msgstr "Punto de acceso" +msgstr "Permisos de acceso" #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" @@ -5365,21 +5442,13 @@ msgstr "Actualizaciones funcionales frecuentes" #: plinth/modules/security/templates/security.html:19 #: plinth/modules/upgrades/templates/upgrades_configure.html:19 -#, fuzzy -#| msgid "Frequent feature updates are enabled." msgid "Frequent feature updates are activated." -msgstr "Las actualizaciones funcionales frecuentes están habilitadas." +msgstr "Las actualizaciones funcionales frecuentes están activadas." #: plinth/modules/security/templates/security.html:24 #: plinth/modules/upgrades/templates/backports-firstboot.html:14 #: plinth/modules/upgrades/templates/upgrades_configure.html:31 -#, fuzzy, python-format -#| msgid "" -#| "This will allow a very limited set of software, including FreedomBox " -#| "service, to be updated to receive newer features regularly instead of " -#| "once every 2 years or so. Note that packages with frequent feature " -#| "updates do not have support from Debian Security Team. They are instead " -#| "maintained by contributors to Debian and the FreedomBox community." +#, python-format msgid "" "Frequent feature updates allow the %(box_name)s Service, plus a very limited " "set of software, to receive new features more frequently (from the backports " @@ -5389,11 +5458,12 @@ msgid "" "Instead, they are maintained by contributors to Debian and the %(box_name)s " "community." msgstr "" -"Esto permitirá que un conjunto limitado de software, incluído el Servicio " -"FreedomBox se actualize para recibir nuevas funcionalidades regularmente en " -"vez de cada 2 años más o menos. Sepa que los paquetes con actualizaciones " -"funcionales frequentes no tienen soporte del Equipo de Seguridad de Debian, " -"sino de contribuyentes a Debian y de la comunidad de FreedomBox." +"Las actualizaciones funcionales frecuentes permiten al servicio %(box_name)s " +"y a un conjunto limitado de software recibir nuevas funcionalidades (desde " +"el repositorio backports). Así las reciben en cosa de semanas en vez de cada " +"2 años más o menos. Sepa que los paquetes con actualizaciones funcionales " +"frequentes no tienen soporte del Equipo de Seguridad de Debian, sino de " +"contribuyentes a Debian y de la comunidad de %(box_name)s." #: plinth/modules/security/templates/security_report.html:10 #: plinth/modules/security/views.py:74 @@ -5786,16 +5856,12 @@ msgid "Yearly Snapshots Limit" msgstr "Límite anual de instantáneas" #: plinth/modules/snapshot/forms.py:49 -#, fuzzy -#| msgid "" -#| "Keep a maximum of this many yearly snapshots. The default value is 0 " -#| "(disabled)." msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 (keep " "no yearly snapshot)." msgstr "" -"Conservar el máximo número de instantáneas anuales. El valor predeterminado " -"es 0 (desactivado)." +"Conservar esta cantidad de instantáneas anuales como mucho. El valor " +"predeterminado es 0 (sin instantáneas anuales)." #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 msgid "Delete the following snapshots permanently?" @@ -6348,24 +6414,24 @@ msgstr "Proxy Socks para Tor" msgid "Tor Bridge Relay" msgstr "Puente de retransmisión Tor" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Puerto de servidor Tor disponible" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Transporte Obfs3 registrado" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Transporte Obfs4 registrado" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmar uso de Tor en {url} sobre tcp {kind}" @@ -6599,11 +6665,11 @@ 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:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Actualización" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "FreedomBox actualizado" @@ -6626,21 +6692,16 @@ msgid "" "It is strongly recommended to activate frequent feature updates. If not " "activated now, they can be activated later." msgstr "" +"Se recomienda encarecidamente activar las actualizaciones funcionales " +"frecuentes. Si no se activan ahora se pueden activar más tarde." #: plinth/modules/upgrades/templates/backports-firstboot.html:33 -#, fuzzy -#| msgid "" -#| "Warning! Once frequent feature updates are activated, " -#| "they cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." msgid "" "Note: Once frequent feature updates are activated, they " "cannot be deactivated." msgstr "" -"¡Advertencia! Una vez que se activan las actualizaciones " -"funcionales frecuentes no se pueden desactivar. Antes de continuar quizá " -"quiera Ud. hacer una copia de respaldo usando Instantáneas ." +"Nota: Una vez que se activan las actualizaciones " +"funcionales frecuentes no se pueden desactivar." #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format @@ -6669,15 +6730,12 @@ msgstr "" "activarlas." #: plinth/modules/upgrades/templates/upgrades_configure.html:23 -#, fuzzy -#| msgid "" -#| "Frequent feature updates can be activated. Activating them is recommended." msgid "" "Frequent feature updates cannot be activated. They may not be necessary on " "your distribution." msgstr "" -"Se pueden activar las actualizaciones funcionales frecuentes. Se recomienda " -"activarlas." +"No se pueden activar las actualizaciones funcionales frecuentes. Quizá no " +"sean necesarias en tu distribución." #: plinth/modules/upgrades/templates/upgrades_configure.html:45 #, python-format @@ -6709,7 +6767,7 @@ msgid "" "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -"Esto puede tardar un buen rato en finalizar.. Durante una " +"Esto puede tardar un buen rato en finalizar. Durante una " "actualización no puede instalar aplicaciones. Además, esta interfaz web " "puede estar temporalmente inaccesible y mostrar un error. En ese caso, " "vuelva a cargar la página para continuar." @@ -6740,10 +6798,8 @@ msgid "Starting upgrade failed." msgstr "No se ha podido iniciar la actualización." #: plinth/modules/upgrades/views.py:91 -#, fuzzy -#| msgid "Frequent feature updates are enabled." msgid "Frequent feature updates activated." -msgstr "Las actualizaciones funcionales frecuentes están habilitadas." +msgstr "Las actualizaciones funcionales frecuentes están activadas." #: plinth/modules/users/__init__.py:39 msgid "" @@ -6781,20 +6837,36 @@ msgstr "Acceso a todos los servicios y configuraciones del sistema" msgid "Check LDAP entry \"{search_item}\"" msgstr "Comprobar la entrada LDAP \"{search_item}\"" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "El nombre de usuaria/o está en uso o reservado." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "Indique un nombre de usuario válido." -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "Obligatorio. Hasta 150 caracteres. Solo letras, números y @/./-/_ ." -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Clave de Administración" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Add password" +msgid "Invalid password." +msgstr "Añadir contraseña" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6809,20 +6881,23 @@ msgstr "" "servicios, también podrán acceder al sistema por SSH con privilegios de " "administración (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Ha fallado la creación de usuaria/o LDAP." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Ha fallado añadir usuaria/o nuevo al grupo {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Claves de SSH autorizadas" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6832,43 +6907,47 @@ msgstr "" "de una clave. Puede introducir más de una clave, cada una en una línea. Las " "líneas en blanco y las que empiecen por # se ignorarán." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "Ha fallado renombrar al o la usuaria LDAP." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Ha fallado la eliminación del o de la usuaria del grupo." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Ha fallado añadir al o la usuaria al grupo." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "No es posible configurar las claves SSH." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "Ha fallado al cambiar el estado del usuario." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "No se puede eliminar la única cuenta de administración del sistema." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Ha fallado cambiar la clave del o de la usuaria LDAP." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Ha fallado añadir usuaria/o nueva/o al grupo admin." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Falló al restringir el acceso a la consola." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Creada cuenta de usuaria/o, ya está usted en el sistema" @@ -6881,15 +6960,16 @@ msgstr "Cambiar clave de acceso de %(username)s" msgid "Save Password" msgstr "Guardar clave de acceso" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Crear usuaria/o" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Eliminar usuaria/o" @@ -6907,7 +6987,7 @@ msgstr "Eliminar %(username)s" msgid "Administrator Account" msgstr "Cuenta de Administración" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6917,12 +6997,34 @@ msgstr "" "cambiarla después. Disfrutará de privilegios administrativos. Más adelante " "se pueden añadir otros u otras usuarias." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Crear cuenta" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Cuenta de Administración" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "No se puede eliminar la única cuenta de administración del sistema." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Usuarias/os" @@ -6936,7 +7038,13 @@ msgstr "Eliminar usuaria/o %(username)s" msgid "Edit user %(username)s" msgstr "Editar el usuario %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "Editar el usuario %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6945,39 +7053,39 @@ msgstr "" "Use el formulario para cambio de clave de " "acceso para cambiarla." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Guardar cambios" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Se ha creado el o la usuaria %(username)s." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "El o la usuaria %(username)s se ha actualizado." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Editar usuario" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "El o la usuaria {user} se ha eliminado." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "Ha fallado la eliminación del o de la usuaria LDAP." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Cambiar clave de acceso" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Clave de acceso cambiada con éxito." @@ -7425,28 +7533,28 @@ msgstr "Aplicaciones" msgid "System" msgstr "Sistema" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Cambiar clave de acceso" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Reiniciar" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Apagar" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Cerrar sesión" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Seleccionar idioma" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Iniciar sesión" @@ -7610,16 +7718,13 @@ msgid "Port Forwarding" msgstr "Redirección de Puertos" #: plinth/templates/port-forwarding-info.html:13 -#, fuzzy, python-format -#| msgid "" -#| "You may want to check the network setup " -#| "and modify it if necessary." +#, python-format msgid "" "Your FreedomBox is not behind a router. No " "action is necessary." msgstr "" -"Puede que quiera comprobar la configuración de " -"red y modificarla si es necesario." +"Tu FreedomBox no está tras un router. No " +"hace falta hacer nada." #: plinth/templates/port-forwarding-info.html:19 #, python-format @@ -7628,37 +7733,33 @@ msgid "" "are using the DMZ feature to forward all ports. No further router " "configuration is necessary." msgstr "" +"Su FreedomBox está tras un router en la " +"zona desmilitarizada (DMZ) con todos los puertos expuestos. No hace falta " +"configurar nada más." #: plinth/templates/port-forwarding-info.html:26 -#, fuzzy, python-format -#| msgid "" -#| "If your FreedomBox is behind a router, you will need to set up port " -#| "forwarding on your router. You should forward the following ports for " -#| "%(service_name)s:" +#, python-format msgid "" "Your FreedomBox is behind a router and you " "are not using the DMZ feature. You will need to set up port forwarding on " "your router. You should forward the following ports for %(service_name)s:" msgstr "" -"Si tu FreedomBox está detrás de un router, deberás configurar la redirección " -"de puertos de tu router. Deberás redireccionar los siguientes puertos para " +"Tu FreedomBox está detrás de un router en " +"la zona militarizada. Deberás redireccionar los siguientes puertos para " "%(service_name)s:" #: plinth/templates/port-forwarding-info.html:36 -#, fuzzy -#| msgid "protocol" msgid "Protocol" -msgstr "protocolo" +msgstr "Protocolo" #: plinth/templates/port-forwarding-info.html:37 msgid "From Router/WAN Ports" -msgstr "" +msgstr "Desde los puertos externos" #: plinth/templates/port-forwarding-info.html:38 -#, fuzzy, python-format -#| msgid "%(box_name)s Setup" +#, python-format msgid "To %(box_name)s Ports" -msgstr "Configuración de %(box_name)s" +msgstr "A los puertos de %(box_name)s" #: plinth/templates/setup.html:24 msgid "Install this application?" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index 1bce92720..0ba74481b 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2016-08-12 15:51+0000\n" "Last-Translator: Masoud Abkenar \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:57 +#, fuzzy +msgid "Administer calibre application" +msgstr "فعال‌سازی برنامه" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Create Connection" +msgid "Name of the new library" +msgstr "ساختن اتصال" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "پاک‌کردن ویکی یا وبلاگ %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "پاک‌کردن %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create Connection" +msgid "Manage Libraries" +msgstr "ساختن اتصال" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Connection" +msgid "Create Library" +msgstr "ساختن اتصال" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No wikis or blogs available." +msgid "No libraries available." +msgstr "ویکی یا وبلاگی موجود نیست." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "سایت %(site)s را پاک کنید" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "Error occurred while publishing key." +msgid "An error occurred while creating the library." +msgstr "هنگام انتشار کلید خطایی رخ داد." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} پاک شد." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "نشد که {name} پاک شود: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1124,13 +1240,15 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 #, fuzzy #| msgid "Subdomain" msgid "TLS domain" msgstr "زیردامنه" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1508,7 +1626,7 @@ msgid "Use HTTP basic authentication" msgstr "به‌کاربردن تأیید هویت سادهٔ تحت وب" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "نام کاربری" @@ -2014,12 +2132,6 @@ msgstr "پاک‌کردن ویکی یا وبلاگ %(name)s" msgid "Delete this repository permanently?" msgstr "اتصال %(name)s را برای همیشه پاک می‌کنید؟" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "پاک‌کردن %(name)s" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -2040,16 +2152,6 @@ msgstr "" msgid "Edit repository" msgstr "ساختن اتصال" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} پاک شد." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "نشد که {name} پاک شود: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "راهنما" @@ -2582,7 +2684,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -3316,13 +3418,13 @@ msgstr "کلید در پایگاه کلیدها منتشر شد." msgid "Error occurred while publishing key." msgstr "هنگام انتشار کلید خطایی رخ داد." -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "مامبل (Mumble) یک نرم‌افزار چت صوتی متن‌باز، کم‌تأخیر، و باکیفیت است." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3332,23 +3434,23 @@ msgstr "" "\"http://mumble.info\">نرم‌افزارهایی برای اتصال به سرور مامبل برای " "کامپیوتر رومیزی و دستگاه‌های اندروید در دسترس است." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "چت صوتی (Mumble)" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "Please provide a password" msgid "Set SuperUser Password" msgstr "لطفاً یک رمز وارد کنید" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3366,7 +3468,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3807,7 +3909,7 @@ msgstr "ویرایش اتصال" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "ویرایش" @@ -4083,6 +4185,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4546,29 +4649,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6043,24 +6146,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6251,11 +6354,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy msgid "FreedomBox Updated" msgstr "FreedomBox" @@ -6403,22 +6506,38 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "نام کاربری معتبر نیست" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Account" +msgid "Authorization Password" +msgstr "حساب مدیر" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "رمز را نشان بده" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6427,65 +6546,72 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "ساختن کاربر LDAP شکست خورد." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." -msgstr "" +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to {group} group: {error}" +msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add new user to admin group." msgid "Failed to change user status." msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." -msgstr "" +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to obtain certificate for domain {domain}: {error}" +msgid "Failed to restrict console access: {error}" +msgstr "گرفتن گواهی برای دامنهٔ {domain} شکست خورد: {error}" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "حساب کاربری ساخته شد، شما الان وارد سیستم هستید" @@ -6498,15 +6624,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -6524,7 +6651,7 @@ msgstr "" msgid "Administrator Account" msgstr "حساب مدیر" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6534,14 +6661,34 @@ msgstr "" "می‌توانید تغییر دهید. این نام کاربری دسترسی مدیریتی خواهد داشت. کاربران دیگر " "را بعداً می‌توانید اضافه کنید." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 #, fuzzy #| msgid "Create Connection" msgid "Create Account" msgstr "ساختن اتصال" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "حساب مدیر" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -6555,46 +6702,52 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Edit User %(username)s" +msgstr "پاک‌کردن ویکی یا وبلاگ %(name)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -7046,30 +7199,30 @@ msgstr "برنامه‌ها" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 #, fuzzy #| msgid "Language" msgid "Select language" msgstr "زبان" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" @@ -7351,10 +7504,6 @@ msgstr "" #~ msgid "Deleted all snapshots" #~ msgstr "پاک‌کردن %(name)s" -#, fuzzy -#~ msgid "Enable application" -#~ msgstr "فعال‌سازی برنامه" - #~ msgid "Setup a freedombox.me subdomain with your voucher" #~ msgstr "با کوپنی که دارید، یک زیردامنهٔ freedombox.me بسازید" @@ -7507,11 +7656,6 @@ msgstr "" #~ "Failed to switch certificate renewal management for {domain}: {error}" #~ msgstr "گرفتن گواهی برای دامنهٔ {domain} شکست خورد: {error}" -#, fuzzy -#~| msgid "Failed to obtain certificate for domain {domain}: {error}" -#~ msgid "Failed to switch certificate use for app {module}: {error}" -#~ msgstr "گرفتن گواهی برای دامنهٔ {domain} شکست خورد: {error}" - #, fuzzy #~| msgid "Failed to revoke certificate for domain {domain}: {error}" #~ msgid "" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 6d9f16e84..117371dbc 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\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:57 +#, fuzzy +#| msgid "Installation" +msgid "Administer calibre application" +msgstr "INSTALLATION" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Create User" +msgid "Name of the new library" +msgstr "CREATE USER" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "This service already exists" +msgid "A library with this name already exists." +msgstr "THIS SERVICE ALREADY EXISTS" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "DELETE WIKI OR BLOG %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "DELETE %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create User" +msgid "Manage Libraries" +msgstr "CREATE USER" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create User" +msgid "Create Library" +msgstr "CREATE USER" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "Tor relay port available" +msgid "No libraries available." +msgstr "TOR RELAY PORT AVAILABLE" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "DELETE SITE %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "packages not found" +msgid "Library created." +msgstr "PACKAGES NOT FOUND" + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "An error occurred while creating the library." +msgstr "AN ERROR OCCURRED DURING CONFIGURATION." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} DELETED." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "COULD NOT DELETE {name}: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1163,13 +1284,15 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 #, fuzzy #| msgid "Enable Subdomains" msgid "TLS domain" msgstr "ENABLE SUBDOMAINS" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1585,7 +1708,7 @@ msgid "Use HTTP basic authentication" msgstr "USE HTTP BASIC AUTHENTICATION" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "USERNAME" @@ -2140,12 +2263,6 @@ msgstr "DELETE WIKI OR BLOG %(name)s" msgid "Delete this repository permanently?" msgstr "DELETE USER PERMANENTLY?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "DELETE %(name)s" - #: plinth/modules/gitweb/views.py:45 #, fuzzy #| msgid "packages not found" @@ -2170,16 +2287,6 @@ msgstr "PACKAGES NOT FOUND" msgid "Edit repository" msgstr "CREATE USER" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} DELETED." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "COULD NOT DELETE {name}: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "DOCUMENTATION" @@ -2716,7 +2823,7 @@ msgid "Chat Client" msgstr "IRC CLIENT (QUASSEL)" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -3521,7 +3628,7 @@ msgstr "PUBLISHED KEY TO KEYSERVER." msgid "Error occurred while publishing key." msgstr "ERROR OCCURRED WHILE PUBLISHING KEY." -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3529,7 +3636,7 @@ msgstr "" "MUMBLE IS AN OPEN SOURCE, LOW-LATENCY, ENCRYPTED, HIGH QUALITY VOICE CHAT " "SOFTWARE." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3539,23 +3646,23 @@ msgstr "" "href=\"http://mumble.info\">CLIENTS TO CONNECT TO MUMBLE FROM YOUR " "DESKTOP AND ANDROID DEVICES ARE AVAILABLE." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "VOICE CHAT (MUMBLE)" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "Save Password" msgid "Set SuperUser Password" msgstr "SAVE PASSWORD" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3573,7 +3680,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -4008,7 +4115,7 @@ msgstr "EDIT CONNECTION" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "EDIT" @@ -4283,6 +4390,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4836,29 +4944,29 @@ msgstr "" "PROTOCOL/PORT COMBINATIONS THAT YOU ARE ABLE TO DEFINE HERE. FOR EXAMPLE, " "HTTPS ON PORTS OTHER THAN 443 IS KNOWN TO CAUSE PROBLEMS." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "WEB SERVER (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "SITE WILL BE AVAILABLE AT HTTP://{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "WEB SERVER (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "SITE WILL BE AVAILABLE AT HTTPS://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "SECURE SHELL (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6455,24 +6563,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "TOR BRIDGE RELAY" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "TOR RELAY PORT AVAILABLE" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "OBFS3 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "OBFS4 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "CONFIRM TOR USAGE AT {url} ON TCP{kind}" @@ -6697,13 +6805,13 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 #, fuzzy #| msgid "Update URL" msgid "Update" msgstr "UPDATE URL" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Manual" msgid "FreedomBox Updated" @@ -6863,22 +6971,38 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "CHECK LDAP ENTRY \"{search_item}\"" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "INVALID SERVER NAME" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Account" +msgid "Authorization Password" +msgstr "ADMINISTRATOR ACCOUNT" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "SHOW PASSWORD" + +#: plinth/modules/users/forms.py:105 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6899,20 +7023,23 @@ msgstr "" "ABLE TO LOG IN TO ALL SERVICES. THEY CAN ALSO LOG IN TO THE SYSTEM THROUGH " "SSH AND HAVE ADMINISTRATIVE PRIVILEGES (SUDO)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "CREATING LDAP USER FAILED." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "FAILED TO ADD NEW USER TO {group} GROUP." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6922,45 +7049,49 @@ msgstr "" "SYSTEM WITHOUT USING A PASSWORD. YOU MAY ENTER MULTIPLE KEYS, ONE ON EACH " "LINE. BLANK LINES AND LINES STARTING WITH # WILL BE IGNORED." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "RENAMING LDAP USER FAILED." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "FAILED TO REMOVE USER FROM GROUP." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "FAILED TO ADD USER TO GROUP." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "FAILED TO ADD USER TO GROUP." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "CHANGING LDAP USER PASSWORD FAILED." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "FAILED TO ADD NEW USER TO ADMIN GROUP." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." -msgstr "" +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to obtain certificate for domain {domain}: {error}" +msgid "Failed to restrict console access: {error}" +msgstr "FAILED TO OBTAIN CERTIFICATE FOR DOMAIN {domain}: {error}" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "USER ACCOUNT CREATED, YOU ARE NOW LOGGED IN" @@ -6973,15 +7104,16 @@ msgstr "CHANGE PASSWORD FOR %(username)s" msgid "Save Password" msgstr "SAVE PASSWORD" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "CREATE USER" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "DELETE USER" @@ -6999,7 +7131,7 @@ msgstr "DELETE %(username)s" msgid "Administrator Account" msgstr "ADMINISTRATOR ACCOUNT" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -7009,14 +7141,34 @@ msgstr "" "CAN BE CHANGED LATER. THIS USER WILL BE GRANTED ADMINISTRATIVE PRIVILEGES. " "OTHER USERS CAN BE ADDED LATER." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 #, fuzzy #| msgid "PageKite Account" msgid "Create Account" msgstr "PAGEKITE ACCOUNT" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "ADMINISTRATOR ACCOUNT" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "USERS" @@ -7030,7 +7182,12 @@ msgstr "DELETE USER %(username)s" msgid "Edit user %(username)s" msgstr "EDIT USER %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "EDIT USER %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -7039,39 +7196,39 @@ msgstr "" "USE THE CHANGE PASSWORD FORM TO " "CHANGE THE PASSWORD." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "SAVE CHANGES" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "USER %(username)s CREATED." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "USER %(username)s UPDATED." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "EDIT USER" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "USER {user} DELETED." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "DELETING LDAP USER FAILED." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "CHANGE PASSWORD" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "PASSWORD CHANGED SUCCESSFULLY." @@ -7556,34 +7713,34 @@ msgstr "APPS" msgid "System" msgstr "SYSTEM" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "CHANGE PASSWORD" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 #, fuzzy #| msgid "Restart Now" msgid "Restart" msgstr "RESTART NOW" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 #, fuzzy #| msgid "Shut Down Now" msgid "Shut down" msgstr "SHUT DOWN NOW" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "LOG OUT" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 #, fuzzy #| msgid "Language" msgid "Select language" msgstr "LANGUAGE" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "LOG IN" @@ -8203,11 +8360,6 @@ msgstr "" #~ "Failed to switch certificate renewal management for {domain}: {error}" #~ msgstr "FAILED TO OBTAIN CERTIFICATE FOR DOMAIN {domain}: {error}" -#, fuzzy -#~| msgid "Failed to obtain certificate for domain {domain}: {error}" -#~ msgid "Failed to switch certificate use for app {module}: {error}" -#~ msgstr "FAILED TO OBTAIN CERTIFICATE FOR DOMAIN {domain}: {error}" - #, fuzzy #~| msgid "Failed to revoke certificate for domain {domain}: {error}" #~ msgid "" @@ -8846,9 +8998,6 @@ msgstr "" #~ msgid "Bittorrent (Transmission)" #~ msgstr "BITTORRENT (TRANSMISSION)" -#~ msgid "Edit User %(username)s" -#~ msgstr "EDIT USER %(username)s" - #~ msgid "Scramblesuit transport registered" #~ msgstr "SCRAMBLESUIT TRANSPORT REGISTERED" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 10873041b..bab4133e6 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" -"PO-Revision-Date: 2020-09-23 11:08+0000\n" -"Last-Translator: Coucouf \n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" +"PO-Revision-Date: 2020-10-05 22:58+0000\n" +"Last-Translator: Coucouf \n" "Language-Team: French \n" "Language: fr\n" @@ -61,7 +61,7 @@ msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -"Attention ! Cette application peut ne peut pas fonctionner correctement si " +"Attention ! Cette application risque de ne pas fonctionner correctement si " "le nom de domaine est modifié ultérieurement." #: plinth/forms.py:48 @@ -74,7 +74,7 @@ msgstr "Langue de cette interface web" #: plinth/forms.py:56 msgid "Use the language preference set in the browser" -msgstr "Utiliser les préférences de langue du navigateur" +msgstr "Utiliser la langue du navigateur" #: plinth/middleware.py:57 plinth/templates/setup.html:18 msgid "Application installed." @@ -83,12 +83,12 @@ msgstr "Application installée." #: plinth/middleware.py:63 #, python-brace-format msgid "Error installing application: {string} {details}" -msgstr "Erreur lors de l’installation de l'application : {string} {details}" +msgstr "Erreur lors de l’installation de l’application : {string} {details}" #: plinth/middleware.py:67 #, python-brace-format msgid "Error installing application: {error}" -msgstr "Erreur lors de l’installation de l'application : {error}" +msgstr "Erreur lors de l’installation de l’application : {error}" #: plinth/modules/apache/__init__.py:40 #: plinth/modules/monkeysphere/templates/monkeysphere.html:67 @@ -104,12 +104,12 @@ msgstr "Interface web de la {box_name} (Plinth)" #: plinth/modules/apache/components.py:120 #, python-brace-format msgid "Access URL {url} on tcp{kind}" -msgstr "Accès à l'URL {url} via tcp{kind}" +msgstr "Accès à l’URL {url} via tcp{kind}" #: plinth/modules/apache/components.py:124 #, python-brace-format msgid "Access URL {url}" -msgstr "Accès à l'URL {url}" +msgstr "Accès à l’URL {url}" #: plinth/modules/avahi/__init__.py:34 #, python-brace-format @@ -176,7 +176,7 @@ msgstr "Applications à inclure dans la sauvegarde" #: plinth/modules/backups/forms.py:70 msgid "Select the apps you want to restore" -msgstr "Sélectionnez les applications que vous souhaitez restaurer." +msgstr "Sélectionnez les applications que vous souhaitez restaurer" #: plinth/modules/backups/forms.py:83 msgid "Upload File" @@ -272,7 +272,7 @@ msgid "" "Path of a new or existing repository. Example: user@host:~/path/to/repo/" msgstr "" -"Chemin d'un dépôt, nouveau ou existant. Exemple : utilisateur@machine:~/" +"Chemin d’un dépôt, nouveau ou existant. Exemple : utilisateur@machine:~/" "chemin/vers/le/dépôt/" #: plinth/modules/backups/forms.py:193 @@ -284,7 +284,7 @@ msgid "" "Password of the SSH Server.
SSH key-based authentication is not yet " "possible." msgstr "" -"Mot de passe du serveur SSH.
L’authentification par clé SSH n'est pas " +"Mot de passe du serveur SSH.
L’authentification par clé SSH n’est pas " "encore supportée." #: plinth/modules/backups/forms.py:213 @@ -403,7 +403,7 @@ msgstr "Heure" #: plinth/modules/backups/templates/backups_delete.html:36 #, python-format msgid "Delete Archive %(name)s" -msgstr "Supprimer l'archive %(name)s" +msgstr "Supprimer l’archive %(name)s" #: plinth/modules/backups/templates/backups_form.html:20 #: plinth/modules/bepasty/templates/bepasty_add.html:20 @@ -413,8 +413,9 @@ msgstr "Supprimer l'archive %(name)s" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" -msgstr "Soumettre" +msgstr "Envoyer" #: plinth/modules/backups/templates/backups_repository.html:19 msgid "This repository is encrypted" @@ -422,16 +423,16 @@ msgstr "Ce dépôt est chiffré" #: plinth/modules/backups/templates/backups_repository.html:34 msgid "Unmount Location" -msgstr "Démonter l'emplacement" +msgstr "Démonter l’emplacement" #: plinth/modules/backups/templates/backups_repository.html:45 msgid "Mount Location" -msgstr "Monter l'emplacement" +msgstr "Monter l’emplacement" #: plinth/modules/backups/templates/backups_repository.html:56 msgid "Remove Backup Location. This will not delete the remote backup." msgstr "" -"Supprimer l'emplacement de sauvegarde. Cette action ne supprimera pas la " +"Supprimer l’emplacement de sauvegarde. Cette action ne supprimera pas la " "sauvegarde distante." #: plinth/modules/backups/templates/backups_repository.html:77 @@ -463,7 +464,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_repository_remove.html:31 msgid "Remove Location" -msgstr "Enlever l'emplacement" +msgstr "Enlever l’emplacement" #: plinth/modules/backups/templates/backups_restore.html:15 msgid "Restore data from" @@ -481,11 +482,11 @@ msgid "" " " msgstr "" "\n" -" Téléverser un fichier de sauvegarde téléchargé d’une autre " -"%(box_name)s pour restaurer\n" -" son contenu. Vous pourrez choisir les applis que vous souhaitez " -"restaurer après\n" -" avoir téléversé un fichier de sauvegarde.\n" +" Téléverser un fichier de sauvegarde récupéré d’une autre %(box_name)s " +"pour restaurer\n" +" son contenu. Vous pourrez choisir les applis à restaurer une fois le " +"fichier de sauvegarde\n" +" téléversé.\n" " " #: plinth/modules/backups/templates/backups_upload.html:27 @@ -549,7 +550,7 @@ msgstr "Archive créée." #: plinth/modules/backups/views.py:83 msgid "Delete Archive" -msgstr "Supprimer l'archive" +msgstr "Supprimer l’archive" #: plinth/modules/backups/views.py:95 msgid "Archive deleted." @@ -605,7 +606,7 @@ msgstr "La clé publique d’authenticité du serveur SSH n’a pu être vérifi #: plinth/modules/backups/views.py:366 msgid "Authentication to remote server failed." -msgstr "L'authentification sur le serveur distant a échoué." +msgstr "L’authentification sur le serveur distant a échoué." #: plinth/modules/backups/views.py:368 msgid "Error establishing connection to server: {}" @@ -621,7 +622,7 @@ msgstr "Supprimer ce dépôt" #: plinth/modules/backups/views.py:402 msgid "Repository removed. Backups were not deleted." -msgstr "Dépôt supprimé. Les sauvegardes n'ont pas été supprimées." +msgstr "Dépôt supprimé. Les sauvegardes n’ont pas été supprimées." #: plinth/modules/backups/views.py:412 msgid "Unmounting failed!" @@ -638,6 +639,11 @@ msgid "" "audio, video and PDF documents can be previewed in the browser. Shared files " "can be set to expire after a time period." msgstr "" +"bepasty est une application web permettant l’envoi et le partage de gros " +"fichiers. Du texte et des extraits de code source peuvent également être " +"collés et partagés. Les documents texte, images, audio, vidéo et PDF " +"pourront être visualisés directement dans le navigateur. Il est possible de " +"définir une date d’expiration pour les fichiers envoyés." #: plinth/modules/bepasty/__init__.py:29 msgid "" @@ -646,6 +652,11 @@ msgid "" "password, you can share it with the users who should have the associated " "permissions." msgstr "" +"bepasty n’utilise pas de noms d’utilisateurs comme identifiants mais " +"seulement des mots de passe. Un jeu de permissions peut être défini pour " +"chaque mot de passe. Une fois que vous avez créé un mot de passe et les " +"permissions associées, vous pouvez le partager aux utilisateurs qui " +"devraient y avoir accès." #: plinth/modules/bepasty/__init__.py:33 msgid "" @@ -654,60 +665,61 @@ msgid "" "revoke access for a single person or group, by removing their password from " "the list." msgstr "" +"Vous pouvez même créer plusieurs mots de passe avec le même jeu de " +"permissions pour les distribuer à différentes personnes ou groupes de " +"personnes. Cela vous permettra par la suite de révoquer les accès d’une " +"seule personne ou d’un seul groupe en supprimant leur mot de passe de la " +"liste." #: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 msgid "Read a file, if a web link to the file is available" -msgstr "" +msgstr "Accès en lecture seule aux fichiers, à partir de leur lien" #: plinth/modules/bepasty/__init__.py:43 -#, fuzzy -#| msgid "Restore from uploaded file" msgid "Create or upload files" -msgstr "Restaurer du fichier téléversé" +msgstr "Créer ou envoyer des fichiers" #: plinth/modules/bepasty/__init__.py:44 msgid "List all files and their web links" -msgstr "" +msgstr "Lister l’ensemble des fichiers et récupérer leurs liens hypertexte" #: plinth/modules/bepasty/__init__.py:45 -#, fuzzy -#| msgid "Delete User" msgid "Delete files" -msgstr "Supprimer Utilisateur" +msgstr "Supprimer des fichiers" #: plinth/modules/bepasty/__init__.py:46 msgid "Administer files: lock/unlock files" -msgstr "" +msgstr "Administrer des fichiers : verrouiller / déverouiller des fichiers" #: plinth/modules/bepasty/__init__.py:50 msgid "None, password is always required" -msgstr "" +msgstr "Aucune, le mot de passe est toujours exigé" #: plinth/modules/bepasty/__init__.py:52 msgid "List and read all files" -msgstr "" +msgstr "Listing et lecture de l’ensemble des fichiers" #: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 msgid "bepasty" -msgstr "" +msgstr "bepasty" #: plinth/modules/bepasty/__init__.py:67 -#, fuzzy -#| msgid "File Sharing" msgid "File & Snippet Sharing" -msgstr "Partage de fichiers" +msgstr "Partage de fichiers et de bribes" #: plinth/modules/bepasty/forms.py:17 msgid "Public Access (default permissions)" -msgstr "" +msgstr "Accès public (permissions par défaut)" #: plinth/modules/bepasty/forms.py:18 msgid "Permissions for anonymous users, who have not provided a password." msgstr "" +"Permissions pour les utilisateurs anonymes, n’ayant pas fourni de mot de " +"passe." #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "Permissions" @@ -715,34 +727,31 @@ msgstr "Permissions" msgid "" "Users that log in with this password will have the selected permissions." msgstr "" +"Les utilisateurs se connectant avec ce mot de passe auront les permissions " +"sélectionnées." #: plinth/modules/bepasty/forms.py:33 #: plinth/modules/bepasty/templates/bepasty.html:31 msgid "Comment" -msgstr "" +msgstr "Commentaire" #: plinth/modules/bepasty/forms.py:34 msgid "Any comment to help you remember the purpose of this password." msgstr "" +"Toute information utile pour vous rappeler de l’objet de ce mot de passe." #: plinth/modules/bepasty/templates/bepasty.html:12 -#, fuzzy -#| msgid "Change Password" msgid "Manage Passwords" -msgstr "Changer Mot de Passe" +msgstr "Gestion des mots de passe" #: plinth/modules/bepasty/templates/bepasty.html:16 #: plinth/modules/bepasty/templates/bepasty.html:18 -#, fuzzy -#| msgid "Show password" msgid "Add password" -msgstr "Afficher le mot de passe" +msgstr "Ajouter un mot de passe" #: plinth/modules/bepasty/templates/bepasty.html:23 -#, fuzzy -#| msgid "No shares currently configured." msgid "No passwords currently configured." -msgstr "Aucun partage actuellement configuré." +msgstr "Aucun mot de passe actuellement configuré." #: plinth/modules/bepasty/templates/bepasty.html:29 #: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 @@ -752,15 +761,15 @@ msgstr "Mot de passe" #: plinth/modules/bepasty/views.py:42 msgid "Read" -msgstr "" +msgstr "Lecture" #: plinth/modules/bepasty/views.py:43 msgid "Create" -msgstr "Créer" +msgstr "Création" #: plinth/modules/bepasty/views.py:44 msgid "List" -msgstr "" +msgstr "Listing" #: plinth/modules/bepasty/views.py:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 @@ -771,13 +780,11 @@ msgstr "" #: plinth/modules/wireguard/templates/wireguard_show_client.html:73 #: plinth/modules/wireguard/templates/wireguard_show_server.html:74 msgid "Delete" -msgstr "Supprimer" +msgstr "Suppression" #: plinth/modules/bepasty/views.py:46 -#, fuzzy -#| msgid "admin" msgid "Admin" -msgstr "admin" +msgstr "Admin" #: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 @@ -792,29 +799,23 @@ msgid "An error occurred during configuration." msgstr "Une erreur est survenue pendant la configuration." #: plinth/modules/bepasty/views.py:97 -#, fuzzy -#| msgid "Password updated" msgid "Password added." -msgstr "Mot de passe mis à jour" +msgstr "Mot de passe ajouté." #: plinth/modules/bepasty/views.py:102 -#, fuzzy -#| msgid "Password" msgid "Add Password" -msgstr "Mot de passe" +msgstr "Ajouter un mot de passe" #: plinth/modules/bepasty/views.py:119 -#, fuzzy -#| msgid "Password updated" msgid "Password deleted." -msgstr "Mot de passe mis à jour" +msgstr "Mot de passe supprimé." #: plinth/modules/bind/__init__.py:29 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 "" -"BIND vous permet de publier sur l'internet vos informations DNS (Système de " +"BIND vous permet de publier sur Internet vos informations DNS (Système de " "Noms de Domaines) et de résoudre les requêtes DNS pour les appareils de " "votre réseau local." @@ -887,12 +888,132 @@ msgstr "Rafraîchir l’adresse IP et les domaines" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "Configuration mise à jour" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Administrer l’application Syncthing" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Nom du dépôt" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Un partage existe déjà avec ce nom." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Supprimer le dépôt Git %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Supprimer %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Gérer les dépôts" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Créer un dépôt" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Aucun dépôt disponible." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Supprimer le site %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Dépôt créé." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred while creating the repository." +msgid "An error occurred while creating the library." +msgstr "Une erreur est survenue pendant la création du dépôt." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} supprimé." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "La suppression de {name} a échoué : {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -901,11 +1022,11 @@ msgid "" "advanced functions that are not usually required. A web based terminal for " "console operations is also available." msgstr "" -"Cockpit est un gestionnaire de serveur qui simplifie l'administration de " -"serveurs GNU/Linux à l'aide d'un navigateur web. Sur une {box_name}, des " -"contrôles sont disponibles pour des fonctions avancées qui ne sont pas " -"nécessaires habituellement. Un terminal web est également disponible pour " -"des opérations depuis une console." +"Cockpit est un gestionnaire de serveur qui simplifie l’administration de " +"serveurs GNU/Linux à l’aide d’un navigateur web. Sur une {box_name}, des " +"contrôles sont disponibles pour de nombreuses fonctions avancées qui ne sont " +"pas nécessaires dans la plupart des cas. Un terminal web est également " +"fourni pour les opérations d’administration réalisables via une console." #: plinth/modules/cockpit/__init__.py:38 msgid "" @@ -914,6 +1035,12 @@ msgid "" "firewall ports and advanced networking such as bonding, bridging and VLAN " "management." msgstr "" +"Cockpit peut être utilisé pour des opérations avancées sur le stockage " +"telles que le partitionnement de disques et la gestion de grappes de disques " +"RAID. Il peut aussi être utilisé pour l’ouverture de ports personnalisés sur " +"le pare-feu, ainsi que les opérations de réseau avancées telles que " +"l’agrégation de liens (« bonding »), la création de ponts (« bridging ») et " +"la gestion de réseaux virtuels VLAN." #: plinth/modules/cockpit/__init__.py:43 #, python-brace-format @@ -954,8 +1081,8 @@ msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" -"Vous pouvez ici configurer certains paramètres globaux comme le nom de " -"machine, le nom de domaine, la page d’accueil du serveur web, etc." +"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:52 msgid "General Configuration" @@ -1002,8 +1129,8 @@ msgid "" msgstr "" "Le nom de machine est le nom local par lequel les autres appareils sur le " "réseau local joindront votre {box_name}. Le nom doit commencer et se " -"terminer par une lettre de l'alphabet ou un chiffre et contenir seulement " -"des lettres de l'alphabet, des chiffres ou des traits d’union « - ». Sa " +"terminer par une lettre de l’alphabet ou un chiffre et contenir seulement " +"des lettres de l’alphabet, des chiffres ou des traits d’union « - ». Sa " "longueur maximum est de 63 signes." #: plinth/modules/config/forms.py:57 @@ -1023,8 +1150,8 @@ msgstr "" "Le nom de domaine est le nom global par lequel les autres appareils sur " "Internet peuvent joindre votre {box_name}. Le nom ne doit contenir que des " "mots ou « labels » séparés par des points. Chaque label doit commencer et se " -"terminer par une lettre de l'alphabet ou un chiffre et contenir uniquement " -"des lettres de l'alphabet, des chiffres ou des traits d’union « - ». La " +"terminer par une lettre de l’alphabet ou un chiffre et contenir uniquement " +"des lettres de l’alphabet, des chiffres ou des traits d’union « - ». La " "longueur maximum d'un label est de 63 signes. La longueur totale du nom de " "domaine ne doit pas excéder 253 signes." @@ -1042,12 +1169,12 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" "Sélectionnez la page qui sera affichée par défaut lorsque quelqu’un visite " -"votre {box_name} sur le Web. Une utilisation classique est de mettre votre " -"blogue ou votre wiki en page d’accueil lorsque quelqu’un visite le nom de " -"domaine. Veuillez noter qu’en sélectionnant une page d’accueil différente de " -"« Gestion de la {box_name} (Plinth) », vos utilisateurs devront " +"votre {box_name} sur le Web. Vous pouvez typiquement utiliser cette option " +"pour mettre votre blogue ou votre wiki en page d’accueil lorsque quelqu’un " +"visite votre nom de domaine. Veuillez noter qu’avec une page d’accueil autre " +"que « Gestion de la {box_name} (Plinth) », vos utilisateurs devront " "explicitement ajouter le chemin /plinth ou /freedombox à l’adresse de la " -"{box_name} pour accéder à cette interface." +"{box_name} pour accéder à la présente interface." #: plinth/modules/config/forms.py:91 msgid "Show advanced apps and features" @@ -1110,7 +1237,7 @@ msgstr "" "Coturn est un serveur facilitant les appels audios/vidéos ainsi que les " "conférences, en fournissant une implémentation des protocoles TURN et STUN. " "Les autres types de serveurs de communication, comme WebRTC et SIP, peuvent " -"l'utiliser afin d'établir un appel entre plusieurs parties qui n'auraient " +"l’utiliser afin d'établir un appel entre plusieurs parties qui n’auraient " "pas pu se connecter entre elles autrement." #: plinth/modules/coturn/__init__.py:35 @@ -1118,8 +1245,8 @@ msgid "" "It is not meant to be used directly by users. Servers such as matrix-synapse " "need to be configured with the details provided here." msgstr "" -"Ceci n'est pas sensé être utilisé directement par les utilisateurs. Les " -"serveurs du type matrix-synapse nécessitent d'être configurés avec les " +"Il n’est pas destiné à être utilisé directement par les utilisateurs finaux. " +"Les serveurs du type matrix-synapse nécessitent d’être configurés avec les " "détails fournis ici." #: plinth/modules/coturn/__init__.py:52 @@ -1130,11 +1257,13 @@ msgstr "Coturn" msgid "VoIP Helper" msgstr "Assistant de VoIP" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "Domaine TLS" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1145,20 +1274,20 @@ msgstr "" #: plinth/modules/coturn/templates/coturn.html:15 msgid "Use the following URLs to configure your communication server:" msgstr "" -"Veuillez utiliser l'URL suivante pour configurer votre serveur de " +"Veuillez utiliser l’URL suivante pour configurer votre serveur de " "communication :" #: plinth/modules/coturn/templates/coturn.html:26 msgid "Use the following shared authentication secret:" -msgstr "Veuillez utiliser les secrets d'authentification partagés suivants :" +msgstr "Veuillez utiliser les secrets d’authentification partagés suivants :" #: plinth/modules/datetime/__init__.py:25 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." msgstr "" -"Le serveur de temps réseau est un programme permettant de maintenir l'heure " -"du système synchronisée avec les serveurs sur Internet." +"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 msgid "Date & Time" @@ -1239,23 +1368,19 @@ msgstr "" #: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" -msgstr "Diagnostiques" +msgstr "Diagnostics" #: plinth/modules/diagnostics/__init__.py:102 -#, fuzzy -#| msgid "Quassel" msgid "passed" -msgstr "Quassel" +msgstr "réussi" #: plinth/modules/diagnostics/__init__.py:103 -#, fuzzy -#| msgid "Setup failed." msgid "failed" -msgstr "Échec de l’installation." +msgstr "échoué" #: plinth/modules/diagnostics/__init__.py:104 msgid "error" -msgstr "" +msgstr "erreur" #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 @@ -1283,7 +1408,7 @@ msgstr "Résultats des diagnostics" #: plinth/modules/diagnostics/templates/diagnostics_app.html:17 msgid "This app does not support diagnostics" -msgstr "Cette application n'est pas compatible avec les tests de diagnostic." +msgstr "Cette application n’est pas compatible avec les tests de diagnostic" #: plinth/modules/diagnostics/templates/diagnostics_results.html:10 msgid "Test" @@ -1316,7 +1441,7 @@ msgstr "Réseau social fédéré" #: plinth/modules/diaspora/forms.py:13 msgid "Enable new user registrations" -msgstr "Activer l'inscription de nouveaux utilisateurs" +msgstr "Activer l’inscription de nouveaux utilisateurs" #: plinth/modules/diaspora/manifest.py:11 msgid "dandelion*" @@ -1327,8 +1452,8 @@ msgid "" "It is an unofficial webview based client for the community-run, distributed " "social network diaspora*" msgstr "" -"Il s’agit d’un client basé sur une vue web non officielle pour le réseau " -"social distribué et communautaire diaspora*" +"Il s’agit d’un client non officiel pour le réseau social distribué et " +"communautaire diaspora*, basé sur une vue web" #: plinth/modules/diaspora/templates/diaspora-post-setup.html:16 #, python-format @@ -1339,8 +1464,8 @@ msgid "" "podname wouldn't be accessible.
You can access the diaspora* pod at diaspora.%(domain_name)s " msgstr "" -"Le domaine du nœud diaspora* (pod) est défini comme %(domain_name)s. " -"Les identifiants utilisateur seront du type username@diaspora." +"Le nœud diaspora* (pod) utilise le domaine %(domain_name)s. Les " +"identifiants utilisateur seront du type username@diaspora." "%(domain_name)s
Si le nom de domaine de la FreedomBox est modifié, " "toutes les données des utilisateurs enregistrés auprès du nœud avec l’ancien " "nom seront rendues inaccessibles.
Vous pouvez accéder au nœud diaspora* " @@ -1372,7 +1497,7 @@ msgid "" "24h), it may be hard for others to find you on the Internet. This will " "prevent others from finding services which are provided by this {box_name}." msgstr "" -"Si votre fournisseur d'accès change régulièrement votre adresse IP (par ex. " +"Si votre fournisseur d’accès change régulièrement votre adresse IP (par ex. " "toutes les 24 h), il pourrait être difficile de vous retrouver sur Internet. " "Et ceci empêchera d’autres utilisateurs de découvrir les services proposés " "par cette {box_name}." @@ -1389,7 +1514,7 @@ msgid "" msgstr "" "La solution consiste à assigner un nom DNS à votre adresse IP et " "d’actualiser le nom DNS à chaque fois que votre IP est modifiée par votre " -"fournisseur d'accès. Le système de DNS dynamique vous permet de publier " +"fournisseur d’accès. Le système de DNS dynamique vous permet de publier " "votre adresse IP courante vers un serveur GnuDIP. Le serveur se charge ensuite " "d’assigner votre nom DNS à la nouvelle IP, de sorte que si quelqu’un sur " @@ -1450,7 +1575,7 @@ msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -"Si ce choix est sélectionné, votre nom d'utilisateur et votre mot de passe " +"Si ce choix est sélectionné, votre nom d’utilisateur et votre mot de passe " "seront utilisés pour une authentification HTTP de base." #: plinth/modules/dynamicdns/forms.py:51 @@ -1468,7 +1593,7 @@ 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 : " "http://myip.datasystems24.de). Cette URL sera utilisée si votre {box_name} " -"n'est pas connectée directement à Internet (par exemple lorsqu’elle est " +"n’est pas connectée directement à Internet (par exemple lorsqu’elle est " "connectée à un routeur à translation d’adresse réseau « NAT »)." #: plinth/modules/dynamicdns/forms.py:62 @@ -1478,17 +1603,15 @@ msgstr "" #: plinth/modules/dynamicdns/forms.py:65 msgid "GnuDIP" -msgstr "" +msgstr "GnuDIP" #: plinth/modules/dynamicdns/forms.py:68 -#, fuzzy -#| msgid "Update URL" msgid "other update URL" -msgstr "URL d’actualisation" +msgstr "autre URL d’actualisation" #: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" -msgstr "Activer le DNS Dynamique" +msgstr "Activer le DNS dynamique" #: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" @@ -1496,7 +1619,7 @@ msgstr "Type de service" #: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" -msgstr "Adresse Serveur GnuDIP" +msgstr "Adresse du serveur GnuDIP" #: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" @@ -1515,7 +1638,7 @@ msgid "Use HTTP basic authentication" msgstr "Utiliser l’authentification HTTP basique" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Nom d’utilisateur" @@ -1555,7 +1678,7 @@ msgstr "" "Si vous cherchez un compte DNS dynamique gratuit, vous pourrez sans doute " "trouver un service compatible GnuDIP sur gnudip.datasystems24.net ou un " -"service à base d'URL d’actualisation sur freedns.afraid.org." #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1566,9 +1689,9 @@ msgid "" "port 443 (HTTPS)." msgstr "" "Si votre %(box_name)s est connectée derrière un routeur à translation " -"d’adresse réseau (NAT), n'oubliez pas d'ajouter une redirection pour les " -"ports 80 (serveur http) et 443 (serveur sécurisé https) vers l'IP de votre " -"%(box_name)s. La redirection se configure sur l'interface web de votre " +"d’adresse réseau (NAT), n’oubliez pas d’ajouter une redirection pour les " +"ports 80 (serveur http) et 443 (serveur sécurisé https) vers l’IP de votre " +"%(box_name)s. La redirection se configure sur l’interface web de votre " "routeur." #: plinth/modules/dynamicdns/templates/dynamicdns_configure.html:15 @@ -1577,7 +1700,7 @@ msgid "" "functions may not work (but the main functionality should work)." msgstr "" "Vous avez désactivé Javascript. Le mode formulaire dynamique est désactivé, " -"quelques fonctions d'aide pourraient ne pas marcher (mais la fonctionnalité " +"quelques fonctions d’aide pourraient ne pas marcher (mais la fonctionnalité " "principale devrait fonctionner)." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:9 @@ -1605,12 +1728,12 @@ msgid "" "for this, otherwise IP changes will not be detected). In case the WAN IP " "changes, it may take up to %(timer)s minutes until your DNS entry is updated." msgstr "" -"Derrière un NAT. Cela signifie que votre fournisseur d'URL pour DNS " -"dynamique sondera « l'URL pour rechercher l'IP publique » afin de détecter " -"d'éventuels changements (c'est pour cela que « l'URL pour rechercher l'IP " -"publique » est nécessaire, sinon les changements d'adresse IP ne seront pas " -"détectés). Cela peut prendre %(timer)s minutes avant la mise à jour de votre " -"entrée DNS en cas de modification de l'IP publique." +"Derrière un NAT. Cela signifie que votre fournisseur d’URL pour DNS " +"dynamique sondera « l’URL pour rechercher l’IP publique » afin de détecter " +"d’éventuels changements (c’est pour cela que « l’URL pour rechercher l’IP " +"publique » est nécessaire, sinon les changements d’adresse IP ne seront pas " +"détectés). La mise à jour de votre entrée DNS peut prendre jusqu’à %(timer)s " +"minutes en cas de modification de l’IP publique." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:33 msgid "Last update" @@ -1744,7 +1867,7 @@ msgid "" "like username@%(domainname)s. You can setup your domain on the system " "Configure page." msgstr "" -"Le domaine de votre serveur XMPP est défini comme %(domainname)s. Les " +"Votre serveur XMPP utilise le domaine %(domainname)s. Les " "identifiants utilisateur seront du type : username@%(domainname)s. " "Vous pouvez configurer le domaine de votre système sur la page Configurer." @@ -1860,6 +1983,9 @@ msgid "" "Advanced firewall operations such as opening custom ports are provided by " "the Cockpit app." msgstr "" +"Les opérations de pare-feu avancées telles que l’ouverture de ports " +"personnalisés sont accessibles dans l’appli Cockpit." #: plinth/modules/first_boot/forms.py:14 #, python-brace-format @@ -1870,7 +1996,7 @@ msgid "" msgstr "" "Entrez le code secret généré durant l’installation de la FreedomBox. Il peut " "également être obtenu en lançant la commande « sudo cat /var/lib/plinth/" -"firstboot-wizard-secret » sur votre {box_name}." +"firstboot-wizard-secret » sur votre {box_name}" #: plinth/modules/first_boot/forms.py:19 msgid "Firstboot Wizard Secret" @@ -1916,21 +2042,21 @@ msgid "" "available graphical clients. And you can share your code with people around " "the world." msgstr "" -"Git est un système distribué de gestion de versions afin de suivre les " +"Git est un système distribué de gestion de versions destiné à suivre les " "changements du code source pendant le développement de logiciels. Gitweb " -"offre une interface Web aux dépôts Git. Vous pouvez parcourir l’historique " -"et le contenu du code source, utiliser la recherche pour trouver des " -"archivages et du code spécifiques. Vous pouvez aussi cloner des dépôts et " -"téléverser des changements de code avec un client Git en ligne de commande " -"ou avec de nombreux clients graphiques existants. Vous pouvez ainsi partager " -"votre code source avec d’autres, tout autour du monde." +"offre une interface web pour gérer des dépôts Git. Il vous permet de " +"parcourir l’historique et le contenu du code source, d’effectuer des " +"recherches de versions ou d’éléments de code spécifiques. Vous pourrez aussi " +"cloner ces dépôts et téléverser des changements de code depuis un client Git " +"en ligne de commande ou l’un des nombreux clients graphiques existants. " +"Partagez ainsi votre code source avec d’autres, tout autour du monde." #: plinth/modules/gitweb/__init__.py:35 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -"Pour en apprendre plus sur l'utilisation de Git, consultez ce tutoriel Git." #: plinth/modules/gitweb/__init__.py:51 @@ -1976,7 +2102,7 @@ msgstr "Dépôt privé" #: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." -msgstr "Ne permet l'accès à ce dépôt qu'aux utilisateurs autorisés." +msgstr "Ne permet l’accès à ce dépôt qu’aux utilisateurs autorisés." #: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." @@ -1991,14 +2117,12 @@ msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "Une chaîne alpha-numérique qui identifie de manière unique le dépôt." #: plinth/modules/gitweb/forms.py:134 -#, fuzzy -#| msgid "Default Skin" msgid "Default branch" -msgstr "Thème par défaut" +msgstr "Branche par défaut" #: plinth/modules/gitweb/forms.py:135 msgid "Gitweb displays this as a default branch." -msgstr "" +msgstr "Gitweb affiche cette branche comme branche par défaut." #: plinth/modules/gitweb/manifest.py:21 msgid "Git" @@ -2040,12 +2164,6 @@ msgstr "Supprimer le dépôt Git %(name)s" msgid "Delete this repository permanently?" msgstr "Supprimer définitivement ce dépôt ?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Supprimer %(name)s" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Dépôt créé." @@ -2062,27 +2180,15 @@ msgstr "Dépôt modifié." msgid "Edit repository" msgstr "Modifier le dépôt" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} supprimé." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "La suppression de {name} n'a pas abouti : {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Documentation" #: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 -#, fuzzy -#| msgid "Manual" msgctxt "User guide" msgid "Manual" -msgstr "Manuel" +msgstr "Manuel utilisateur" #: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 @@ -2096,7 +2202,7 @@ msgstr "Obtenir de l’aide" #: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" -msgstr "Faire un retour d'utilisation" +msgstr "Partagez vos impressions" #: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 @@ -2123,8 +2229,8 @@ msgstr "" "protégeant votre vie privée et vos données. %(box_name)s intègre des " "applications permettant d’héberger par exemple un blogue, un wiki, un site " "web, un réseau social, de gérer des courriels, un serveur mandataire web ou " -"un relais Tor, sur une machine qui peut également remplacer votre routeur Wi-" -"Fi. De cette manière vos données restent sous votre contrôle." +"un relais Tor, le tout sur une machine qui peut également remplacer votre " +"routeur Wi-Fi. De cette manière vos données restent sous votre contrôle." #: plinth/modules/help/templates/help_about.html:30 msgid "" @@ -2153,7 +2259,7 @@ msgid "" "package." msgstr "" "Il existe de nombreux projets dont le but est de développer une architecture " -"distribuée de l'Internet. %(box_name)s vise à intégrer ces différents " +"distribuée de l’Internet. %(box_name)s vise à intégrer ces différents " "projets dans un système unique et facile à utiliser." #: plinth/modules/help/templates/help_about.html:51 @@ -2162,7 +2268,7 @@ msgid "" "For more information about the %(box_name)s project, see the %(box_name)s Wiki." msgstr "" -"Pour plus d'informations sur le projet %(box_name)s, visitez le Wiki %(box_name)s." #: plinth/modules/help/templates/help_about.html:60 @@ -2249,7 +2355,7 @@ msgid "" "improve them on our discussion forum." msgstr "" -"Faites-nous part de fonctionnalités qui vous manquent, de vos applications " +"Faites-nous part des fonctionnalités qui vous manquent, de vos applications " "favorites et de vos idées pour les améliorer sur notre forum de discussions." @@ -2263,9 +2369,9 @@ msgstr "" "Si vous rencontrez des bogues ou des problèmes, veuillez utiliser notre outil de suivi de tickets (en anglais) pour que nos " -"développeurs en soient informés. Avant cela, vérifiez que le problème n'a " -"pas déjà été remonté auparavant, et si ce n’est pas le cas cliquez sur le " -"bouton « Nouveau ticket »." +"développeurs en soient informés. Vérifiez tout d’abord que votre problème " +"n’a pas déjà été remonté, et si tel n’est pas le cas cliquez sur le bouton " +"« Nouveau ticket »." #: plinth/modules/help/templates/help_feedback.html:36 msgid "Thank you!" @@ -2292,7 +2398,7 @@ msgid "" "%(box_name)s project wiki contains further information." msgstr "" "Le wiki " -"du projet %(box_name)scontient davantage d'informations." +"du projet %(box_name)scontient davantage d’informations." #: plinth/modules/help/templates/help_index.html:30 #, python-format @@ -2302,7 +2408,7 @@ msgid "" "\"> mailing list. The list archives also contain information about " "problems faced by other users and possible solutions." msgstr "" -"Pour obtenir de l'aide de la communauté %(box_name)s, vous pouvez poser vos " +"Pour obtenir de l’aide de la communauté %(box_name)s, vous pouvez poser vos " "questions en anglais sur la liste de discussion du projet. " "Les archives de la liste contiennent aussi des informations sur les " @@ -2318,10 +2424,10 @@ msgid "" "channel using the IRC web interface." msgstr "" "De nombreux contributeurs et utilisateurs de %(box_name)s sont également " -"présents sur le réseau IRC irc.oftc.net. Rejoignez le canal (en anglais) #freedombox en utilisant " -"l'interface web pour IRC et demandez de l'aide." +"randomnick=1&channels=freedombox&prompt=1\"> #freedombox (en anglais) " +"pour utiliser l’interface web IRC et demander de l’aide." #: plinth/modules/help/templates/help_manual.html:25 msgid "Download as PDF" @@ -2335,7 +2441,7 @@ msgid "" "contributors." msgstr "" "Si vous avez besoin d’aide pour réaliser une action ou si vous faites face à " -"un problème en utilisant la %(box_name)s, vous pouvez demander de l'aide à " +"un problème en utilisant la %(box_name)s, vous pouvez demander de l’aide à " "la communauté d’utilisateurs et de contributeurs." #: plinth/modules/help/templates/help_support.html:20 @@ -2362,7 +2468,7 @@ msgstr "" #: plinth/modules/help/templates/statuslog.html:10 msgid "Status Log" -msgstr "Journal d'état" +msgstr "Journal d’état" #: plinth/modules/help/templates/statuslog.html:13 #, python-format @@ -2373,10 +2479,10 @@ msgid "" "attach this status log to the bug report." msgstr "" "Voici les %(num_lines)s dernières lignes du journal d’état de cette " -"interface web. Si vous voulez nous faire parvenir un rapport d’erreur, " -"veuillez utiliser l’outil de suivi de tickets et attacher ce journal " -"d’état au rapport d’erreur." +"interface web. Pour nous faire parvenir un rapport d’erreur, veuillez " +"utiliser l’outil de suivi de tickets et attacher ce journal d’état au " +"rapport d’erreur." #: plinth/modules/help/templates/statuslog.html:24 msgid "" @@ -2425,12 +2531,12 @@ msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -"La configuration aura lieu lors de la première visite à l’interface web mise " -"à disposition." +"L’interface web fournie vous guidera dans les étapes de configuration lors " +"de votre première visite." #: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" -msgstr "Gérer l'application I2P" +msgstr "Gérer l’application I2P" #: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" @@ -2629,7 +2735,7 @@ msgstr "Gobby" #: plinth/modules/infinoted/manifest.py:14 msgid "Gobby is a collaborative text editor" -msgstr "Gobby est un éditeur de texte collaboratif." +msgstr "Gobby est un éditeur de texte collaboratif" #: plinth/modules/infinoted/manifest.py:17 #, python-brace-format @@ -2645,7 +2751,7 @@ msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -"JSXC est un client web pour XMPP. Il s'utilise typiquement avec un serveur " +"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:43 plinth/modules/jsxc/manifest.py:10 @@ -2657,7 +2763,7 @@ msgid "Chat Client" msgstr "Client de discussion" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "Information de licence JavaScript" @@ -2769,8 +2875,8 @@ msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -"Certificat révoqué avec succès pour le domaine {domain}. Cette modification " -"peut nécessiter quelques instants avant de prendre effet." +"Le certificat du domaine {domain} a été révoqué. Cette modification peut " +"nécessiter quelques instants avant de prendre effet." #: plinth/modules/letsencrypt/views.py:47 #, python-brace-format @@ -2782,7 +2888,7 @@ msgstr "" #: plinth/modules/letsencrypt/views.py:77 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" -msgstr "Certificat obtenu avec succès pour le domaine {domain}" +msgstr "Le certificat pour le domaine {domain} a été obtenu avec succès" #: plinth/modules/letsencrypt/views.py:65 #: plinth/modules/letsencrypt/views.py:82 @@ -2793,7 +2899,7 @@ msgstr "Échec de l'obtention du certificat pour le domaine {domain} : {error}" #: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" -msgstr "Certificat supprimé avec succès pour le domaine {domain}" +msgstr "Le certificat pour le domaine {domain} a été supprimé" #: plinth/modules/letsencrypt/views.py:99 #, python-brace-format @@ -2820,19 +2926,14 @@ msgstr "" "autres serveurs Matrix grâce la fédération." #: plinth/modules/matrixsynapse/__init__.py:40 -#, fuzzy -#| msgid "" -#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Element client is recommended." msgstr "" -"Pour communiquer, vous pouvez utiliser les clients disponibles pour mobile, ordinateur de bureau et " -"web. Le client Riot est recommandé." +"Pour communiquer, vous pouvez utiliser un des clients disponibles pour mobile, ordinateur de bureau " +"et web. Le client Element est recommandé." #: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" @@ -2854,7 +2955,7 @@ msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 msgid "Element" -msgstr "" +msgstr "Element" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2881,9 +2982,8 @@ msgid "" " " msgstr "" "\n" -" Attention ! Le changement du nom de domaine après " -"l’installation initiale\n" -" n’est actuellement pas supporté.\n" +" Attention ! Le changement de nom de domaine après\n" +" l’installation initiale n’est actuellement pas supporté.\n" " " #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:35 @@ -2902,10 +3002,10 @@ msgid "" "look like @username:%(domain_name)s. Changing the domain name after " "the initial setup is currently not supported." msgstr "" -"Le domaine de votre serveur Matrix est défini comme %(domain_name)s. Les identifiants utilisateur seront du type @identifiant:" -"%(domain_name)s. Le changement du nom de domaine après l’installation " -"initiale n’est actuellement pas supporté." +"Votre serveur Matrix utilise le domaine %(domain_name)s. Les " +"identifiants utilisateur seront du type @identifiant:%(domain_name)s. Le changement du nom de domaine après l’installation initiale n’est " +"actuellement pas supporté." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:21 msgid "" @@ -3171,7 +3271,7 @@ msgstr "Serveur de streaming de médias" #: plinth/modules/minidlna/__init__.py:47 msgid "MiniDLNA" -msgstr "" +msgstr "MiniDLNA" #: plinth/modules/minidlna/__init__.py:48 msgid "Simple Media Server" @@ -3237,7 +3337,7 @@ msgid "" msgstr "" "Les utilisateurs membres des groupes admin ou ed2k peuvent l’utiliser au " "travers de l’interface web. Les utilisateurs du groupe admin peuvent " -"également l’utiliser depuis n'importe quel client sur téléphone ou " +"é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:35 @@ -3280,15 +3380,16 @@ msgid "" "monkeysphere.info/getting-started-ssh/\"> Monkeysphere SSH documentation " "for more details." msgstr "" -"Avec Monkeysphere, une clef OpenPGP peut être générée pour chaque domaine " -"configuré pour les connexions SSH. La clef publique OpenPGP peut alors être " -"téléversée sur les serveurs de clefs OpenPGP. Les utilisateurs se connectant " -"à cette machine via SSH pourront ainsi vérifier qu’ils se connectent au bon " -"serveur. Pour que les utilisateurs puissent faire confiance à la clef, au " -"moins une personne (habituellement le propriétaire de la machine) doit la " -"signer en utilisant le processus habituel de signature de clef OpenPGP. Pour " -"plus de détails, voir la documentation SSH de Monkeysphere." +"Monkeysphere peut être utilisé pour générer une clef OpenPGP pour chaque " +"domaine acceptant les connexions SSH. La clef publique OpenPGP peut alors " +"être téléversée sur les serveurs de clefs OpenPGP. Les utilisateurs se " +"connectant à cette machine via SSH pourront ainsi s’assurer que le serveur " +"auquel ils se connectent est réellement le serveur demandé. Pour que les " +"utilisateurs puissent faire confiance à la clef, au moins une personne " +"(habituellement le propriétaire de la machine) doit la signer en utilisant " +"le processus habituel de signature de clef OpenPGP. Pour plus de détails, " +"référez-vous à la documentation SSH de Monkeysphere." #: plinth/modules/monkeysphere/__init__.py:27 msgid "" @@ -3300,14 +3401,14 @@ msgid "" "is available on the " "Monkeysphere website." msgstr "" -"Monkeysphere peut également générer une clé OpenPGP pour chaque certificat " -"de serveur web sécurisé (HTTPS) installé sur cette machine. La clé publique " -"OpenPGP peut ensuite être téléversée sur les serveurs de clés OpenPGP. Les " +"Monkeysphere peut également générer une clef OpenPGP pour chaque certificat " +"de serveur web sécurisé (HTTPS) installé sur cette machine. La clef publique " +"OpenPGP peut ensuite être téléversée sur les serveurs de clefs OpenPGP. Les " "utilisateurs accédant au serveur web avec une adresse HTTPS pourront ainsi " -"s'assurer qu'ils se connectent bien au bon serveur. Pour valider le " -"certificat, l'utilisateur aura besoin d'installer une série de programmes " -"depuis le site " -"Monkeysphere." +"s’assurer que le serveur auquel ils se connectent est réellement le serveur " +"demandé. Pour valider le certificat, l’utilisateur a besoin d’installer une " +"série de logiciels comme expliqué sur le site Monkeysphere." #: plinth/modules/monkeysphere/__init__.py:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 @@ -3407,7 +3508,7 @@ msgid "" "After this key is published to the keyservers, it can be signed using GnuPG with the following commands:" msgstr "" -"Après la publication de la clé sur les serveurs de clés, cette clé peut être " +"Après la publication de la clef sur les serveurs de clefs, elle peut être " "signée en utilisant GnuPG grâce aux " "commandes suivantes :" @@ -3439,7 +3540,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3447,29 +3548,30 @@ msgstr "" "Mumble est un logiciel de tchat vocal de haute qualité, open source, crypté " "et à faible temps de latence." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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 "" -"Vous pouvez vous connecter au serveur Mumble sur un port normal Mumble " -"64738. Il existe des clients permettant " -"de se connecter à Mumble depuis un ordinateur ou un appareil Android." +"Vous pouvez vous connecter au serveur Mumble sur le port Mumble habituel " +"64738. Utilisez l’un des clients " +"permettant de se connecter à Mumble depuis votre ordinateur ou votre " +"appareil Android." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Tchat vocal" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "Définir le mot de passe du super utilisateur" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3490,9 +3592,9 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." -msgstr "Mot de passe du super utilisateur mis à jour avec succès." +msgstr "Le mot de passe du super utilisateur a été mis à jour." #: plinth/modules/names/__init__.py:26 #, python-brace-format @@ -3521,10 +3623,8 @@ msgid "All web apps" msgstr "Toutes les applications web" #: plinth/modules/names/templates/names.html:16 -#, fuzzy -#| msgid "Service" msgid "Services" -msgstr "Service" +msgstr "Services" #: plinth/modules/networks/__init__.py:40 msgid "" @@ -3615,11 +3715,9 @@ msgid "Shared" msgstr "Partagée" #: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 -#, fuzzy -#| msgid "Manual" msgctxt "Not automatically" msgid "Manual" -msgstr "Manuel" +msgstr "Manuelle" #: plinth/modules/networks/forms.py:54 msgid "Netmask" @@ -3868,21 +3966,13 @@ msgstr "" "block\">Cela signifie que les appareils sur Internet peuvent vous joindre " "quand vous êtes connecté à Internet. À chaque connexion avec votre " "fournisseur d’accès à Internet (FAI), il se peut que vous ayez une adresse " -"IP différente, en particulier après un certain temps hors ligne. De nombreux " -"FAI proposent ce type de connectivité. Si vous avez une adresse IP publique " -"mais ne savez pas si celle-ci peut changer dans le temps, il est plus sûr de " -"choisir cette option.

" +"IP différente, en particulier après une certaine durée sans connexion. De " +"nombreux FAI proposent ce type de connectivité. Si vous avez une adresse IP " +"publique mais ne savez pas si celle-ci peut changer dans le temps, il est " +"plus sûr de choisir cette option.

" #: plinth/modules/networks/forms.py:360 -#, fuzzy, python-brace-format -#| msgid "" -#| "I have a public IP address that does not change overtime (recommended)

This means that devices on the Internet can reach " -#| "you when you are connected to the Internet. Every time you connect to the " -#| "Internet with your Internet Service Provider (ISP), you always get the " -#| "same IP address. This is the most trouble-free setup for many {box_name} " -#| "services but very few ISPs offer this. You may be able to get this " -#| "service from your ISP by making an additional payment.

" +#, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

This means that devices on the Internet can reach you " @@ -3892,13 +3982,13 @@ msgid "" "but very few ISPs offer this. You may be able to get this service from your " "ISP by making an additional payment.

" msgstr "" -"J’ai une adresse IP publique ne changeant pas avec le temps (recommandé)

Cela signifie que les appareils sur Internet peuvent " -"vous joindre quand vous êtes connecté à Internet. À chaque connexion avec " -"votre fournisseur d’accès à Internet (FAI), vous avez toujours la même " -"adresse IP. Il s’agit de la situation la moins problématique pour beaucoup " -"des services de la {box_name} mais très peu de FAI proposent cela. Il est " -"possible que votre FAI propose cette option moyennant un surcoût.

" +"J’ai toujours la même adresse IP publique statique (recommandé)

Cela signifie que les appareils sur Internet peuvent vous " +"joindre quand vous êtes connecté à Internet. À chaque connexion avec votre " +"fournisseur d’accès à Internet (FAI), vous avez toujours la même adresse IP. " +"Il s’agit de la situation la moins problématique pour beaucoup des services " +"de la {box_name} mais très peu de FAI le proposent. Il se peut que votre FAI " +"propose cette option moyennant un surcoût.

" #: plinth/modules/networks/forms.py:373 #, python-brace-format @@ -3980,8 +4070,8 @@ msgid "" msgstr "" "Le routeur n’est pas configuré actuellement

Choisissez cette option si vous n’avez pas encore pu configurer le " -"routeur et souhaitez vous faire rappeler de le configurer plus tard. Il se " -"peut que d’autres étapes de configuration échouent.

" +"routeur et souhaitez vous faire rappeler de le configurer ultérieurement. Il " +"se peut que d’autres étapes de configuration échouent.

" #: plinth/modules/networks/templates/connection_show.html:28 msgid "Edit connection" @@ -3990,7 +4080,7 @@ msgstr "Modifier la connexion" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Modifier" @@ -4132,7 +4222,7 @@ msgstr "Sécurité" #: plinth/modules/networks/templates/connection_show.html:276 #: plinth/modules/networks/templates/connection_show.html:295 msgid "Firewall zone" -msgstr "Zone pare-feu" +msgstr "Zone de pare-feu" #: plinth/modules/networks/templates/connection_show.html:265 msgid "" @@ -4162,6 +4252,8 @@ msgid "" "This interface is not maintained by %(box_name)s. For security, it is " "automatically assigned to the external zone." msgstr "" +"Cette interface n’est pas gérée par la %(box_name)s. Pour des raisons de " +"sécurité elle est assignée automatiquement à la zone externe." #: plinth/modules/networks/templates/connections_create.html:19 msgid "Create Connection" @@ -4267,6 +4359,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "Passer cette étape" @@ -4314,7 +4407,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_main.html:41 #: plinth/modules/networks/templates/network_topology_main.html:41 msgid "Update..." -msgstr "Actualiser…" +msgstr "Modifier…" #: plinth/modules/networks/templates/network_topology_content.html:10 #, python-format @@ -4365,7 +4458,7 @@ msgid "" "connect to %(box_name)s for their Internet connectivity." msgstr "" "Votre %(box_name)s est directement connectée à Internet et tous vos " -"appareils se connectent à la {box_name}s pour leur connectivité Internet." +"appareils passent par la %(box_name)s pour leur connectivité Internet." #: plinth/modules/networks/templates/network_topology_main.html:34 #, python-format @@ -4381,6 +4474,10 @@ msgid "" "Advanced networking operations such as bonding, bridging and VLAN management " "are provided by the Cockpit app." msgstr "" +"Les opérations de réseau avancées telles que l’agrégation de liens " +"(« bonding »), la création de ponts (« bridging ») et la gestion de réseaux " +"virtuels VLAN sont accessibles dans l’appli Cockpit." #: plinth/modules/networks/templates/router_configuration_content.html:10 #, python-format @@ -4604,11 +4701,12 @@ msgid "" "available for most platforms. Click \"Learn more...\" above for recommended " "clients and instructions on how to configure them." msgstr "" -"Pour vous connecter au réseau VPN de la %(box_name)s, vous devez télécharger " -"un profil et le fournir à un client OpenVPN sur votre mobile ou sur votre " -"ordinateur. Les clients OpenVPN sont disponibles pour de nombreuses plate-" -"formes. Cliquez sur « Application clientes » ci-dessus pour connaître les " -"clients recommandés et leurs instructions de configuration." +"Pour vous connecter au réseau privé virtuel VPN de la %(box_name)s, vous " +"devez télécharger un profil et le fournir à un client OpenVPN sur votre " +"mobile ou sur votre ordinateur. Les clients OpenVPN sont disponibles pour " +"de nombreuses plate-formes. Cliquez sur « Application clientes » ci-dessus " +"pour connaître les clients recommandés et leurs instructions de " +"configuration." #: plinth/modules/openvpn/templates/openvpn.html:74 #, python-format @@ -4812,29 +4910,29 @@ msgstr "" "définition. Par exemple, l’utilisation de ports autre que 443 pour le " "protocole HTTPS est connu pour causer des problèmes." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Serveur web (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "Le site sera accessible sur http://{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Serveur web (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "Le site sera accessible sur https://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Shell sécurisé (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -4853,16 +4951,22 @@ msgid "" "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" +"L’appli Performance vous permet de collecter, stocker et visualiser les " +"statistiques d’utilisation de la machine. Elle peut vous donner un aperçu " +"des tendances d’utilisation et vérifier si la machine est surchargée par " +"certains utilisateurs ou certains services." #: plinth/modules/performance/__init__.py:29 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." 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:46 msgid "System Monitoring" -msgstr "Contrôle Système" +msgstr "Surveillance du système" #: plinth/modules/power/__init__.py:16 msgid "Restart or shut down the system." @@ -4893,9 +4997,8 @@ msgid "" "Are you sure you want to restart? You will not be able to access this web " "interface for a few minutes until the system is restarted." msgstr "" -"Voulez-vous vraiment redémarrer ? Vous ne pourrez plus accéder à cette " -"interface web durant quelques minutes, jusqu'à ce que le système ait " -"redémarré." +"Voulez-vous vraiment redémarrer ? Cette interface web sera inaccessible " +"durant quelques minutes, le temps que le système ait redémarré." #: plinth/modules/power/templates/power_restart.html:34 msgid "" @@ -4915,8 +5018,8 @@ msgid "" "Are you sure you want to shut down? You will not be able to access this web " "interface after shut down." msgstr "" -"Voulez-vous vraiment éteindre le système ? Vous ne pourrez plus accéder à " -"cette interface web après l’extinction du système." +"Voulez-vous vraiment éteindre le système ? Cette interface web sera " +"inaccessible un fois le système éteint." #: plinth/modules/power/templates/power_shutdown.html:33 msgid "" @@ -5016,12 +5119,7 @@ msgid "Quasseldroid" msgstr "Quasseldroid" #: plinth/modules/radicale/__init__.py:29 -#, fuzzy, python-brace-format -#| msgid "" -#| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " -#| "sharing of scheduling and contact data. To use Radicale, a supported client application is " -#| "needed. Radicale can be accessed by any user with a {box_name} login." +#, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " "sharing of scheduling and contact data. To use Radicale, a is needed. Radicale can be accessed by any user with a " "{box_name} login." msgstr "" -"Radicale est un serveur pour les protocoles d’édition de calendrier en ligne " -"CalDAV et de carnet d'adresses CardDAV. Il permet de synchroniser et de " -"partager ses rendez-vous et ses contacts. Pour utiliser Radicale, une application client compatible est " -"nécessaire. N’importe quel utilisateur disposant d’un compte sur la " -"{box_name} peut accéder à Radicale." +"Radicale est un serveur pour les protocoles de gestion de calendriers en " +"ligne CalDAV et de carnets d’adresses CardDAV. Il permet de synchroniser ses " +"rendez-vous et ses contacts entre plusieurs appareils et de les partager. " +"Pour utiliser Radicale, vous devrez passer par une application " +"cliente compatible. Tous les utilisateur disposant d’un compte sur la " +"{box_name} ont accès à Radicale." #: plinth/modules/radicale/__init__.py:35 msgid "" @@ -5044,8 +5143,8 @@ msgid "" msgstr "" "Radicale inclut une interface web très sommaire, qui ne permet que la " "création de nouveaux calendriers ou carnets d’adresses. Elle ne permet pas " -"l’ajout d'événements ou de contacts, qui doivent être réalisés avec un " -"client dédié." +"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:56 #: plinth/modules/radicale/manifest.py:75 @@ -5082,10 +5181,8 @@ msgstr "" "visualiser et modifier n’importe quel agenda/carnet d’adresses." #: plinth/modules/radicale/forms.py:30 -#, fuzzy -#| msgid "Access Point" msgid "Access rights" -msgstr "Point d’accès" +msgstr "Droits d’accès" #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" @@ -5130,8 +5227,9 @@ msgid "" msgstr "" "Dans Evolution, ajoutez un nouvel agenda ou un nouveau carnet d’adresses " "avec WebDAV. Entrez l’URL du serveur Radicale (par exemple https://) et votre compte-utilisateur. Cliquer sur le bouton de " -"recherche affichera la liste de vos agendas et carnets d’adresses existants." +"de.votre.freedombox>) et votre compte-utilisateur. Cliquez sur le bouton de " +"recherche pour afficher la liste de vos agendas et carnets d’adresses " +"existants." #: plinth/modules/radicale/views.py:35 msgid "Access rights configuration updated" @@ -5144,12 +5242,12 @@ msgid "" "from an email client, including MIME support, address book, folder " "manipulation, message searching and spell checking." msgstr "" -"La messagerie web Roundcube est un client IMAP multilingue fonctionnant sur " -"un navigateur grâce à une interface similaire à celle d'une application. " -"Roundcube propose la panoplie complète des fonctionnalités attendues pour un " -"client de courriel, telles que la compatibilité MIME, un carnet d’adresses, " -"une gestion des dossiers, un outil de recherche dans les messages et un " -"correcteur orthographique." +"La messagerie web Roundcube est un client IMAP multilingue fonctionnant dans " +"un navigateur et présentant une interface similaire à celle d’une " +"application. Roundcube propose la panoplie complète des fonctionnalités " +"attendues d’un client de courriel, telles que la compatibilité MIME, un " +"carnet d’adresses, une gestion des dossiers, un outil de recherche dans les " +"messages et un correcteur orthographique." #: plinth/modules/roundcube/__init__.py:26 msgid "" @@ -5251,7 +5349,7 @@ msgstr "Client Android Samba" #: plinth/modules/samba/manifest.py:28 msgid "Ghost Commander - Samba plugin" -msgstr "" +msgstr "Module Samba pour Ghost Commander" #: plinth/modules/samba/manifest.py:42 msgid "VLC media player" @@ -5275,8 +5373,8 @@ msgid "" "Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" -"Note : seuls les répertoires créés spécialement pour seront partagés sur les " -"disques sélectionnés, et non pas les disques entiers." +"Remarque : seuls les répertoires créés spécialement pour seront partagés sur " +"les disques sélectionnés, et non pas les disques entiers." #: plinth/modules/samba/templates/samba.html:34 msgid "Disk Name" @@ -5460,12 +5558,12 @@ msgstr "Afficher le rapport de sécurité" #: plinth/modules/upgrades/templates/backports-firstboot.html:11 #: plinth/modules/upgrades/templates/upgrades_configure.html:11 msgid "Frequent Feature Updates" -msgstr "" +msgstr "Mise à jour régulière des fonctionnalités" #: plinth/modules/security/templates/security.html:19 #: plinth/modules/upgrades/templates/upgrades_configure.html:19 msgid "Frequent feature updates are activated." -msgstr "" +msgstr "La mise à jour régulière des fonctionnalités est activée." #: plinth/modules/security/templates/security.html:24 #: plinth/modules/upgrades/templates/backports-firstboot.html:14 @@ -5480,6 +5578,14 @@ msgid "" "Instead, they are maintained by contributors to Debian and the %(box_name)s " "community." msgstr "" +"En activant cette option, le système %(box_name)s et un nombre limité de " +"logiciels recevront des mises à jours plus fréquentes (via le dépôt de " +"rétroportages « backports ») pouvant inclure de nouvelles fonctionnalités. " +"Ceci vous permet de bénéficier de nouvelles fonctionnalités au bout de " +"quelques semaines plutôt que tous les 2 ans environ. Veuillez noter que les " +"logiciels bénéficiant de ces mises à jours fréquentes ne sont pas supportés " +"par l’équipe Debian en charge de la sécurité. Ils sont simplement maintenus " +"par les contributeurs de Debian et la communauté %(box_name)s." #: plinth/modules/security/templates/security_report.html:10 #: plinth/modules/security/views.py:74 @@ -5667,7 +5773,7 @@ msgid "" "web with chosen groups of users." msgstr "" "« Partages » vous permet de partager des fichiers et répertoires de votre " -"{box_name} sur Internet avec des groupes d’utilisateurs déterminés." +"{box_name} sur Internet avec des groupes d’utilisateurs bien définis." #: plinth/modules/sharing/__init__.py:38 msgid "Sharing" @@ -5789,8 +5895,8 @@ msgid "" msgstr "" "Le système prend périodiquement des instantanés dits « instantanés " "programmés », ainsi qu’avant et après chaque installation de logiciels. Les " -"instantanés plus anciens peuvent être supprimés automatiquement en fonction " -"du paramétrage qui suit." +"instantanés plus anciens seront supprimés automatiquement en fonction du " +"paramétrage qui suit." #: plinth/modules/snapshot/__init__.py:32 msgid "" @@ -5840,7 +5946,7 @@ msgstr "Instantanés d’installation de logiciels" #: plinth/modules/snapshot/forms.py:27 msgid "Enable or disable snapshots before and after software installation" msgstr "" -"Active ou désactive la prise d'instantanés avant et après l’installation de " +"Active ou désactive la prise d’instantanés avant et après l’installation de " "logiciels" #: plinth/modules/snapshot/forms.py:32 @@ -5880,16 +5986,12 @@ msgid "Yearly Snapshots Limit" msgstr "Instantanés annuels à conserver" #: plinth/modules/snapshot/forms.py:49 -#, fuzzy -#| msgid "" -#| "Keep a maximum of this many yearly snapshots. The default value is 0 " -#| "(disabled)." msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 (keep " "no yearly snapshot)." msgstr "" "Conserver au maximum ce nombre d’instantanés pris tous les ans. La valeur " -"par défaut est de 0 (désactivé)." +"par défaut est de 0 (ne pas conserver d’instantané annuel)." #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 msgid "Delete the following snapshots permanently?" @@ -6249,9 +6351,10 @@ msgid "" "root partition. Root partition can be expanded to use this space. This " "will provide you additional free space to store your files." msgstr "" -"Il y a %(expandable_root_size)s d’espace disponible non alloué après votre " -"partition racine. La partition racine peut être étendue pour l’utiliser. " -"Cela vous donnera de l’espace supplémentaire pour stocker vos fichiers." +"Il y a %(expandable_root_size)s d’espace disponible non alloué à la suite de " +"votre partition racine. La partition racine peut être étendue pour " +"l’utiliser. Cela vous donnera de l’espace supplémentaire pour stocker vos " +"fichiers." #: plinth/modules/storage/templates/storage.html:90 #: plinth/modules/storage/templates/storage_expand.html:24 @@ -6264,6 +6367,9 @@ msgid "" "Advanced storage operations such as disk partitioning and RAID management " "are provided by the Cockpit app." msgstr "" +"Les opérations avancées sur le stockage telles que le partitionnement de " +"disques et la gestion de grappes de disques RAID sont accessible dans " +"l’appli Cockpit." #: plinth/modules/storage/templates/storage_expand.html:14 #, python-format @@ -6283,7 +6389,7 @@ msgstr "Erreur lors de l’extension de la partition : {exception}" #: plinth/modules/storage/views.py:73 msgid "Partition expanded successfully." -msgstr "Partition étendue avec succès." +msgstr "Extension de la partition réalisée avec succès." #: plinth/modules/storage/views.py:91 #, python-brace-format @@ -6323,14 +6429,14 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" or " "\"syncthing\" group." msgstr "" -"En faisant tourner Syncthing sur votre {box_name}, vous ajoutez un nœud de " -"synchronisation à forte disponiblilité qui permettra à vos appareils de se " -"synchroniser plus régulièrement que simplement entre eux. Sur la {box_name} " -"une seule instance de Syncthing s’exécute, qui peut servir à plusieurs " -"utilisateurs. Chaque utilisateur peut choisir un ensemble de dossiers qui " -"lui est propre, à synchroniser entre ses appareils. L’interface web sur la " -"{box_name} est accessible uniquement aux utilisateurs membres des groupes " -"« admin » ou « syncthing »." +"En activant Syncthing sur votre {box_name}, vous ajoutez un nœud de " +"synchronisation disponible en permanence qui permettra à vos appareils de se " +"synchroniser plus régulièrement que juste entre eux. La {box_name} exécute " +"une unique instance de Syncthing qui peut servir à plusieurs utilisateurs. " +"Chaque utilisateur peut choisir un ensemble de dossiers qui lui est propre, " +"à synchroniser entre ses appareils. L’interface web sur la {box_name} est " +"accessible uniquement aux utilisateurs membres des groupes « admin » ou " +"« syncthing »." #: plinth/modules/syncthing/__init__.py:56 msgid "Administer Syncthing application" @@ -6386,7 +6492,7 @@ msgid "" "DATA. You can access Tahoe-LAFS at https://%(domain_name)s:5678." msgstr "" -"Le domaine du serveur Tahoe-LAFS est défini comme %(domain_name)s. Le " +"Lu serveur Tahoe-LAFS utilise le domaine %(domain_name)s. Le " "changement du nom de domaine de la FreedomBox nécessitera la réinstallation " "de Tahoe-LAFS et vous PERDREZ LES DONNÉES. Vous pouvez accéder à Tahoe-LAFS " "à l’adresse https://" @@ -6448,24 +6554,24 @@ msgstr "Mandataire Socks Tor" msgid "Tor Bridge Relay" msgstr "Relais Tor de type pont (« bridge relay »)" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Le port du relais Tor est disponible" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Abonné au transport obfs3" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Abonné au transport obfs4" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmez l'utilisation de Tor pour {url} sur tcp{kind}" @@ -6694,17 +6800,18 @@ msgid "" "to be unavailable briefly. If system reboot is deemed necessary, it is done " "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -"Les mises à jour sont exécutées à 6h00 tous les jours, selon votre heure " -"locale. Veuillez chosir votre fuseau horaire dans l'application Date & Time. " -"Les applications redémarrent après la mise à jour, causant brièvement leurs " -"interruptions. Si le redémarrage du système est nécessaire, il sera effectué " -"à 2h00, causant brièvement l'interruption de toutes les applications." +"Les mises à jour sont exécutées à 6h00 heure locale tous les jours. Vous " +"pouvez régler votre fuseau horaire dans l’application Date et heure. Les " +"applications sont redémarrées après leur mise à jour ce qui les rend " +"brièvement indisponibles. Lorsque qu’un redémarrage du système est " +"nécessaire, il est effectué à 2h00, rendant indisponible l’ensemble des " +"applications pour une courte période." -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Mises à jour" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "FreedomBox mise à jour" @@ -6721,19 +6828,24 @@ msgstr "" #: plinth/modules/upgrades/forms.py:20 #: plinth/modules/upgrades/templates/upgrades_configure.html:56 msgid "Activate frequent feature updates (recommended)" -msgstr "" +msgstr "Activer la mise à jour régulière des fonctionnalités (recommandé)" #: plinth/modules/upgrades/templates/backports-firstboot.html:26 msgid "" "It is strongly recommended to activate frequent feature updates. If not " "activated now, they can be activated later." msgstr "" +"Il est fortement recommandé d’activer la mise à jour régulière des " +"fonctionnalités. Si vous choisissez de ne pas l’activez maintenant, vous " +"pourrez toujours le faire par la suite." #: plinth/modules/upgrades/templates/backports-firstboot.html:33 msgid "" "Note: Once frequent feature updates are activated, they " "cannot be deactivated." msgstr "" +"Remarque : Une fois activée, la mise à jour régulière des " +"fonctionnalités ne peut plus être désactivée." #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format @@ -6758,12 +6870,16 @@ msgstr "Fermer" msgid "" "Frequent feature updates can be activated. Activating them is recommended." msgstr "" +"Vous pouvez activer la mise à jour régulière des fonctionnalités. Cette " +"option est recommandée." #: plinth/modules/upgrades/templates/upgrades_configure.html:23 msgid "" "Frequent feature updates cannot be activated. They may not be necessary on " "your distribution." msgstr "" +"La mise à jour régulière des fonctionnalités n’est pas disponibles. Elle " +"n’est sans doute pas nécessaire pour votre distribution." #: plinth/modules/upgrades/templates/upgrades_configure.html:45 #, python-format @@ -6772,10 +6888,12 @@ msgid "" "cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." msgstr "" +"Attention ! Une fois activée, la mise à jour régulière des " +"fonctionnalités ne peut plus être désactivée. Il est recommandé de prendre " +"un instantané du système via la fonction d’Instantanés de disque avant de poursuivre." #: plinth/modules/upgrades/templates/upgrades_configure.html:61 -#, fuzzy -#| msgid "Manual update" msgid "Manual Update" msgstr "Mise à jour manuelle" @@ -6785,29 +6903,22 @@ msgstr "Mise à jour en cours…" #: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" -msgstr "Mettre à jour immédiatement" +msgstr "Lancer la mise à jour" #: plinth/modules/upgrades/templates/upgrades_configure.html:81 -#, fuzzy -#| msgid "" -#| "This may take a long time to complete. During an update, " -#| "you cannot install apps. Also, this web interface may be temporarily " -#| "unavailable and show an error. In that case, refresh the page to continue." msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" "Cette opération peut prendre du temps. Pendant la durée de " -"la mise à jour, vous ne pouvez pas installer d’autre appli. Cette interface " -"web pourrait aussi être temporairement indisponible ou afficher une erreur. " -"Si cela se produit, rafraîchissez la page pour continuer." +"la mise à jour, vous ne pourrez pas installer d’autre appli. Cette interface " +"web risque aussi d’être temporairement indisponible ou d’afficher une " +"erreur. Si cela se produit, rafraîchissez la page pour continuer." #: plinth/modules/upgrades/templates/upgrades_configure.html:95 -#, fuzzy -#| msgid "Toggle recent update logs" msgid "Show recent update logs" -msgstr "Basculer les journaux de modification récents" +msgstr "Afficher les derniers journaux de mises à jour" #: plinth/modules/upgrades/views.py:57 #, python-brace-format @@ -6826,7 +6937,7 @@ msgstr "Mises à niveau automatiques désactivées" #: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." -msgstr "Mise à niveau initiée." +msgstr "Mise à jour lancée." #: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." @@ -6834,7 +6945,7 @@ msgstr "Le lancement de la mise à niveau a échoué." #: plinth/modules/upgrades/views.py:91 msgid "Frequent feature updates activated." -msgstr "" +msgstr "Mise à jour régulière des fonctionnalités activée." #: plinth/modules/users/__init__.py:39 msgid "" @@ -6855,9 +6966,9 @@ msgid "" "group may alter apps or system settings." msgstr "" "N’importe quel utilisateur peut se connecter à l’interface web de la " -"{box_name} pour consulter la liste d’applications disponibles depuis la page " -"principale. En revanche, seuls les utilisateurs du groupe admin " -"pourront modifier ces applications ou les paramètres système." +"{box_name} pour consulter la liste d’applications installées depuis la page " +"principale. En revanche, seuls les utilisateurs membres du groupe admin peuvent modifier les applications ou changer les paramètres système." #: plinth/modules/users/__init__.py:65 msgid "Users and Groups" @@ -6872,22 +6983,38 @@ msgstr "Accès à tous les services et à la configuration du système" msgid "Check LDAP entry \"{search_item}\"" msgstr "Vérification de l’entrée LDAP « {search_item} »" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "Le nom d'utilisateur est déjà pris ou est réservé." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "Entrez un nom d’utilisateur valide." -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Requis. 150 caractères ou moins. Lettres anglaises, chiffres et @/./-/_ " "uniquement." -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Mot de passe administrateur" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Add password" +msgid "Invalid password." +msgstr "Ajouter un mot de passe" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6902,20 +7029,23 @@ msgstr "" "peuvent également se connecter au système avec Secure Shell (SSH) et obtenir " "les privilèges de superutilisateur (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "La création de l’utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Échec de l’ajout du nouvel utilisateur au groupe {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Clés SSH autorisées" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6926,45 +7056,49 @@ msgstr "" "plusieurs clefs, une sur chaque ligne. Les lignes vides et celles commençant " "par # sont ignorées." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "Le changement du nom de l’utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Échec du retrait de l'utilisateur du groupe." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Échec de l'ajout de l'utilisateur au groupe." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "Échec du paramétrage des clefs SSH." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." -msgstr "Échec du changement de statut de l'utilisateur." +msgstr "Échec du changement de statut de l’utilisateur." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Impossible de supprimer le seul administrateur de ce système." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Le changement du mot de passe de l’utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Échec de l'ajout du nouvel utilisateur au groupe admin." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Échec de la restriction de l'accès à la console." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" -msgstr "Compte utilisateur créé, vous êtes maintenant connecté." +msgstr "Compte utilisateur créé, vous êtes maintenant connecté" #: plinth/modules/users/templates/users_change_password.html:11 #, python-format @@ -6975,15 +7109,16 @@ msgstr "Changer le mot de passe de %(username)s" msgid "Save Password" msgstr "Sauvegarder Mot de Passe" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Créer Utilisateur" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Supprimer Utilisateur" @@ -7001,23 +7136,45 @@ msgstr "Supprimer %(username)s" msgid "Administrator Account" msgstr "Compte administrateur" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -"Choisir un nom d’utilisateur et un mot de passe pour accéder à l’interface " -"web. Le mot de passe peut être modifié par la suite. Cet utilisateur " -"disposera de privilèges administrateur. D’autres utilisateurs pourront être " -"créés ultérieurement." +"Choisissez un nom d’utilisateur et un mot de passe pour accéder à cette " +"interface web. Le mot de passe peut être modifié par la suite. Cet " +"utilisateur disposera des privilèges d’administrateur. D’autres utilisateurs " +"pourront être créés ultérieurement." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Créer le compte" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Compte administrateur" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Impossible de supprimer le seul administrateur de ce système." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Utilisateurs" @@ -7031,7 +7188,12 @@ msgstr "Supprimer l'utilisateur %(username)s" msgid "Edit user %(username)s" msgstr "Modifier l'utilisateur %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "Modifier l'utilisateur %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -7040,41 +7202,41 @@ msgstr "" "Utiliser le formulaire de modification de " "mot de passe pour changer votre mot de passe." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Sauvegarder Modifications" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Utilisateur %(username)s créé." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "Utilisateur %(username)s mis à jour." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Modification de l’utilisateur" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "Utilisateur {user} supprimé." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "La suppression de l’utilisateur LDAP a échoué." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Changer Mot de Passe" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." -msgstr "Mot de passe changé avec succès." +msgstr "Le mot de passe a été changé." #: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." @@ -7086,9 +7248,9 @@ 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 "" -"Il peut être utilisé pour se connecter à un fournisseur de VPN proposant un " -"service WireGuard, pour router tout le trafic sortant de la {box_name} à " -"travers ce VPN." +"Il peut être utilisé pour se connecter à un fournisseur de réseau privé " +"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 #, python-brace-format @@ -7160,9 +7322,9 @@ msgid "" "endpoint. This value is usually provided by the server operator. Example: " "192.168.0.10." msgstr "" -"Adresse IP attribuée à cette machine sur le VPN une fois connecté au serveur " -"distant. Cette valeur est généralement fournie par le gestionnaire du " -"serveur. Par exemple : 192.18.0.10." +"Adresse IP attribuée à cette machine sur le réseau privé virtuel VPN une " +"fois connecté au serveur distant. Cette valeur est généralement fournie par " +"le gestionnaire du serveur. Par exemple : 192.18.0.10." #: plinth/modules/wireguard/forms.py:89 msgid "Private key of this machine" @@ -7203,8 +7365,8 @@ msgstr "Utiliser cette connexion pour y envoyer tout le trafic sortant" #: plinth/modules/wireguard/forms.py:107 msgid "Typically checked for a VPN service though which all traffic is sent." msgstr "" -"Activé la plupart du temps pour un service VPN à travers lequel tout le " -"trafic est envoyé." +"À activer en général pour un service de réseau privé virtuel VPN à travers " +"lequel tout le trafic est envoyé." #: plinth/modules/wireguard/templates/wireguard.html:10 msgid "As a Server" @@ -7527,34 +7689,34 @@ msgstr "Applis" msgid "System" msgstr "Système" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Changer le mot de passe" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Redémarrer" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Éteindre" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Se déconnecter" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Choisir la langue" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" -msgstr "S'identifier" +msgstr "S’identifier" #: plinth/templates/clients-button.html:16 msgid "Launch web client" -msgstr "Lancer le client web" +msgstr "Ouvrir le client web" #: plinth/templates/clients-button.html:25 msgid "Client Apps" @@ -7641,10 +7803,10 @@ msgid "" "server to deploy social applications on small machines. It provides online " "communication tools respecting your privacy and data ownership." msgstr "" -"%(box_name)s, un pur produit de Debian, est un serveur web d’auto-" -"hébergement 100%% à base de logiciel libre conçu pour déployer des " -"applications sociales sur de petites machines. Les outils de communication " -"proposés sont respectueux de votre vie privée et de vos données personnelles." +"Pur produit de Debian, %(box_name)s est un serveur web d’auto-hébergement " +"composé à 100%% de logiciels libres, conçu pour déployer des applications " +"sociales sur de petites machines. Les outils de communication proposés sont " +"respectueux de votre vie privée et de vos données personnelles." #: plinth/templates/index.html:117 #, python-format @@ -7653,7 +7815,7 @@ msgid "" "free software, distributed under the GNU Affero General Public License, " "Version 3 or later." msgstr "" -"Ce portail fait partie de l'interface web de la %(box_name)s. %(box_name)s " +"Ce portail fait partie de l’interface web de la %(box_name)s. %(box_name)s " "est un logiciel libre distribué sous licence GNU Affero General Public " "License, Version 3 ou ultérieure." @@ -7682,13 +7844,14 @@ msgid "Mailing list" msgstr "Liste de discussion du projet" #: plinth/templates/internal-zone.html:11 -#, fuzzy, python-format -#| msgid "%(service_name)s is available only on internal networks." +#, python-format msgid "" "%(service_name)s is available only on internal networks or when the " "client is connected to %(box_name)s through VPN." msgstr "" -"%(service_name)s n'est disponible que sur les réseaux internes." +"%(service_name)s n’est disponible que sur les réseaux internes où " +"lorsque le client est connecté à la %(box_name)s via un réseau privé virtuel " +"VPN." #: plinth/templates/internal-zone.html:17 msgid "Currently there are no network interfaces configured as internal." @@ -7713,16 +7876,13 @@ msgid "Port Forwarding" msgstr "Redirection de port" #: plinth/templates/port-forwarding-info.html:13 -#, fuzzy, python-format -#| msgid "" -#| "You may want to check the network setup " -#| "and modify it if necessary." +#, python-format msgid "" "Your FreedomBox is not behind a router. No " "action is necessary." msgstr "" -"Vous pouvez vérifier la configuration du " -"réseau et la modifier si nécessaire." +"Votre FreedomBox n’est pas derrière un routeur. Aucune action n’est nécessaire." #: plinth/templates/port-forwarding-info.html:19 #, python-format @@ -7731,37 +7891,34 @@ msgid "" "are using the DMZ feature to forward all ports. No further router " "configuration is necessary." msgstr "" +"Votre FreedomBox est derrière un routeur " +"et vous utilisez la fonction de zone démilitarisée DMZ pour rediriger tous " +"les ports. Aucune configuration supplémentaire du routeur n’est nécessaire." #: plinth/templates/port-forwarding-info.html:26 -#, fuzzy, python-format -#| msgid "" -#| "If your FreedomBox is behind a router, you will need to set up port " -#| "forwarding on your router. You should forward the following ports for " -#| "%(service_name)s:" +#, python-format msgid "" "Your FreedomBox is behind a router and you " "are not using the DMZ feature. You will need to set up port forwarding on " "your router. You should forward the following ports for %(service_name)s:" msgstr "" -"Si votre FreedomBox se situe derrière un routeur, vous aurez besoin de " -"mettre en place une redirection de port sur votre routeur. Vous devriez " +"Votre FreedomBox est derrière un routeur et " +"vous n’utilisez pas la fonction de zone démilitarisée DMZ. Vous allez devoir " +"mettre en place une redirection de ports sur votre routeur. Vous devriez " "rediriger les ports suivants pour %(service_name)s :" #: plinth/templates/port-forwarding-info.html:36 -#, fuzzy -#| msgid "protocol" msgid "Protocol" -msgstr "protocole" +msgstr "Protocole" #: plinth/templates/port-forwarding-info.html:37 msgid "From Router/WAN Ports" -msgstr "" +msgstr "Depuis les ports routeur/Internet (WAN)" #: plinth/templates/port-forwarding-info.html:38 -#, fuzzy, python-format -#| msgid "%(box_name)s Setup" +#, python-format msgid "To %(box_name)s Ports" -msgstr "Configuration initiale de la %(box_name)s" +msgstr "Vers les ports %(box_name)s" #: plinth/templates/setup.html:24 msgid "Install this application?" @@ -9199,8 +9356,5 @@ msgstr "Gujarati" #~ msgid "Bittorrent (Transmission)" #~ msgstr "Bittorrent (Transmission)" -#~ msgid "Edit User %(username)s" -#~ msgstr "Modifier l'utilisateur %(username)s" - #~ msgid "Scramblesuit transport registered" #~ msgstr "Transport Scramblesuit enregistré" diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index f72786032..49fb78389 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-08-12 16:32+0000\n" "Last-Translator: Xosé M \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:57 +#, fuzzy +#| msgid "Enable application" +msgid "Administer calibre application" +msgstr "Activar o aplicativo" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1016,11 +1121,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1338,7 +1445,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1787,12 +1894,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1809,16 +1910,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2286,7 +2377,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2933,32 +3024,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -2976,7 +3067,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3372,7 +3463,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3639,6 +3730,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4092,29 +4184,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5477,24 +5569,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5683,11 +5775,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5832,20 +5924,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5854,63 +5958,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5923,15 +6030,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -5949,19 +6057,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -5975,46 +6101,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6427,28 +6558,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" @@ -6675,6 +6806,3 @@ msgstr "" #: plinth/web_framework.py:113 msgid "Gujarati" msgstr "" - -#~ msgid "Enable application" -#~ msgstr "Activar o aplicativo" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index d97cf5a10..da1b88f04 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2018-02-05 18:37+0000\n" "Last-Translator: drashti kaushik \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:57 +#, fuzzy +#| msgid "Enable application" +msgid "Administer calibre application" +msgstr "એપ્લીકેશનને પ્રસ્થાપિત કરો" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Documentation" +msgid "Name of the new library" +msgstr "દસ્તાવેજીકરણ" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Documentation" +msgid "Manage Libraries" +msgstr "દસ્તાવેજીકરણ" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Documentation" +msgid "Create Library" +msgstr "દસ્તાવેજીકરણ" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1084,11 +1195,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1456,7 +1569,7 @@ msgid "Use HTTP basic authentication" msgstr "HTTP મૂળભૂત પ્રમાણીકરણનો ઉપયોગ કરો" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "વપરાશકર્તા નામ" @@ -1972,12 +2085,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1996,16 +2103,6 @@ msgstr "" msgid "Edit repository" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "દસ્તાવેજીકરણ" @@ -2477,7 +2574,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -3144,34 +3241,34 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "Please provide a password" msgid "Set SuperUser Password" msgstr "કૃપા કરીને પાસવર્ડ આપો" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3189,7 +3286,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3588,7 +3685,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3857,6 +3954,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4313,29 +4411,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5711,24 +5809,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5923,11 +6021,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -6076,22 +6174,36 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "અમાન્ય સર્વર નામ" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "પાસવર્ડ બતાવો" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6100,63 +6212,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -6169,15 +6284,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -6195,19 +6311,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -6221,46 +6355,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6695,30 +6834,30 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 #, fuzzy #| msgid "Language" msgid "Select language" msgstr "ભાષા" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" @@ -6962,9 +7101,6 @@ msgstr "" #~ msgid "Upload Password" #~ msgstr "પાસવર્ડ" -#~ msgid "Enable application" -#~ msgstr "એપ્લીકેશનને પ્રસ્થાપિત કરો" - #~ msgid "Application enabled" #~ msgstr "એપ્લિકેશન સક્ષમ કરો" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index cd746c70f..262bc7d62 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-04-03 20:11+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Hindi calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "सिंकतिन्ग एप्लिकेशन का प्रशासन करें" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the share" +msgid "Name of the new library" +msgstr "शेयर का नाम" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "इस नाम का एक शयर पहले से मौजूद है." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "विकी और ब्लॉग हटाईये %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "%(name)s हटाईये" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create User" +msgid "Manage Libraries" +msgstr "यूसर बनाये" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create User" +msgid "Create Library" +msgstr "यूसर बनाये" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "Tor relay port available" +msgid "No libraries available." +msgstr "टोर रीले पोर्ट उपलब्ध है" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "साइट हटाएं %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Archive created." +msgid "Library created." +msgstr "पुरालेख बनाया गया." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "An error occurred while creating the library." +msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} हटा गया है." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "{name} नहीं हटा गया है: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1158,13 +1279,15 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 #, fuzzy #| msgid "Subdomain" msgid "TLS domain" msgstr "सबडोमेन" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1535,7 +1658,7 @@ msgid "Use HTTP basic authentication" msgstr "एचटिटिपि बेसिकॅ प्रमाणीकरण उपयोग करें" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "युसरनाम" @@ -2068,12 +2191,6 @@ msgstr "विकी और ब्लॉग हटाईये %(name)sClients to connect to Mumble from your " @@ -3395,21 +3502,21 @@ msgstr "" "mumble.info\">Clients अापके डेस्कटॉप और एंड्रॉयड डिवाइस से ममबल से कनेक्ट होने के " "लिए उपलब्ध हैं." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "ममबल" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "वॉयस चैट" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "Save Password" msgid "Set SuperUser Password" msgstr "पासवर्ड सहेजें" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3427,7 +3534,7 @@ msgstr "ममबलफ्लाई" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3853,7 +3960,7 @@ msgstr "कनेक्शन संपादित करें" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "संपादन" @@ -4128,6 +4235,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4646,29 +4754,29 @@ msgstr "" "पोर्ट संयोजन का समर्थन नहीं कर सकते है. उदाहरण के लिए, ४४३ के अलावा पोर्ट पर HTTPS " "समस्याओं का कारण बनता है." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "वेब सर्वर (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "साइट http://{0} पर उपलब्ध होगा" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "वेब सर्वर (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "साइटhttps://{0}पर उपलब्ध होगा" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "सुरक्षित शैल (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6266,24 +6374,24 @@ msgstr "टोर सोक्स प्रॉक्सी" msgid "Tor Bridge Relay" msgstr "टो ब्रिज रीले" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "टोर रीले पोर्ट उपलब्ध है" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "यूआरएल एक्सेस करें {url} टीसीपी पर {kind} टोर के माध्यम से" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "टोर उपयोग की पुष्टि करें {url} पर टीसीपी पर {kind}" @@ -6517,11 +6625,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "अपडेट" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6680,22 +6788,38 @@ msgstr "सब सर्विसस और सिस्टम सेटिं msgid "Check LDAP entry \"{search_item}\"" msgstr "एलडीएपी प्रविष्टि चेक करें \"{search_item}\"" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "यूसरनाम लिया है या आरक्षित है." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "सर्वर नाम अमान्य है" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "व्यवस्थापक पासवर्ड" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "शो पासवर्ड" + +#: plinth/modules/users/forms.py:105 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6715,20 +6839,23 @@ msgstr "" "

एडमिन ग्रुप के यूसरस सब सर्विसस पर लॉग इन कर सकेगें. SSH के माध्यम से भी " "सिस्टम पर लॉग इन कर सकते है अाैर उनको प्रशासनिक विशेषाधिकार (sudo) है." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "एलडीएपी यूसर बनाना विफल रहा." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "{group} समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6738,45 +6865,49 @@ msgstr "" "बिना सिस्टम में प्रवेश करने की अनुमति देगा. आप एकाधिक कीज़ दर्ज कर सकते हैं, हर लाइन रक " "एक. खाली लाइनस या # से प्रारंभ होने वाले लाइनस अनदेखा कर दिया जाएगा." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "एलडीएपी यूसर का नाम बदलना विफल रहा." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "समूह से यूसर को हटाने में विफल." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "समूह से यूसर को जोड़ने में विफल." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "एसएसएच कीज़ सेट करने में असमर्थ." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "समूह से यूसर को जोड़ने में विफल." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "सिस्टम में केवल व्यवस्थापक को नहीं हटा सकता." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "एलडीएपी यूसर का पासवर्ड बदलना विफल रहा." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "व्यवस्थापक समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "कंसोल एक्सेस प्रतिबंधित करने में विफल." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "युसर अकाउंट बनाया, अब आप लॉगड इन हैं" @@ -6789,15 +6920,16 @@ msgstr "%(username)s के लिया पासवर्ड बद msgid "Save Password" msgstr "पासवर्ड सहेजें" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "यूसर बनाये" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "यूसर हटाइये" @@ -6815,7 +6947,7 @@ msgstr "हटाइये %(username)s" msgid "Administrator Account" msgstr "व्यवस्थापक अकाउंट" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6825,12 +6957,34 @@ msgstr "" "है. इस यूसर को व्यवस्थापकीय विशेषाधिकार प्रदान किए जाएंगे. दूसरे यूसरस बाद में जोड़ा जा " "सकता है." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "अकाउंट बनाएँ" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "व्यवस्थापक अकाउंट" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "सिस्टम में केवल व्यवस्थापक को नहीं हटा सकता." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "यूसरस" @@ -6844,7 +6998,13 @@ msgstr "यूसर हटाइये %(username)s" msgid "Edit user %(username)s" msgstr "यूसर संपादित करें %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "यूसर संपादित करें %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6853,39 +7013,39 @@ msgstr "" "पासवर्ड बदलने के लिये यइ पासवर्ड बदलना फोम्र का उपयोग करें." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "बदलाव संचयित कीजिये" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "युसर %(username)s बनाया." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "युसर %(username)s अपडेट किया." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "यूसर संपादित करें" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "यूसर {user} हटाया." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "एलडीएपी यूसरको हटाने में असफल रहा." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "पासवर्ड बदलिये" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "पासवर्ड सफलतापूर्वक बदल गया." @@ -7375,28 +7535,28 @@ msgstr "ऐप्स" msgid "System" msgstr "सिस्टम" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "पासवर्ड बदलें" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "रीस्टार्ट" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "शट डाउन" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "लॉग आउट" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "भाषा चुनें" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "लॉग इन" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 7f2608bc6..cab92ca89 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-07-20 02:41+0000\n" "Last-Translator: Doma Gergő \n" "Language-Team: Hungarian calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "A Syncthing alkalmazás beállítása" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Tároló neve" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Egy megosztás ezzel a névvel már létezik." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "%(name)s Git tároló törlése" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "%(name)s törlése" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Tárolók kezelése" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Tároló létrehozása" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Nincs elérhető tároló." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "%(site)s webhely törlése" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Tároló létrehozva." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred while creating the repository." +msgid "An error occurred while creating the library." +msgstr "Hiba történt a tároló létrehozása közben." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} törölve." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "{name} nem törölhető: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1128,11 +1249,13 @@ msgstr "Coturn" msgid "VoIP Helper" msgstr "VoIP Segéd" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "TLS tartomány" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1510,7 +1633,7 @@ msgid "Use HTTP basic authentication" msgstr "HTTP alap hitelesítés használata" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Felhasználónév" @@ -2033,12 +2156,6 @@ msgstr "%(name)s Git tároló törlése" msgid "Delete this repository permanently?" msgstr "Véglegesen törlöd ezt a tárolót?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "%(name)s törlése" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Tároló létrehozva." @@ -2055,16 +2172,6 @@ msgstr "Tároló szerkesztve." msgid "Edit repository" msgstr "Tároló szerkesztése" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} törölve." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "{name} nem törölhető: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentáció" @@ -2638,7 +2745,7 @@ msgid "Chat Client" msgstr "Chat kliens" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "JavaScript licencinformáció" @@ -3412,7 +3519,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3420,7 +3527,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:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3430,19 +3537,19 @@ msgstr "" "kapcsolódhatsz. Mumble kliensek " "elérhetőek az asztali és Android eszközökhöz." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Audiókonferencia" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "SuperUser jelszavának beállítása" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3463,7 +3570,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "A SuperUser jelszava sikeresen frissítve." @@ -3940,7 +4047,7 @@ msgstr "Kapcsolat szerkesztése" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Szerkesztés" @@ -4216,6 +4323,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4745,29 +4853,29 @@ msgstr "" "támogatja az összes itt definiálható protokoll/port kombinációkat. Például " "ismert, hogy a HTTPS 443-tól eltérő porton problémákat okozhat." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Webkiszolgáló (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "Az oldal itt lesz elérhető: http://{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Webkiszolgáló (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "Az oldal itt lesz elérhető: https://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Biztonságos parancsértelmező (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6427,24 +6535,24 @@ msgstr "Tor Socks proxy" msgid "Tor Bridge Relay" msgstr "Tor híd relay" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor relay port elérhető" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, 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" @@ -6689,11 +6797,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Frissítés" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6851,22 +6959,38 @@ msgstr "Hozzáférés az összes szolgáltatáshoz és rendszerbeállításhoz" msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP bejegyzés ellenőrzése: \"{search_item}\"" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "A felhasználói név (már) foglalt." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "Érvénytelen kiszolgálónév" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Rendszergazdai jelszó" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Jelszó mutatása" + +#: plinth/modules/users/forms.py:105 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6889,20 +7013,23 @@ msgstr "" "képesek bejelentkezni a rendszerbe, ahol adminisztrátori jogosultságokkal " "rendelkeznek (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "LDAP felhasználó létrehozása sikertelen." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Nem sikerült hozzáadni az új felhasználót ehhez a csoporthoz: {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Engedélyezett SSH kulcsok" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6912,45 +7039,49 @@ msgstr "" "jelszó nélkül jelentkezzen be. Több kulcs is megadható; soronként egy. Az " "üres, illetve # jellel kezdődő sorok nem számítanak." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "LDAP felhasználó átnevezése sikertelen." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Nem sikerült eltávolítani a felhasználót a csoportból." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "SSH kulcsok beállítása sikertelen." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Nem lehet törölni a rendszer egyetlen rendszergazdáját." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "LDAP felhasználó jelszavának megváltoztatása sikertelen." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Nem sikerült hozzáadni az új felhasználót a rendszergazda csoporthoz." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Nem sikerült a konzol hozzáférés korlátozása." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Felhasználói fiók létrehozva, bejelentkezés sikeres" @@ -6963,15 +7094,16 @@ msgstr "%(username)s jelszavának megváltoztatása" msgid "Save Password" msgstr "Jelszó mentése" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Felhasználó létrehozása" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Felhasználó törlése" @@ -6989,7 +7121,7 @@ msgstr "%(username)s törlése" msgid "Administrator Account" msgstr "Rendszergazda fiók" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -7000,12 +7132,34 @@ msgstr "" "rendszergazdai jogosultságokkal fog rendelkezni. Más felhasználók " "hozzáadhatóak később." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Fiók létrehozása" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Rendszergazda fiók" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Nem lehet törölni a rendszer egyetlen rendszergazdáját." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Felhasználók" @@ -7019,7 +7173,13 @@ msgstr "%(username)s felhasználó törlése" msgid "Edit user %(username)s" msgstr "%(username)s felhasználó szerkesztése" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "%(username)s felhasználó szerkesztése" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -7028,39 +7188,39 @@ msgstr "" "A jelszó a jelszómódosítás űrlap " "kitöltésével változtatható meg." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Változtatások mentése" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "%(username)s nevű felhasználó létrehozva." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "%(username)s nevű felhasználó frissítve." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Felhasználó szerkesztése" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "{user} nevű felhasználó törölve." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "LDAP felhasználó törlése sikertelen." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Jelszómódosítás" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "A jelszó módosítása sikeres." @@ -7543,28 +7703,28 @@ msgstr "Alkalmazások" msgid "System" msgstr "Rendszer" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Jelszómódosítás" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Újraindítás" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Leállítás" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Kijelentkezés" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Válassz nyelvet" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Bejelentkezés" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index e4a144e99..e69b970b5 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2018-11-02 00:44+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Indonesian calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Enable application" +msgid "Administer calibre application" +msgstr "Aktifkan aplikasi" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Actions" +msgid "Name of the new library" +msgstr "Aksi" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Hapus Wiki atau Blog %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Hapus %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Actions" +msgid "Manage Libraries" +msgstr "Aksi" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Actions" +msgid "Create Library" +msgstr "Aksi" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No wikis or blogs available." +msgid "No libraries available." +msgstr "Tidak ada wiki atau blogs yang tersedia." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Hapus situs %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} dihapus." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "Tidak dapat menghapus {name}: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1098,13 +1213,15 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 #, fuzzy #| msgid "Subdomain" msgid "TLS domain" msgstr "Subdomain" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1428,7 +1545,7 @@ msgid "Use HTTP basic authentication" msgstr "Gunakan autentikasi dasar HTTP" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Nama Pengguna" @@ -1900,12 +2017,6 @@ msgstr "Hapus Wiki atau Blog %(name)s" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Hapus %(name)s" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1924,16 +2035,6 @@ msgstr "" msgid "Edit repository" msgstr "Aksi" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} dihapus." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "Tidak dapat menghapus {name}: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2425,7 +2526,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -3108,36 +3209,36 @@ msgstr "Publikasikan kunci ke keyserver." msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "Pesan Suara (Mumble)" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "Show password" msgid "Set SuperUser Password" msgstr "Tampilkan kata sandi" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3155,7 +3256,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3558,7 +3659,7 @@ msgstr "Sunting Koneksi" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Sunting" @@ -3829,6 +3930,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4296,29 +4398,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Server Web (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Web Server (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Secure Shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5773,24 +5875,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5985,11 +6087,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -6139,22 +6241,38 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Actions" msgid "Enter a valid username." msgstr "Aksi" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Account" +msgid "Authorization Password" +msgstr "Akun Administrator" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Tampilkan kata sandi" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6163,65 +6281,71 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Gagal membuat pengguna LDAP." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." -msgstr "" +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to {group} group: {error}" +msgstr "Gagal menambahkan pengguna baru ke kelompok admin." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add new user to admin group." msgid "Failed to change user status." msgstr "Gagal menambahkan pengguna baru ke kelompok admin." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Gagal menambahkan pengguna baru ke kelompok admin." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -6234,15 +6358,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -6260,21 +6385,41 @@ msgstr "" msgid "Administrator Account" msgstr "Akun Administrator" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 #, fuzzy #| msgid "Administrator Account" msgid "Create Account" msgstr "Akun Administrator" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Akun Administrator" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -6288,46 +6433,52 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Edit User %(username)s" +msgstr "Hapus Wiki atau Blog %(name)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6772,34 +6923,34 @@ msgstr "Apps" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 #, fuzzy #| msgid "Restart Now" msgid "Restart" msgstr "Jalankan ulang Sekarang" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 #, fuzzy #| msgid "Shut Down Now" msgid "Shut down" msgstr "Matikan Sekarang" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 #, fuzzy #| msgid "Language" msgid "Select language" msgstr "Bahasa" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" @@ -7061,9 +7212,6 @@ msgstr "" #~ msgid "Deleted all snapshots" #~ msgstr "Hapus %(name)s" -#~ msgid "Enable application" -#~ msgstr "Aktifkan aplikasi" - #~ msgid "Register" #~ msgstr "Pendaftaran" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index b43a06228..21666a560 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-08-30 18:23+0000\n" "Last-Translator: Diego Roversi \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:57 +#, fuzzy +#| msgid "Enable application" +msgid "Administer calibre application" +msgstr "Abilita applicazione" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Nome del deposito" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A repository with this name already exists." +msgid "A library with this name already exists." +msgstr "Esiste già un deposito con questo nome." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Cancellare Git Repository %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Cancella %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Gestire i repository" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Creare Repository" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Non ci sono depositi disponibili." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Cancella sito %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Repository creato." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred while creating the repository." +msgid "An error occurred while creating the library." +msgstr "Si è verificato un errore durante la creazione del repository." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} cancellato." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "Non è stato possibile cancellare {name}: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1148,13 +1269,15 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 #, fuzzy #| msgid "Subdomain" msgid "TLS domain" msgstr "Sottodominio" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1528,7 +1651,7 @@ msgid "Use HTTP basic authentication" msgstr "Usa l'autenticazione HTTP base" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Nome utente" @@ -2061,12 +2184,6 @@ msgstr "Cancellare Git Repository %(name)s" msgid "Delete this repository permanently?" msgstr "Cancellare questo repository in modo permanente?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Cancella %(name)s" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Repository creato." @@ -2083,16 +2200,6 @@ msgstr "Repository modificato." msgid "Edit repository" msgstr "Modifica repository" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} cancellato." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "Non è stato possibile cancellare {name}: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Documentazione" @@ -2689,7 +2796,7 @@ msgid "Chat Client" msgstr "Client" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "Informazioni sulla licenza JavaScript" @@ -3451,7 +3558,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3459,7 +3566,7 @@ msgstr "" "Mumble è un software di chat vocale ad alta qualità, a bassa latenza, " "cifrato e open source." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3469,19 +3576,19 @@ msgstr "" "64738 Sono disponibili dei client da " "connettere a Mumble dai tuoi dispositivi desktop e android." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Voice Chat" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3499,7 +3606,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3929,7 +4036,7 @@ msgstr "Modifica Connessione" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Modifica" @@ -4206,6 +4313,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4733,29 +4841,29 @@ msgstr "" "Per esempio, è noto che HTTPS, in porte diverse dalla 443, può causare " "problemi." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Server Web (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "Il sito sarà disponibile su http{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Server Web (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "Il sito sarà disponibile au HTTPS://{0}{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Secure Shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6217,24 +6325,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6432,11 +6540,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -6582,22 +6690,38 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "Nome Server Invalido" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Password Amministratore" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Mostra password" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6606,63 +6730,69 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to switch certificate use for app {module}: {error}" +msgid "Failed to add new user to {group} group: {error}" +msgstr "Cambio uso del certificato fallito per {module}:{error}" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." -msgstr "" +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to obtain certificate for domain {domain}: {error}" +msgid "Failed to add new user to admin group: {error}" +msgstr "Rilascio certificato fallito per il dominio {domain}:{error}" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." -msgstr "" +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to switch certificate use for app {module}: {error}" +msgid "Failed to restrict console access: {error}" +msgstr "Cambio uso del certificato fallito per {module}:{error}" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -6675,15 +6805,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -6701,19 +6832,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -6727,46 +6876,52 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Edit User %(username)s" +msgstr "Cancellare Git Repository %(name)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -7230,28 +7385,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" @@ -7623,9 +7778,6 @@ msgstr "" #~ msgid "Enable OpenVPN server" #~ msgstr "Abilita server OpenVPN" -#~ msgid "Enable application" -#~ msgstr "Abilita applicazione" - #~ msgid "Application enabled" #~ msgstr "Applicazione abilitata" @@ -7966,9 +8118,6 @@ msgstr "" #~ msgid "Switched use of certificate for app {module}" #~ msgstr "Cambiato uso del certificato per l'app {module}" -#~ msgid "Failed to switch certificate use for app {module}: {error}" -#~ msgstr "Cambio uso del certificato fallito per {module}:{error}" - #~ msgid "" #~ "Failed to disable certificate renewal management for {domain}: {error}" #~ msgstr "" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index 6e63072b1..096573e7b 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -387,6 +387,7 @@ msgstr "" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "" @@ -653,7 +654,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "" @@ -811,12 +812,114 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +msgid "Administer calibre application" +msgstr "" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1013,11 +1116,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1335,7 +1440,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1784,12 +1889,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1806,16 +1905,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2281,7 +2370,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2928,32 +3017,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -2971,7 +3060,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3363,7 +3452,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3630,6 +3719,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4083,29 +4173,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5466,24 +5556,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5672,11 +5762,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "" @@ -5817,20 +5907,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5839,63 +5941,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5908,15 +6013,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -5934,19 +6040,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -5960,46 +6084,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6410,28 +6539,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index 19f0c61ff..490ebbf78 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\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:57 +msgid "Administer calibre application" +msgstr "" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1014,11 +1117,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1336,7 +1441,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1785,12 +1890,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1807,16 +1906,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2282,7 +2371,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2929,32 +3018,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -2972,7 +3061,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3364,7 +3453,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3631,6 +3720,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4084,29 +4174,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5467,24 +5557,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5673,11 +5763,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "" @@ -5818,20 +5908,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5840,63 +5942,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5909,15 +6014,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -5935,19 +6041,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -5961,46 +6085,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6411,28 +6540,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index 58a7efa07..e3e884a89 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -388,6 +388,7 @@ msgstr "" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "" @@ -654,7 +655,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "" @@ -812,12 +813,114 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +msgid "Administer calibre application" +msgstr "" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1014,11 +1117,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1336,7 +1441,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1785,12 +1890,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1807,16 +1906,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2282,7 +2371,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2929,32 +3018,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -2972,7 +3061,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3364,7 +3453,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3631,6 +3720,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4084,29 +4174,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5467,24 +5557,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5673,11 +5763,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "" @@ -5818,20 +5908,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5840,63 +5942,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5909,15 +6014,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -5935,19 +6041,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -5961,46 +6085,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6411,28 +6540,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index e81d8a45f..f12f08e30 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: 2020-09-15 16:55-0400\n" -"PO-Revision-Date: 2020-09-22 09:39+0000\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" +"PO-Revision-Date: 2020-10-03 00:41+0000\n" "Last-Translator: Petter Reinholdtsen \n" "Language-Team: Norwegian Bokmål \n" @@ -158,10 +158,8 @@ msgid "{app} (No data to backup)" msgstr "{app} (Ingen data å sikkerhetskopiere)" #: plinth/modules/backups/forms.py:50 -#, fuzzy -#| msgid "Create Repository" msgid "Repository" -msgstr "Opprett depot" +msgstr "Depot" #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 @@ -172,10 +170,8 @@ msgid "Name" msgstr "Navn" #: plinth/modules/backups/forms.py:53 -#, fuzzy -#| msgid "Name for new backup archive." msgid "(Optional) Set a name for this backup archive" -msgstr "Navn på nytt sikkerhetskopiarkiv." +msgstr "(Valgfritt) Sett navn på dette sikkerhetskopiarkivet" #: plinth/modules/backups/forms.py:56 msgid "Included apps" @@ -233,10 +229,8 @@ msgstr "" "sikkerhetskopien." #: plinth/modules/backups/forms.py:122 -#, fuzzy -#| msgid "Create Repository" msgid "Key in Repository" -msgstr "Opprett depot" +msgstr "Nøkkel i depot" #: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 msgid "None" @@ -423,6 +417,7 @@ msgstr "Slett arkiv %(name)s" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "Send inn" @@ -479,15 +474,7 @@ msgid "Restore data from" msgstr "Gjenopprett data fra" #: plinth/modules/backups/templates/backups_upload.html:17 -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " Upload a backup file downloaded from another %(box_name)s to " -#| "restore is\n" -#| " contents. You can choose the apps you wish to restore after " -#| "uploading a\n" -#| " backup file.\n" -#| " " +#, python-format msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " @@ -499,7 +486,7 @@ msgid "" msgstr "" "\n" " Last opp en sikkerhetskopi hentet fra en annen %(box_name)s for å " -"tilbakeføre innholdet.\n" +"tilbakeføre dens innhold.\n" " Du kan velge programmene du ønsker å importere etter å ha lastet opp " "en sikkerhetskopifil.\n" " " @@ -587,9 +574,8 @@ msgid "Restore from uploaded file" msgstr "Gjenopprett fra opplastet fil" #: plinth/modules/backups/views.py:238 -#, fuzzy msgid "No additional disks available to add a repository." -msgstr "Ingen ytterligere disker å legge til i pakkebrønn." +msgstr "Ingen ytterligere disker tilgjengelig for å opprette et depot." #: plinth/modules/backups/views.py:246 msgid "Create backup repository" @@ -666,6 +652,10 @@ msgid "" "password, you can share it with the users who should have the associated " "permissions." msgstr "" +"bepastery har ikke brukernavn for å logge in. Den bruker kun passord. Et " +"sett med tillatelser kan velges for hvert passord. Når du har laget et " +"passord så kan du dele det med brukerne som skal ha de tilhørende " +"rettighetene." #: plinth/modules/bepasty/__init__.py:33 msgid "" @@ -674,6 +664,10 @@ msgid "" "revoke access for a single person or group, by removing their password from " "the list." msgstr "" +"Du kan også opprette flere passord med de samme rettighetene, og spre dem " +"til ulike folk eller grupper. Dette vil la deg trekke tilbake tilgangen " +"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 msgid "Read a file, if a web link to the file is available" @@ -727,7 +721,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "Tilganger" @@ -911,12 +905,132 @@ 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:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "Oppsett oppdatert" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Administrer Syncthing-programmet" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Navn på depot" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "En deling ved dette navnet finnes allerede." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Slette wiki eller blogg %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Slette %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create Repository" +msgid "Manage Libraries" +msgstr "Opprett depot" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Opprett depot" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "Tor relay port available" +msgid "No libraries available." +msgstr "Tor relay-port tilgjengelig" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Slette nettstedet %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository removed." +msgid "Library created." +msgstr "Depot fjernet." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "An error occurred while creating the library." +msgstr "En feil oppsto under konfigureringen." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "Slettet {name}." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "Kunne ikke slette {name}: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1144,11 +1258,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "TLS-domene" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1529,7 +1645,7 @@ msgid "Use HTTP basic authentication" msgstr "Bruk HTTP-basisgodkjenning" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Brukernavn" @@ -2070,12 +2186,6 @@ msgstr "Slette wiki eller blogg %(name)s" msgid "Delete this repository permanently?" msgstr "Slett dette depotet for godt?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Slette %(name)s" - #: plinth/modules/gitweb/views.py:45 #, fuzzy #| msgid "Repository removed." @@ -2096,16 +2206,6 @@ msgstr "Depot opprettet." msgid "Edit repository" msgstr "Rediger depot" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "Slettet {name}." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "Kunne ikke slette {name}: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentasjon" @@ -2686,7 +2786,7 @@ msgid "Chat Client" msgstr "Nettpratklient" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "JavaScript lisensinformasjon" @@ -3438,7 +3538,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3446,7 +3546,7 @@ msgstr "" "Mumble er en åpen kildekode, rask, kryptert, høy kvalitets programvare for " "nettprat." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3456,21 +3556,21 @@ msgstr "" "\"http://mumble.info\">Klienter for å koble til Mumble når skrivebordet " "og/eller Android-enheter er tilgjengelige." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Talenettprat" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "SSH server password" msgid "Set SuperUser Password" msgstr "SSH-tjenermaskinpassord" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3488,7 +3588,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3934,7 +4034,7 @@ msgstr "Rediger tilkobling" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Rediger" @@ -4210,6 +4310,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "Hopp over dette steget" @@ -4730,31 +4831,31 @@ msgstr "" "alle protokoll-/portkombinasjoner som du kan definere her. For eksempel, " "HTTPS på andre ting enn 443 er kjent for å forårsake problemer." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Web-tjener (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" "Nettstedet vil være tilgjengelig på http://{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Web-tjener (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" "Nettstedet vil bli tilgjengelig på https://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Secure Shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6367,24 +6468,24 @@ msgstr "Tor Socks-mellomtjener" msgid "Tor Bridge Relay" msgstr "Tor bro-stafettvideresendingsoppsett" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor relay-port tilgjengelig" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3-transport registrert" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4-transport registrert" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekreft Tor-bruk på {url} via tcp{kind}" @@ -6617,11 +6718,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Oppdater" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6788,23 +6889,39 @@ msgstr "Tilgang til alle tjenester og systeminnstillinger" msgid "Check LDAP entry \"{search_item}\"" msgstr "Sjekk LDAP-oppføring «{search_item}»" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "Brukernavnet er opptatt eller reservert." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "Ugyldig tjenernavn" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Påkrevd. 150 tegn eller mindre. Kun engelske bokstaver, tall og @/./-/_." -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Administratorpassord" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Vis passord" + +#: plinth/modules/users/forms.py:105 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6825,20 +6942,23 @@ msgstr "" "gruppen kan logge seg på alle tjenester. De kan også logge inn på systemet " "via SSH, og ha administrative rettigheter (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Oppretting av LDAP-bruker feilet." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Klarte ikke legge ny bruker til gruppe {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Autoriserte SSH-nøkler" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6848,45 +6968,49 @@ msgstr "" "på systemet uten å bruke passord. Du kan legge inn multiple (flere) nøkler, " "én på hver linje. Blanke linjer og linjer som starter med # vil bli ignorert." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "Klarte ikke å bytte navn på LDAP-bruker." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Klarte ikke å slette bruker fra gruppe." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Klarte ikke legge bruker til gruppe." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "Klarte ikke sette SSH-nøkler." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Klarte ikke legge bruker til gruppe." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Kan ikke slette kun administratoren i systemet." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Klarte ikke å bytte passord for LDAP-bruker." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Klarte ikke å legge til en ny bruker i admin-gruppen." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Klarte ikke begrense konsolltilgang." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Brukerkonto er opprettet, du er nå logget inn" @@ -6899,15 +7023,16 @@ msgstr "Endre passord for %(username)s" msgid "Save Password" msgstr "Lagre passord" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Opprett bruker" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Slett bruker" @@ -6925,7 +7050,7 @@ msgstr "Slette %(username)s" msgid "Administrator Account" msgstr "Administratorkonto" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6935,12 +7060,34 @@ msgstr "" "nettgrensesnittet. Passordet kan endres senere. Denne brukeren vil bli " "innvilget administrative rettigheter. Andre brukere kan legges til senere." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Opprett konto" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Administratorkonto" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Kan ikke slette kun administratoren i systemet." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Brukere" @@ -6954,7 +7101,13 @@ msgstr "Slette bruker %(username)s" msgid "Edit user %(username)s" msgstr "Endre bruker %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "Endre bruker %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6963,39 +7116,39 @@ msgstr "" "Bruk passordsendringsskjemaet for å " "endre passordet." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Lagre endringer" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Bruker %(username)s opprettet." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "Bruker %(username)s oppdatert." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Rediger bruker" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "Bruker {user} slettet." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "Klarte ikke slette LDAP-bruker." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Endre passord" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Vellykket passordbytte." @@ -7491,28 +7644,28 @@ msgstr "Apps/Programmer" msgid "System" msgstr "System" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Endre passord" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Omstart" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Slå av" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Logg ut" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Velg språk" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Logg inn" @@ -7716,10 +7869,9 @@ msgid "From Router/WAN Ports" msgstr "Fra ruter/WAN-porter" #: plinth/templates/port-forwarding-info.html:38 -#, fuzzy, python-format -#| msgid "%(box_name)s Setup" +#, python-format msgid "To %(box_name)s Ports" -msgstr "Oppsett av %(box_name)s" +msgstr "Til portene for %(box_name)s" #: plinth/templates/setup.html:24 msgid "Install this application?" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 5fab6bed8..fc60fa671 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-09-15 20:54+0000\n" "Last-Translator: Reg Me \n" "Language-Team: Dutch calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Beheer Syncthing toepassing" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Naam van de repository" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Er bestaat reeds een gedeelde map met deze naam." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Verwijder Wiki of Blog %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "%(name)s verwijderen" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Beheer repositories" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Maak Repository" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Geen repositories beschikbaar." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Verwijder site %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Repository aangemaakt." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "An error occurred while creating the library." +msgstr "Er is een fout opgetreden tijdens de configuratie." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} verwijderd." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "Verwijderen van {name} mislukt: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1096,11 +1217,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "TLS domein" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1472,7 +1595,7 @@ msgid "Use HTTP basic authentication" msgstr "Gebruik HTTP-basisverificatie" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Gebruikersnaam" @@ -1982,12 +2105,6 @@ msgstr "Verwijder Wiki of Blog %(name)s" msgid "Delete this repository permanently?" msgstr "Deze repository permanent verwijderen?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "%(name)s verwijderen" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Repository aangemaakt." @@ -2006,16 +2123,6 @@ msgstr "Repository gewijzigd." msgid "Edit repository" msgstr "Wijzig repository" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} verwijderd." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "Verwijderen van {name} mislukt: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Documentatie" @@ -2549,7 +2656,7 @@ msgid "Chat Client" msgstr "Chat Cliënt" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "JavaScript licentie-informatie" @@ -3297,7 +3404,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3305,7 +3412,7 @@ msgstr "" "Mumble is een Open Source, snelle, versleutelde, hoge kwaliteit " "groepsgespreksserver." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3316,21 +3423,21 @@ 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Voice Chat" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "SSH server password" msgid "Set SuperUser Password" msgstr "SSH-server wachtwoord" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3348,7 +3455,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3779,7 +3886,7 @@ msgstr "Wijzig verbinding" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Wijzig" @@ -4053,6 +4160,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4574,31 +4682,31 @@ msgstr "" "bijvoorbeeld bekend dat HTTPS servers die niet op poort 443 worden ingesteld " "problemen opleveren." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Webserver (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" "De website zal beschikbaar zijn op http://{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Webserver (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" "De website zal beschikbaar zijn op https://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Secure Shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6198,24 +6306,24 @@ msgstr "Tor Socks Proxy" msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor relay poort beschikbaar" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 transport geregistreerd" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 transport geregistreerd" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bevestig Tor gebruik met {url} via tcp{kind}" @@ -6456,11 +6564,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Update" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6613,22 +6721,38 @@ msgstr "Toegang tot alle diensten en systeeminstellingen" msgid "Check LDAP entry \"{search_item}\"" msgstr "Zoek LDAP item \"{search_item}\"" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "Gebruikersnaam is in gebruik of is gereserveerd." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "Foute servernaam" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Beheerderswachtwoord" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Toon wachtwoord" + +#: plinth/modules/users/forms.py:105 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6650,20 +6774,23 @@ msgstr "" "ook op het systeem inloggen met SSH en kunnen systeemadministratie doen " "(sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "LDAP gebruiker aanmaken mislukt." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Nieuwe gebruiker aan groep {group} toevoegen mislukt." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Geautoriseerde SSH-sleutels" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6674,45 +6801,49 @@ msgstr "" "sleutels toevoegen, één op elke regel. Lege regels en regels die beginnen " "met # worden genegeerd." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "LDAP gebruiker hernoemen mislukt." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Gebruiker uit groep verwijderen mislukt." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Gebruiker aan groep toevoegen mislukt." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "Kan de SSH-sleutels niet instellen." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Gebruiker aan groep toevoegen mislukt." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Kan de enige beheerder in het systeem niet verwijderen." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Wijzigen LDAP gebruikerswachtwoord mislukt." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Toevoegen van gebruiker aan admin groep mislukt." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Consoletoegang beperken is mislukt." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Gebruikersaccount aangemaakt, U bent nu ingelogd" @@ -6725,15 +6856,16 @@ msgstr "Wijzig wachtwoord van %(username)s" msgid "Save Password" msgstr "Wachtwoord Opslaan" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Nieuwe gebruiker registreren" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Gebruiker verwijderen" @@ -6751,7 +6883,7 @@ msgstr "Verwijder %(username)s" msgid "Administrator Account" msgstr "Beheerdersaccount" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6761,12 +6893,34 @@ msgstr "" "wachtwoord kan later worden veranderd. Deze gebruiker krijgt administratieve " "rechten. Andere gebruikers kunnen later worden toegevoegd." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Account aanmaken" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Beheerdersaccount" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Kan de enige beheerder in het systeem niet verwijderen." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Gebruikers" @@ -6780,7 +6934,12 @@ msgstr "Verwijder gebruiker %(username)s" msgid "Edit user %(username)s" msgstr "Gebruiker %(username)s wijzigen" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "Gebruiker %(username)s wijzigen" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6789,39 +6948,39 @@ msgstr "" "Gebruik het wachtwoord wijzigingsformulier " " om het wachtwoord te veranderen." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Wijzigingen opslaan" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Gebruiker %(username)s aangemaakt." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "Gebruiker %(username)s bijgewerkt." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Gebruiker wijzigen" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "Gebruiker {user} verwijderd." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "Verwijderen van LDAP gebruiker mislukt." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Wijzig wachtwoord" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Wachtwoord succesvol gewijzigd." @@ -7311,28 +7470,28 @@ msgstr "Apps" msgid "System" msgstr "Systeem" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Wijzig wachtwoord" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Herstarten" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Uitschakelen" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Afmelden" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Selecteer taal" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Aanmelden" @@ -9011,9 +9170,6 @@ msgstr "Gujarati" #~ msgid "Bittorrent (Transmission)" #~ msgstr "BitTorrent (Transmission)" -#~ msgid "Edit User %(username)s" -#~ msgstr "Gebruiker %(username)s wijzigen" - #~ msgid "Scramblesuit transport registered" #~ msgstr "Scramblesuit transport geregisteerd" diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index 5f1909383..8c48dcc67 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-06-10 15:41+0000\n" "Last-Translator: WaldiS \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:57 +#, fuzzy +#| msgid "Enable application" +msgid "Administer calibre application" +msgstr "Aktywuj aplikację" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Create new repository" +msgid "Name of the new library" +msgstr "Utwórz nowe repozytorium" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "Remote backup repository already exists." +msgid "A library with this name already exists." +msgstr "Zdalne repozytorium już istnieje." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Usuń wiki lub blog %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Usuń %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create Repository" +msgid "Manage Libraries" +msgstr "Utwórz repozytorium" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Utwórz repozytorium" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository removed." +msgid "Library created." +msgstr "Usunięto repozytorium." + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1120,11 +1236,13 @@ msgstr "" msgid "VoIP Helper" msgstr "Asystent VoIP" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "Domena TLS" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1492,7 +1610,7 @@ msgid "Use HTTP basic authentication" msgstr "Użyj podstawowej autentyfikacji HTTP" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Nazwa użytkownika" @@ -2016,12 +2134,6 @@ msgstr "Usuń wiki lub blog %(name)s" msgid "Delete this repository permanently?" msgstr "Usunąć trwale to archiwum?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Usuń %(name)s" - #: plinth/modules/gitweb/views.py:45 #, fuzzy #| msgid "Repository removed." @@ -2044,16 +2156,6 @@ msgstr "Usunięto repozytorium." msgid "Edit repository" msgstr "Utwórz repozytorium" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentacja" @@ -2563,7 +2665,7 @@ msgid "Chat Client" msgstr "Klient czatu" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "Informacje o licencji JavaScript" @@ -3237,34 +3339,34 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "SSH server password" msgid "Set SuperUser Password" msgstr "Hasło do serwera SSH" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3282,7 +3384,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3681,7 +3783,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3950,6 +4052,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4407,29 +4510,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5858,24 +5961,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6075,11 +6178,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6229,22 +6332,38 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "Niewłaściwa nazwa użytkownika" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Account" +msgid "Authorization Password" +msgstr "Konto Administratora" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Pokaż hasło" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6253,65 +6372,71 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Tworzenie użytkownika LDAP się nie udało." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." -msgstr "" +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to {group} group: {error}" +msgstr "Nieudane dodawanie użytkownika do grupy admin." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add new user to admin group." msgid "Failed to change user status." msgstr "Nieudane dodawanie użytkownika do grupy admin." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Nieudane dodawanie użytkownika do grupy admin." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Utworzono konto użytkownika, możesz się teraz zalogować" @@ -6324,15 +6449,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -6350,7 +6476,7 @@ msgstr "" msgid "Administrator Account" msgstr "Konto Administratora" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6360,12 +6486,32 @@ msgstr "" "zmienione. Użytkownik będzie miał przyznane uprawnienienia administracyjne. " "Innych użytkowników można dodać później." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Utwórz konto" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Konto Administratora" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -6379,46 +6525,52 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Edit User %(username)s" +msgstr "Usuń wiki lub blog %(name)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6900,30 +7052,30 @@ msgstr "Aplikacje" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Zmień hasło" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Uruchom ponownie" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Wyłącz" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Wyloguj się" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 #, fuzzy #| msgid "Language" msgid "Select language" msgstr "Język" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Zaloguj się" @@ -7250,9 +7402,6 @@ msgstr "" #~ msgid "Deleted all snapshots" #~ msgstr "Usuń %(name)s" -#~ msgid "Enable application" -#~ msgstr "Aktywuj aplikację" - #~ msgid "Application enabled" #~ msgstr "Aplikacja włączona" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index 57099f25f..f65f10d5c 100644 --- a/plinth/locale/pt/LC_MESSAGES/django.po +++ b/plinth/locale/pt/LC_MESSAGES/django.po @@ -7,17 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" -"PO-Revision-Date: 2020-04-08 13:55+0000\n" -"Last-Translator: Manuela Silva \n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" +"PO-Revision-Date: 2020-09-29 09:39+0000\n" +"Last-Translator: ssantos \n" "Language-Team: Portuguese \n" +"freedombox/pt/>\n" "Language: pt\n" "MIME-Version: 1.0\n" "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.0-dev\n" +"X-Generator: Weblate 4.3-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -61,7 +61,7 @@ msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -"Atenção! O aplicativo pode não responder corretamente se o nome de domínio " +"Atenção! A aplicação pode não responder corretamente se o nome de domínio " "for alterado mais tarde." #: plinth/forms.py:48 @@ -415,6 +415,7 @@ msgstr "Apagar ficheiro %(name)s" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "Submeter" @@ -696,7 +697,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "" @@ -871,12 +872,125 @@ msgstr "Atualizar endereço de IP e domínios" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "Configuração atualizada" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +#, fuzzy +#| msgid "Enable application" +msgid "Administer calibre application" +msgstr "Ativar aplicação" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Create new repository" +msgid "Name of the new library" +msgstr "Criar novo repositório" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Archive %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Apagar ficheiro %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create new repository" +msgid "Manage Libraries" +msgstr "Criar novo repositório" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Criar Repositório" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository not found" +msgid "Library created." +msgstr "Repositório não encontrado" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1084,13 +1198,15 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 #, fuzzy #| msgid "Domain Name" msgid "TLS domain" msgstr "Nome de Domínio" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1416,7 +1532,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1888,12 +2004,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "Apagar este arquivo permanentemente?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 #, fuzzy #| msgid "Repository not found" @@ -1916,16 +2026,6 @@ msgstr "Repositório não encontrado" msgid "Edit repository" msgstr "Criar novo repositório" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2409,7 +2509,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -3097,34 +3197,34 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "SSH server password" msgid "Set SuperUser Password" msgstr "Password do servidor SSH" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3142,7 +3242,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3542,7 +3642,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3811,6 +3911,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4266,29 +4367,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5685,24 +5786,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5897,11 +5998,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -6050,22 +6151,36 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid domain name" msgid "Enter a valid username." msgstr "Nome de domínio inválido" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Upload Password" +msgid "Invalid password." +msgstr "Palavra-passe de Envio" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6074,63 +6189,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -6143,15 +6261,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -6169,19 +6288,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -6195,46 +6332,52 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Service discovery server is running" +msgid "Edit User %(username)s" +msgstr "O Servidor da descoberta do serviço está a correr" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6685,30 +6828,30 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 #, fuzzy #| msgid "Language" msgid "Select language" msgstr "Língua" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" @@ -6969,9 +7112,6 @@ msgstr "Gujarati" #~ msgid "Restoring" #~ msgstr "A restaurar" -#~ msgid "Enable application" -#~ msgstr "Ativar aplicação" - #, fuzzy #~| msgid "Setting unchanged" #~ msgid "Settings unchanged" @@ -7002,11 +7142,6 @@ msgstr "Gujarati" #~ msgid "Internet connection type saved." #~ msgstr "Configuração atualizada" -#, fuzzy -#~| msgid "Service discovery server is running" -#~ msgid "Service %(service_name)s is running." -#~ msgstr "O Servidor da descoberta do serviço está a correr" - #~ msgid "" #~ "To make SIP calls, a client application is needed. Available clients " #~ "include Jitsi (for computers) and \n" "Language-Team: Russian calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Администрирование приложения Syncthing" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Имя репозитория" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Общий ресурс с таким именем уже существует." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Удалить репозиторий Git %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Удаление %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Управление репозиториями" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Создать репозиторий" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Нет доступных репозиториев." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Удаление узла %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Репозиторий создан." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred while creating the repository." +msgid "An error occurred while creating the library." +msgstr "Ошибка при создании репозитория." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} удален." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "Не удалось удалить {name}: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1114,11 +1235,13 @@ msgstr "Coturn" msgid "VoIP Helper" msgstr "VoIP-помощник" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "Домен TLS" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1482,7 +1605,7 @@ msgid "Use HTTP basic authentication" msgstr "Использовать базовую аутентификацию HTTP" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Имя пользователя" @@ -2000,12 +2123,6 @@ msgstr "Удалить репозиторий Git %(name)s" msgid "Delete this repository permanently?" msgstr "Удалить этот репозиторий навсегда?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Удаление %(name)s" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Репозиторий создан." @@ -2022,16 +2139,6 @@ msgstr "Репозиторий отредактирован." msgid "Edit repository" msgstr "Редактировать репозиторий" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} удален." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "Не удалось удалить {name}: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Документация" @@ -2596,7 +2703,7 @@ msgid "Chat Client" msgstr "Чат-клиент" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "Информация о лицензии JavaScript" @@ -3360,7 +3467,7 @@ msgstr "Опубликованый ключ на сервере ключей." msgid "Error occurred while publishing key." msgstr "Произошла ошибка при публикации ключа." -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3368,7 +3475,7 @@ msgstr "" "Mumble это шифрованый чат с высоким качеством голоса, низкой задержкой и " "открытым исходным кодом." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3378,19 +3485,19 @@ msgstr "" "64738. На Клиенты вы можете найти " "клиенты для вашего компьютера и Android устройств." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Голосовой чат" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "Установить пароль суперпользователя" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3410,7 +3517,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "Пароль суперпользователя успешно обновлён." @@ -3890,7 +3997,7 @@ msgstr "Редактирование подключения" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Редактировать" @@ -4166,6 +4273,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "Пропустить этот шаг" @@ -4702,29 +4810,29 @@ msgstr "" "все комбинации протокол/порт, которые вы можете здесь задать. Например, " "HTTPS на портах, отличных от 443, может вызывать проблемы." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Веб-сервер (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "Сайт будет доступен на http://{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Веб-сервер (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "Сайт будет доступен на https://{0}" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Sеcure Shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5355,8 +5463,8 @@ msgid "" "community." msgstr "" "Частые обновления функций позволяют службе %(box_name)s, а также очень " -"ограниченному набору программного обеспечения, чаще получать новые функции (" -"из репозитория backports). Это приводит к получению некоторых новых функций " +"ограниченному набору программного обеспечения, чаще получать новые функции " +"(из репозитория backports). Это приводит к получению некоторых новых функций " "в течение нескольких недель, а не раз в 2 года или около того. Обратите " "внимание, что программное обеспечение с частыми обновлениями функций не " "поддерживается командой безопасности Debian. Вместо этого они поддерживаются " @@ -6305,24 +6413,24 @@ msgstr "Tor Socks прокси" msgid "Tor Bridge Relay" msgstr "Ретранслятор Tor типа мост" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Доступен порт трансляции Tor" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 транспорт зарегестрирован" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 транспорт зарегистрирован" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Доступ к {url} по tcp{kind} через Tor" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Подтверждение использования Tor в {url} по tcp {kind}" @@ -6550,11 +6658,11 @@ msgstr "" "выполняется автоматически в 02:00, в результате чего все приложения на " "короткое время становятся недоступными." -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Обновление" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "FreedomBox обновлён" @@ -6721,21 +6829,37 @@ msgstr "Доступ ко всем сервисам и настройкам си msgid "Check LDAP entry \"{search_item}\"" msgstr "Проверьте запись LDAP \"{search_item}\"" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "Имя пользователя уже занято." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "Введите действительное имя пользователя." -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Требуется. 150 символов или меньше. Только английские буквы, цифры и @/./-/_." -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Пароль администратора" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Add password" +msgid "Invalid password." +msgstr "Добавить пароль" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6749,20 +6873,23 @@ msgstr "" "Пользователи в группе администратора имеют доступ ко всем службам. Они также " "могут войти в систему через SSH и иметь административные привилегии (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Создание пользователя LDAP не удалось." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Не удалось добавить нового пользователя в группу {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Авторизованные SSH ключи" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6773,43 +6900,47 @@ msgstr "" "на каждой строке. Пустые строки и строки, начинающиеся с # будут " "игнорироваться." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "Переименование пользователя LDAP не удалось." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Не удалось удалить пользователя из группы." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Не удалось добавить пользователя в группу." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "Не удалось задать ключи SSH." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "Не удалось изменить статус пользователя." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Невозможно удалить единственного администратора в системе." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Изменение LDAP пароля пользователя не удалось." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Не удалось добавить нового пользователя в группу администратора." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Не удалось ограничить доступ к консоли." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Учетная запись пользователя создана, теперь вы вошли" @@ -6822,15 +6953,16 @@ msgstr "Изменение пароля для %(username)s" msgid "Save Password" msgstr "Сохранить пароль" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Создать пользователя" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Удаление пользователя" @@ -6848,7 +6980,7 @@ msgstr "Удаление %(username)s" msgid "Administrator Account" msgstr "Учетная запись администратора" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6858,12 +6990,34 @@ msgstr "" "можно изменить позднее. Этому пользователю будут предоставляться " "административные привилегии. Другие пользователи могут быть добавлены позже." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Создать учетную запись" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Учетная запись администратора" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Невозможно удалить единственного администратора в системе." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Пользователи" @@ -6877,7 +7031,13 @@ msgstr "Удалить пользователя %(username)s" msgid "Edit user %(username)s" msgstr "Редактирование пользователя %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "Редактирование пользователя %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6886,39 +7046,39 @@ msgstr "" "Используйте форму смены пароля для " "смены пароля." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Сохранить изменения" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Пользователь %(username)s создан." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "Пользователь %(username)s обновлен." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Редактирование пользователя" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "Пользователь {user} удален." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "Сбой при удалении LDAP пользователя." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Изменить пароль" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Пароль успешно изменён." @@ -7366,28 +7526,28 @@ msgstr "Приложения" msgid "System" msgstr "Система" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Изменить пароль" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Перезапустить" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Завершить работу" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Выход" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Выберите язык" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Войти" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index ef988e28f..51e350640 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2019-05-07 20:48+0000\n" "Last-Translator: Erik Ušaj \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:57 +#, fuzzy +#| msgid "Enable application" +msgid "Administer calibre application" +msgstr "Omogoči aplikacijo" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Create new repository" +msgid "Name of the new library" +msgstr "Ustvari novo skladišče" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "Create remote backup repository" +msgid "A library with this name already exists." +msgstr "Ustvari oddaljeno skladišče za rezervne kopije" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Archive %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Brisanje arhiva %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create new repository" +msgid "Manage Libraries" +msgstr "Ustvari novo skladišče" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create new repository" +msgid "Create Library" +msgstr "Ustvari novo skladišče" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository not found" +msgid "Library created." +msgstr "Ne najdem skladišča" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1151,11 +1267,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1475,7 +1593,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1943,12 +2061,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "Želite ta arhiv trajno izbrisati?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 #, fuzzy #| msgid "Repository not found" @@ -1971,16 +2083,6 @@ msgstr "Ne najdem skladišča" msgid "Edit repository" msgstr "Ustvari novo skladišče" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2447,7 +2549,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -3094,34 +3196,34 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "SSH server password" msgid "Set SuperUser Password" msgstr "Geslo strežnika SSH" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3139,7 +3241,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3533,7 +3635,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3802,6 +3904,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4255,29 +4358,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5650,24 +5753,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5864,11 +5967,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -6011,22 +6114,36 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid hostname" msgid "Enter a valid username." msgstr "Neveljavno ime gostitelja" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid password." +msgstr "Neveljavno ime gostitelja" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6035,63 +6152,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -6104,15 +6224,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -6130,19 +6251,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -6156,46 +6295,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6638,28 +6782,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" @@ -6895,9 +7039,6 @@ msgstr "" #~ msgid "Restoring" #~ msgstr "Obnavljanje" -#~ msgid "Enable application" -#~ msgstr "Omogoči aplikacijo" - #, fuzzy #~| msgid "Connection refused" #~ msgid "Custom Section" diff --git a/plinth/locale/sr/LC_MESSAGES/django.po b/plinth/locale/sr/LC_MESSAGES/django.po index 011b2a93e..5b4eb1065 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-04-13 05:34+0000\n" "Last-Translator: vihor \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:57 +#, fuzzy +#| msgid "Enable application" +msgid "Administer calibre application" +msgstr "Aktiviraj aplikaciju" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Archive %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Izbriši Arhivu %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Kreirajte repozitorij" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Archive created." +msgid "Library created." +msgstr "Arhiva kreirana." + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1075,11 +1185,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1397,7 +1509,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1846,12 +1958,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1868,16 +1974,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2343,7 +2439,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2990,32 +3086,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3033,7 +3129,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3427,7 +3523,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3694,6 +3790,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4147,29 +4244,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5532,24 +5629,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5738,11 +5835,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "" @@ -5883,20 +5980,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5905,63 +6014,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5974,15 +6086,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -6000,19 +6113,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -6026,46 +6157,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6476,28 +6612,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" @@ -6732,6 +6868,3 @@ msgstr "" #~ msgid "Restoring" #~ msgstr "Vraćanje podataka" - -#~ msgid "Enable application" -#~ msgstr "Aktiviraj aplikaciju" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 8075d67cc..b21d0ca3b 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" -"PO-Revision-Date: 2020-08-24 14:45+0000\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" +"PO-Revision-Date: 2020-09-28 12:41+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.2.1-dev\n" +"X-Generator: Weblate 4.3-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -150,10 +150,8 @@ msgid "{app} (No data to backup)" msgstr "{app} (Inga data att säkerhetskopiera)" #: plinth/modules/backups/forms.py:50 -#, fuzzy -#| msgid "Create Repository" msgid "Repository" -msgstr "Skapa respository" +msgstr "Databasen" #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 @@ -223,10 +221,8 @@ msgstr "" "säkerhetskopian." #: plinth/modules/backups/forms.py:122 -#, fuzzy -#| msgid "Create Repository" msgid "Key in Repository" -msgstr "Skapa respository" +msgstr "Key i databasen" #: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 msgid "None" @@ -412,6 +408,7 @@ msgstr "Ta bort arkiv %(name)s" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "Sänd" @@ -434,7 +431,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_repository.html:77 msgid "Download" -msgstr "Ladda ner" +msgstr "Hämta" #: plinth/modules/backups/templates/backups_repository.html:81 #: plinth/modules/backups/templates/backups_restore.html:27 @@ -712,7 +709,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "Behörigheter" @@ -794,7 +791,7 @@ msgstr "Ett fel inträffade under konfiguration." #: plinth/modules/bepasty/views.py:97 msgid "Password added." -msgstr "Lösenord tillagt" +msgstr "Lösenord tillagt." #: plinth/modules/bepasty/views.py:102 msgid "Add Password" @@ -802,7 +799,7 @@ msgstr "Lägg till lösenord" #: plinth/modules/bepasty/views.py:119 msgid "Password deleted." -msgstr "Lösenord raderat" +msgstr "Lösenord raderat." #: plinth/modules/bind/__init__.py:29 msgid "" @@ -881,12 +878,132 @@ msgstr "Uppdatera IP-adress och domäner" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "Konfiguration uppdaterad" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Administrera Syncthing-program" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Förvarets namn" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Det finns redan en share med det här namnet." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Ta bort Git-respository %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "Ta bort %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Hantera respositories" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Skapa respository" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Inga förvar finns tillgängliga." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "Ta bort webbsida %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Respository skapat." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred while creating the repository." +msgid "An error occurred while creating the library." +msgstr "Ett fel uppstod medan skapa ett repository." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} borttagen." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "Kunde inte ta bort {name}: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1118,11 +1235,13 @@ msgstr "Coturn" msgid "VoIP Helper" msgstr "VoIP-hjälpare" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "TLS Domän" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1229,20 +1348,16 @@ msgid "Diagnostics" msgstr "Diagnostik" #: plinth/modules/diagnostics/__init__.py:102 -#, fuzzy -#| msgid "Quassel" msgid "passed" -msgstr "Quassel" +msgstr "passerade" #: plinth/modules/diagnostics/__init__.py:103 -#, fuzzy -#| msgid "Setup failed." msgid "failed" -msgstr "Installationen misslyckades." +msgstr "misslyckades" #: plinth/modules/diagnostics/__init__.py:104 msgid "error" -msgstr "" +msgstr "fel" #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 @@ -1262,7 +1377,7 @@ msgstr "Resultat" #: plinth/modules/diagnostics/templates/diagnostics_app.html:12 #, python-format msgid "App: %(app_id)s" -msgstr "App: %(app_id)s" +msgstr "App:%(app_id)s" #: plinth/modules/diagnostics/templates/diagnostics_app.html:10 msgid "Diagnostic Results" @@ -1457,13 +1572,11 @@ msgstr "Användarnamnet som användes när konton skapades." #: plinth/modules/dynamicdns/forms.py:65 msgid "GnuDIP" -msgstr "" +msgstr "GnuDIP" #: plinth/modules/dynamicdns/forms.py:68 -#, fuzzy -#| msgid "Update URL" msgid "other update URL" -msgstr "Adress för uppdateringar" +msgstr "annan uppdaterings-URL" #: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" @@ -1494,7 +1607,7 @@ msgid "Use HTTP basic authentication" msgstr "Använd grundläggande HTTP-autentisering" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Användarnamn" @@ -1961,14 +2074,12 @@ msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "En alfanumerisk sträng som identifierar ett respository unikt." #: plinth/modules/gitweb/forms.py:134 -#, fuzzy -#| msgid "Default Skin" msgid "Default branch" -msgstr "Standardskal" +msgstr "Standardgren" #: plinth/modules/gitweb/forms.py:135 msgid "Gitweb displays this as a default branch." -msgstr "" +msgstr "Gitweb visar detta som en standardgren." #: plinth/modules/gitweb/manifest.py:21 msgid "Git" @@ -2010,12 +2121,6 @@ msgstr "Ta bort Git-respository %(name)s" msgid "Delete this repository permanently?" msgstr "Radera detta arkiv permanent?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "Ta bort %(name)s" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Respository skapat." @@ -2032,16 +2137,6 @@ msgstr "Respository redigerad." msgid "Edit repository" msgstr "Redigera respository" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} borttagen." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "Kunde inte ta bort {name}: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentation" @@ -2057,7 +2152,7 @@ msgstr "Handbok" #: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" -msgstr "Få stöd" +msgstr "Få support" #: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 @@ -2071,7 +2166,7 @@ msgstr "Skicka feedback" #: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" -msgstr "Bidra" +msgstr "Bidrar" #: plinth/modules/help/templates/help_about.html:17 #, python-format @@ -2404,7 +2499,7 @@ msgstr "I2P Proxies och tunnlar" #: plinth/modules/i2p/templates/i2p.html:21 #: plinth/modules/i2p/templates/i2p.html:34 plinth/templates/clients.html:28 msgid "Launch" -msgstr "Lansera" +msgstr "Starta" #: plinth/modules/i2p/templates/i2p.html:25 msgid "Anonymous Torrents" @@ -2605,7 +2700,7 @@ msgid "Chat Client" msgstr "Chat klient" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "JavaScript-licensinformation" @@ -3361,7 +3456,7 @@ msgstr "Publicerade nyckeln till nyckelserver." msgid "Error occurred while publishing key." msgstr "Fel uppstod när nyckeln publicerades." -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3369,7 +3464,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:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3379,19 +3474,19 @@ msgstr "" "\"http://mumble.info\"> Appar finns för att ansluta till Mumble från din " "dator- och Android-enheter." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Röstchatt" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "Ange SuperUser lösenord" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3412,7 +3507,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "SuperUser lösenord har uppdaterats." @@ -3442,10 +3537,8 @@ msgid "All web apps" msgstr "Alla webbappar" #: plinth/modules/names/templates/names.html:16 -#, fuzzy -#| msgid "Service" msgid "Services" -msgstr "Tjänst" +msgstr "Tjänster" #: plinth/modules/networks/__init__.py:40 msgid "" @@ -3893,7 +3986,7 @@ msgstr "Redigera anslutning" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Redigera" @@ -4171,6 +4264,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "Hoppa över det här steget" @@ -4702,33 +4796,33 @@ msgstr "" "de protokoll/port kombinationer som du kan definiera här. Till exempel, " "HTTPS på andra portar än 443 är kända för att orsaka problem." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Webb server (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" "Webbplatsen kommer att finnas tillgänglig på http://" "{0}" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Webb server (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" "Webbplatsen kommer att finnas tillgänglig på https://" "{0} " -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Secure Shell (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -4747,12 +4841,18 @@ msgid "" "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" +"Performance app låter dig samla in, lagra och visa information om hur " +"hårdvaran används. Detta kan ge dig grundläggande insikter om " +"användningsmönster och om hårdvaran är överbelastad av användare och " +"tjänster." #: plinth/modules/performance/__init__.py:29 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" +"Prestandamätvärden samlas in av Performance Co-Pilot och kan visas med " +"Cockpit-appen." #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" @@ -4961,10 +5061,8 @@ msgstr "" "en kalender/adressbok." #: plinth/modules/radicale/forms.py:30 -#, fuzzy -#| msgid "Access Point" msgid "Access rights" -msgstr "Kopplingspunkt" +msgstr "Tillträdesrätt" #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" @@ -5331,21 +5429,13 @@ msgstr "Frekventa funktionsuppdateringar" #: plinth/modules/security/templates/security.html:19 #: plinth/modules/upgrades/templates/upgrades_configure.html:19 -#, fuzzy -#| msgid "Frequent feature updates are enabled." msgid "Frequent feature updates are activated." msgstr "Frekventa funktionsuppdateringar är aktiverade." #: plinth/modules/security/templates/security.html:24 #: plinth/modules/upgrades/templates/backports-firstboot.html:14 #: plinth/modules/upgrades/templates/upgrades_configure.html:31 -#, fuzzy, python-format -#| msgid "" -#| "This will allow a very limited set of software, including FreedomBox " -#| "service, to be updated to receive newer features regularly instead of " -#| "once every 2 years or so. Note that packages with frequent feature " -#| "updates do not have support from Debian Security Team. They are instead " -#| "maintained by contributors to Debian and the FreedomBox community." +#, python-format msgid "" "Frequent feature updates allow the %(box_name)s Service, plus a very limited " "set of software, to receive new features more frequently (from the backports " @@ -5355,12 +5445,13 @@ msgid "" "Instead, they are maintained by contributors to Debian and the %(box_name)s " "community." msgstr "" -"Detta kommer att möjliggöra en mycket begränsad uppsättning av programvara, " -"inklusive FreedomBox service, att vara uppdaterad för att få nyare " -"funktioner regelbundet istället för en gång per 2 år eller så. Observera att " -"paket med täta uppdateringar inte har stöd från Debians säkerhetsgrupp. De " -"är i stället upprätthålls av bidragsgivarna till Debian och FreedomBox " -"gemenskapen." +"Frekventa funktionsuppdateringar gör att %(box_name)s Tjänsten, plus en " +"mycket begränsad uppsättning programvaror, kan ta emot nya funktioner oftare " +"(från backports-förvaret). Detta resulterar i att få några nya funktioner " +"inom veckor, i stället för bara en gång vart 2 år eller så. Observera att " +"programvara med frekventa funktionsuppdateringar inte har stöd från Debians " +"säkerhetsgrupp. Istället underhålls de av bidragsgivare till Debian och " +"%(box_name)s community." #: plinth/modules/security/templates/security_report.html:10 #: plinth/modules/security/views.py:74 @@ -5747,16 +5838,12 @@ msgid "Yearly Snapshots Limit" msgstr "Årlig ögonblicksbild gräns" #: plinth/modules/snapshot/forms.py:49 -#, fuzzy -#| msgid "" -#| "Keep a maximum of this many yearly snapshots. The default value is 0 " -#| "(disabled)." msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 (keep " "no yearly snapshot)." msgstr "" -"Behåll högst detta många årliga ögonblicksbilder. Standardvärdet är 0 " -"(inaktiverat)." +"Behåll maximalt så här många årsögonblicksbilder. Standardvärdet är 0 " +"(behåll ingen årsögonblicksbild)." #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 msgid "Delete the following snapshots permanently?" @@ -6307,24 +6394,24 @@ msgstr "Tor SOCKS-proxy" msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor relä port tillgänglig" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registrerad" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registrerad" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, 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:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekräfta Tor-användning vid {url} på TCP {kind}" @@ -6516,7 +6603,7 @@ msgid "" "href=\"/tt-rss-app/\">/tt-rss-app for connecting." 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." +"Använd URL/tt-rss-app/\" för att ansluta." #: plinth/modules/ttrss/__init__.py:53 msgid "Read and subscribe to news feeds" @@ -6552,11 +6639,11 @@ 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:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Uppdatera" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "FreedomBox uppdaterad" @@ -6579,20 +6666,16 @@ msgid "" "It is strongly recommended to activate frequent feature updates. If not " "activated now, they can be activated later." msgstr "" +"Det rekommenderas starkt att aktivera frekventa funktionsuppdateringar. Om " +"den inte aktiveras nu, kan de aktiveras senare." #: plinth/modules/upgrades/templates/backports-firstboot.html:33 -#, fuzzy -#| msgid "" -#| "Warning! Once frequent feature updates are activated, " -#| "they cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." msgid "" "Note: Once frequent feature updates are activated, they " "cannot be deactivated." msgstr "" -"Varning! När täta uppdateringar är aktiverade, de kan inte " -"stängas av. Du kanske vill ta en snapshot med hjälp av Ögonblicksbilder av lagring innan du fortsätter." +"Obs: När frekventa funktionsuppdateringar har aktiverats " +"kan de inte avaktiveras." #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format @@ -6620,14 +6703,12 @@ msgstr "" "Frekventa funktionsuppdateringar kan aktiveras. Aktivera dem rekommenderas." #: plinth/modules/upgrades/templates/upgrades_configure.html:23 -#, fuzzy -#| msgid "" -#| "Frequent feature updates can be activated. Activating them is recommended." msgid "" "Frequent feature updates cannot be activated. They may not be necessary on " "your distribution." msgstr "" -"Frekventa funktionsuppdateringar kan aktiveras. Aktivera dem rekommenderas." +"Frekventa funktionsuppdateringar kan inte aktiveras. De kanske inte är " +"nödvändiga för din distribution." #: plinth/modules/upgrades/templates/upgrades_configure.html:45 #, python-format @@ -6689,10 +6770,8 @@ msgid "Starting upgrade failed." msgstr "Det gick inte att starta uppgraderingen." #: plinth/modules/upgrades/views.py:91 -#, fuzzy -#| msgid "Frequent feature updates are enabled." msgid "Frequent feature updates activated." -msgstr "Frekventa funktionsuppdateringar är aktiverade." +msgstr "Frekventa funktionsuppdateringar aktiverade." #: plinth/modules/users/__init__.py:39 msgid "" @@ -6729,22 +6808,38 @@ msgstr "Tillgång till alla tjänster och Systeminställningar" msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrollera LDAP-posten \"{search_item}\"" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "Användarnamnet är upptaget eller är reserverade." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "Ange ett giltigt användarnamn." -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Krävs. 150 tecken eller färre. Engelska bokstäver, siffror och endast @/./-/" "_ ." -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Administratörs lösenord" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Add password" +msgid "Invalid password." +msgstr "Lägg till lösenord" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6758,20 +6853,23 @@ msgstr "" "administratörsgruppen kommer att kunna logga in på alla tjänster. De kan " "också logga in på systemet via SSH och har administratörsprivilegier (sudo)." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "Det gick inte att skapa LDAP-användare." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "Det gick inte att lägga till nya användare i gruppen {group}." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Auktoriserade SSH-nycklar" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6781,43 +6879,47 @@ msgstr "" "systemet utan att använda ett lösenord. Du kan ange flera nycklar, en på " "varje rad. Tomma rader och rader som börjar med # kommer att ignoreras." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "Det gick inte att byta namn på LDAP-användare." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Det gick inte att ta bort användare från gruppen." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Det gick inte att lägga till användare i gruppen." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "Det går inte att ange SSH-nycklar." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "Det gick inte att ändra användarstatus." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Det går inte att ta bort den enda administratören i systemet." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "Det gick inte att ändra användarlösenordet för LDAP." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Det gick inte att lägga till ny användare till administrationsgruppen." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Det gick inte att begränsa åtkomst till konsolen." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Användarkonto skapat, du är nu inloggad" @@ -6830,15 +6932,16 @@ msgstr "Ändra lösenord för %(username)s " msgid "Save Password" msgstr "Spara lösenord" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Skapa användare" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Ta bort användare" @@ -6856,7 +6959,7 @@ msgstr "Ta bort %(username)s" msgid "Administrator Account" msgstr "Administratörskonto" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6866,12 +6969,34 @@ msgstr "" "Lösenordet kan ändras senare. Denna användare kommer att beviljas " "administrativa privilegier. Andra användare kan läggas till senare." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Skapa konto" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Administratörskonto" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Det går inte att ta bort den enda administratören i systemet." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Användare" @@ -6885,7 +7010,13 @@ msgstr "Ta bort användare %(username)s" msgid "Edit user %(username)s" msgstr "Redigera användare %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "Redigera användare %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6894,39 +7025,39 @@ msgstr "" "Använd formuläret ändra lösenord för " "att ändra lösenordet." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Spara ändringar" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "Användaren %(username)s skapades." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "Användaren %(username)s har uppdaterats." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Redigera användar" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "Användare {user} borttagen." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "Det gick inte att ta bort LDAP-användare." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Ändra lösenord" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Lösenordet har ändrats." @@ -7373,28 +7504,28 @@ msgstr "Appar" msgid "System" msgstr "System" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Ändra lösenord" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Starta om" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Stänga ner" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Logga ut" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Välj språk" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Logga in" @@ -7509,7 +7640,7 @@ msgstr "Hemsida" #: plinth/templates/index.html:140 msgid "Source Code" -msgstr "Källkoden" +msgstr "Källkod" #: plinth/templates/index.html:143 msgid "Donate" @@ -7560,16 +7691,13 @@ msgid "Port Forwarding" msgstr "Port Forwarding" #: plinth/templates/port-forwarding-info.html:13 -#, fuzzy, python-format -#| msgid "" -#| "You may want to check the network setup " -#| "and modify it if necessary." +#, python-format msgid "" "Your FreedomBox is not behind a router. No " "action is necessary." msgstr "" -"Du kanske vill kontrollera nätverksinställningar och ändra den vid behov." +"Din FreedomBox ligger inte bakom en router. " +"Ingen åtgärd är nödvändig." #: plinth/templates/port-forwarding-info.html:19 #, python-format @@ -7578,36 +7706,34 @@ msgid "" "are using the DMZ feature to forward all ports. No further router " "configuration is necessary." msgstr "" +"Din FreedomBox ligger bakom en router och " +"du använder DMZ-funktionen för att vidarebefordra alla portar. Ingen " +"ytterligare routerkonfiguration är nödvändig." #: plinth/templates/port-forwarding-info.html:26 -#, fuzzy, python-format -#| msgid "" -#| "If your FreedomBox is behind a router, you will need to set up port " -#| "forwarding on your router. You should forward the following ports for " -#| "%(service_name)s:" +#, python-format msgid "" "Your FreedomBox is behind a router and you " "are not using the DMZ feature. You will need to set up port forwarding on " "your router. You should forward the following ports for %(service_name)s:" msgstr "" -"Om din FreedomBox är bakom en router, måste du ställa in Port Forwarding på " -"routern. Du bör vidarebefordra följande portar för %(service_name)s:" +"Din FreedomBox ligger bakom en router och " +"du använder inte DMZ-funktionen. Du kommer att behöva ställa in port " +"forwarding på din router. Du bör vidarebefordra följande portar för " +"%(service_name)s:" #: plinth/templates/port-forwarding-info.html:36 -#, fuzzy -#| msgid "protocol" msgid "Protocol" -msgstr "Protokollet" +msgstr "Protokoll" #: plinth/templates/port-forwarding-info.html:37 msgid "From Router/WAN Ports" -msgstr "" +msgstr "Från Router/WAN-portar" #: plinth/templates/port-forwarding-info.html:38 -#, fuzzy, python-format -#| msgid "%(box_name)s Setup" +#, python-format msgid "To %(box_name)s Ports" -msgstr "%(box_name)s Installation" +msgstr "Till %(box_name)s Portar" #: plinth/templates/setup.html:24 msgid "Install this application?" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index c80dc8643..b07d76e4e 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -387,6 +387,7 @@ msgstr "" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "" @@ -653,7 +654,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "" @@ -811,12 +812,114 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +msgid "Administer calibre application" +msgstr "" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1013,11 +1116,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1335,7 +1440,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "" @@ -1784,12 +1889,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "" @@ -1806,16 +1905,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2281,7 +2370,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -2928,32 +3017,32 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -2971,7 +3060,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3363,7 +3452,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3630,6 +3719,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4083,29 +4173,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5466,24 +5556,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5672,11 +5762,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "" @@ -5817,20 +5907,32 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5839,63 +5941,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -5908,15 +6013,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -5934,19 +6040,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -5960,46 +6084,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6410,28 +6539,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index e174bad32..3a4fc37d9 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-06-24 11:41+0000\n" "Last-Translator: Sunil Mohan Adapa \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:57 +#, fuzzy +#| msgid "Install this application?" +msgid "Administer calibre application" +msgstr "ఈ అనువర్తనాన్ని నిక్షిప్తం చేయాలా?" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the share" +msgid "Name of the new library" +msgstr "షేర్ యొక్క పేరు" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +msgid "A library with this name already exists." +msgstr "ఈ సేవ ఇప్పటికే ఉంది" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "వికీ లేదా బ్లాగ్ తొలగించు %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "%(name)s తొలగించు" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create User" +msgid "Manage Libraries" +msgstr "వినియోగదారుని సృష్టించు" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create User" +msgid "Create Library" +msgstr "వినియోగదారుని సృష్టించు" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "Tor relay port available" +msgid "No libraries available." +msgstr "టార్ రిలే పోర్ట్ అందుబాటులో ఉంది" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "ప్రదేశం తొలగించు %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "రిపోజిటరీ సృష్టించబడింది." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "An error occurred while creating the library." +msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} తొలగించబడింది." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "{name} ను తొలగించలేము: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1121,13 +1241,15 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 #, fuzzy #| msgid "Subdomain" msgid "TLS domain" msgstr "ఉప డోమైన్ పేరు" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1500,7 +1622,7 @@ msgid "Use HTTP basic authentication" msgstr "HTTP ప్రాథమిక ప్రమాణీకరణ ఉపయోగించు" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "వినియోగి పేరు" @@ -2025,12 +2147,6 @@ msgstr "వికీ లేదా బ్లాగ్ తొలగించు %(name)s అనుసంధానం శాశ్వతంగా తొలగించు ?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "%(name)s తొలగించు" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "రిపోజిటరీ సృష్టించబడింది." @@ -2051,16 +2167,6 @@ msgstr "రిపోజిటరీ సవరించబడింది." msgid "Edit repository" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} తొలగించబడింది." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "{name} ను తొలగించలేము: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "పత్రావళి" @@ -2608,7 +2714,7 @@ msgid "Chat Client" msgstr "చాట్ క్లయింట్" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "జావాస్క్రిప్ట్ లైసెన్స్ సమాచరం" @@ -3344,7 +3450,7 @@ msgstr "కీ కీసేవకానికి ప్రచురించబ msgid "Error occurred while publishing key." msgstr "కీని ప్రచురించేటప్పుడు దోషం సంభవించింది." -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3352,7 +3458,7 @@ msgstr "" "మంబుల్ అనేది తక్కువ-జాప్యత, ఎన్క్రిప్టెడ్, అధిక నాణ్యతా వంటి విశిష్టలతో కూడిన ఒక ఓపెన్ సోర్స్ స్వర సంభాషణా " "సాఫ్ట్‌వేర్." -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 #, fuzzy msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. 1Clients 2 మీ నమలు సర్వర్ కనెక్ట్ చేయవచ్చు మరియు Android పరికరాలు " "అందుబాటులో ఉన్నాయి." -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "మంబుల్" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "స్వర సంభాషణ" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "SSH server password" msgid "Set SuperUser Password" msgstr "SSH సర్వర్ పాస్ వర్డ్" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3395,7 +3501,7 @@ msgstr "ముంబుల్ ఫ్లై" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3830,7 +3936,7 @@ msgstr "అనుసంధానాన్ని సవరించు" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "సవరించు" @@ -4105,6 +4211,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 #, fuzzy #| msgid "skip this step" msgid "Skip this step" @@ -4623,29 +4730,29 @@ msgstr "" "హెచ్చరిక:
మా PageKite ఫ్రంటెండ్ సర్వర్ మీరు ఇక్కడ నిర్వచించే చేయగల అన్ని ప్రోటోకాల్ / పోర్ట్ " "కాంబినేషన్ మద్దతు ఇవ్వకపోవచ్చు. ఉదాహరణకు, HTTPS 443 పోర్ట్లకు సమస్యలు కారణమవుతుంది." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "వెబ్ సేవిక (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "సైట్ http://{0} వద్ద అందుబాటులో ఉంటుంది" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "వెబ్ సేవిక (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "సైట్ https://{0} వద్ద అందుబాటులో ఉంటుంది" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "సెక్యూర్ షెల్ (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6216,24 +6323,24 @@ msgstr "సాక్స్5 ప్రాక్సీ" msgid "Tor Bridge Relay" msgstr "టార్ బ్రిడ్జ్ రిలే" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "టార్ రిలే పోర్ట్ అందుబాటులో ఉంది" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "టార్ ద్వారా {kind} లో {url} ను ఆక్సెస్ చెయ్యండి" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "టోర్ వాడుకను నిర్ధారించండి{url} టీ సి పి పై{kind}" @@ -6460,11 +6567,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "నవీకరణ యూ.ఆర్.ఎల్" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox Manual" msgid "FreedomBox Updated" @@ -6614,22 +6721,38 @@ msgstr "అన్ని సేవలకు మరియు వ్యవస్థ msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP నమోదు \"{search_item}\" తనిఖీ" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "యూజర్ పేరు తీసుకోబడింది లేదా రిజర్వ్ చేయబడింది." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "సేవిక పేరు చెలదు" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "నిర్వాహకుని రహస్యపదం" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "రహస్యపదం కనబర్చు" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6638,65 +6761,72 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "ఎల్.డి.ఏ.పి వాడుకరి సృష్టించడంలో విఫలమైంది." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "వినియోగదారుని {group} సముహానికి జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "అధీకృత SSH కీలు" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పేరుమార్పులో విఫలం." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "సమూహంలోంచి వినియోగదారుని తొలగించడంలో విఫలం." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "SSH కీలను సెట్ చేయడం సాధ్యం కాలేదు." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "సిస్టమ్‌లోని ఏకైక నిర్వాహకుడిని తొలగించలేరు." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పాస్‌వర్డ్ మార్పిడి విఫలం." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "కొత్త వాడుకరి ను అడ్మిన్ సమూహంలో జోడించడం విఫలమైనది." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "console ప్రవేశమును పరిమితి చెయడంలొ విఫలమైంది." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "వాడుకరి ఖాతా సృస్టించబడింది, మీరు లాగిన్ చేయబడ్డారు" @@ -6709,15 +6839,16 @@ msgstr "%(username)sకు పాస్‌వర్డ్ ను మా msgid "Save Password" msgstr "పాస్‌వర్డ్‌ను సేవ్ చేయి" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "వినియోగదారుని సృష్టించు" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "వినియోగదారుని తొలగించు" @@ -6735,7 +6866,7 @@ msgstr "%(username)s తొలగించు" msgid "Administrator Account" msgstr "నిర్వాహక ఖాతా" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6744,12 +6875,34 @@ msgstr "" "దయచేసి ఈ సంవిదనం కోసం ఒక వాడుకరి పేరు మరియు పాస్‌వర్డ్ ను ఎంచుకోండి. తర్వాత పాస్‌వర్డ్ ను " "మార్చుకోగలరు. ఈ వినియోగడారునికి పరిపాలనా అధికారాలు ఇవ్వబడుతాయి. మిగిలిన వినియోగదారులను తరువాత జోడించగలరు." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "ఖాతా సృష్టించు" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "నిర్వాహక ఖాతా" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "సిస్టమ్‌లోని ఏకైక నిర్వాహకుడిని తొలగించలేరు." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "వినియోగదారులు" @@ -6763,7 +6916,13 @@ msgstr "వినియోగదారి %(username)s ను తొలగిం msgid "Edit user %(username)s" msgstr "%(username)s వినియోగదారుని మార్చు" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "%(username)s వినియోగదారుని మార్చు" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6772,39 +6931,39 @@ msgstr "" "పాస్వర్డ్ను మార్చడానికి పాస్వర్డ్ రూపాన్ని మార్చండి ని " "ఉపయోగించండి." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "మార్పులను భద్రపరుచు" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "వినియోగదారి %(username)s సృష్టించబడ్డారు." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "వినియోగదారి %(username)s నావీకరించబడ్డాడు." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "వినియోగదారి మార్పు" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "వినియోగదారి {user} తొలగించబడ్డాడు." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వినియోగదారి తొలగింపు విఫలం." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "పాస్‌వర్డ్ మార్చు" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది." @@ -7273,32 +7432,32 @@ msgstr "అనువర్తనాలు" msgid "System" msgstr "వ్యవస్థ" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "సంకేతపదాన్ని మార్చు" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "పునఃప్రారంభించండి" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 #, fuzzy #| msgid "Shut Down Now" msgid "Shut down" msgstr "ఇపుడు మూసివేయండి" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "నిష్క్రమించు" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 #, fuzzy #| msgid "Language" msgid "Select language" msgstr "భాష" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "లోనికి ప్రవేశించండి" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index 9e0a73ad2..34ce11eea 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-09-15 16:55-0400\n" -"PO-Revision-Date: 2020-09-17 09:36+0000\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" +"PO-Revision-Date: 2020-10-01 21:41+0000\n" "Last-Translator: Burak Yavuz \n" "Language-Team: Turkish \n" @@ -217,12 +217,12 @@ msgid "" "\"Key in Repository\" means that a password-protected key is stored with the " "backup." msgstr "" -"\"Key in Repository\", parola korumalı bir anahtarın yedek ile saklanacağı " +"\"Anahtar Depoda\", parola korumalı bir anahtarın yedek ile saklanacağı " "anlamına gelir." #: plinth/modules/backups/forms.py:122 msgid "Key in Repository" -msgstr "Depodaki Anahtar" +msgstr "Anahtar Depoda" #: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 msgid "None" @@ -238,7 +238,7 @@ msgstr "Parola; Yalnızca şifreleme kullanırken gerekli." #: plinth/modules/backups/forms.py:128 msgid "Confirm Passphrase" -msgstr "Parolayı Onayla" +msgstr "Parolayı Onaylayın" #: plinth/modules/backups/forms.py:128 msgid "Repeat the passphrase." @@ -273,7 +273,7 @@ msgstr "" #: plinth/modules/backups/forms.py:193 msgid "SSH server password" -msgstr "SSH sunucu parolası" +msgstr "SSH Sunucu Parolası" #: plinth/modules/backups/forms.py:194 msgid "" @@ -391,7 +391,7 @@ msgstr "Bu arşiv kalıcı olarak silinsin mi?" #: plinth/modules/backups/templates/backups_delete.html:19 msgid "Time" -msgstr "Saat" +msgstr "Zaman" #: plinth/modules/backups/templates/backups_delete.html:36 #, python-format @@ -406,6 +406,7 @@ msgstr "%(name)s Arşivini Sil" #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 msgid "Submit" msgstr "Gönder" @@ -703,7 +704,7 @@ msgstr "Bir parola girmemiş isimsiz kullanıcılar için izinler." #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#: plinth/modules/users/forms.py:103 plinth/modules/users/forms.py:227 msgid "Permissions" msgstr "İzinler" @@ -869,12 +870,132 @@ msgstr "IP adresi ve etki alanlarını yenile" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/mumble/views.py:28 plinth/modules/pagekite/forms.py:90 +#: plinth/modules/quassel/views.py:29 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" msgstr "Yapılandırma güncellendi" +#: plinth/modules/calibre/__init__.py:30 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:33 +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 " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:39 +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:57 +#, fuzzy +#| msgid "Administer Syncthing application" +msgid "Administer calibre application" +msgstr "Syncthing uygulamasını yönet" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Name of the repository" +msgid "Name of the new library" +msgstr "Deponun adı" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "A share with this name already exists." +msgid "A library with this name already exists." +msgstr "Bu ada sahip bir paylaşım zaten var." + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Git Repository %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "%(name)s Git Deposunu Sil" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "%(name)s öğesini sil" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Manage Libraries" +msgstr "Depoları Yönet" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create Repository" +msgid "Create Library" +msgstr "Depo Oluştur" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "No repositories available." +msgid "No libraries available." +msgstr "Kullanılabilir depolar yok." + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "%(site)s sitesini sil" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository created." +msgid "Library created." +msgstr "Depo oluşturuldu." + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred while creating the repository." +msgid "An error occurred while creating the library." +msgstr "Depo oluşturulurken bir hata meydana geldi." + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} silindi." + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "{name} silinemedi: {error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1110,11 +1231,13 @@ msgstr "Coturn" msgid "VoIP Helper" msgstr "VoIP Yardımcısı" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "TLS etki alanı" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1343,8 +1466,8 @@ msgid "" "24h), it may be hard for others to find you on the Internet. This will " "prevent others from finding services which are provided by this {box_name}." msgstr "" -"Internet sağlayıcınız IP adresinizi düzenli olarak değiştirirse (yani her 24 " -"saatte bir), başkalarının sizi Internet'te bulması zor olabilir. Bu, " +"Eğer Internet sağlayıcınız IP adresinizi düzenli olarak değiştiriyorsa (yani " +"her 24 saatte bir), başkalarının sizi Internet'te bulması zor olabilir. Bu, " "başkalarının bu {box_name} tarafından sağlanan hizmetleri bulmasını " "engelleyecektir." @@ -1479,7 +1602,7 @@ msgid "Use HTTP basic authentication" msgstr "HTTP temel kimlik doğrulamasını kullan" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Kullanıcı adı" @@ -1999,12 +2122,6 @@ msgstr "%(name)s Git Deposunu Sil" msgid "Delete this repository permanently?" msgstr "Bu depo kalıcı olarak silinsin mi?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "%(name)s öğesini sil" - #: plinth/modules/gitweb/views.py:45 msgid "Repository created." msgstr "Depo oluşturuldu." @@ -2021,16 +2138,6 @@ msgstr "Depo düzenlendi." msgid "Edit repository" msgstr "Depoyu düzenle" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} silindi." - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "{name} silinemedi: {error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Belgeler" @@ -2403,7 +2510,7 @@ msgid "" "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" -"I2P, Interne'te ve gizli hizmetlerde (eep siteleri) isimsiz olarak " +"I2P, Internet'te ve gizli hizmetlerde (eep siteleri) isimsiz olarak " "gezinmenize izin verir. Bunun için tarayıcınızın, tercihen bir Tor " "Tarayıcı'nın bir proksi için yapılandırılması gerekir." @@ -2596,7 +2703,7 @@ msgid "Chat Client" msgstr "Sohbet İstemcisi" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "JavaScript lisans bilgileri" @@ -3363,7 +3470,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:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3371,7 +3478,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:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3381,19 +3488,19 @@ 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "Sesli Sohbet" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 msgid "Set SuperUser Password" msgstr "Süper Kullanıcı Parolası Ayarlayın" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3413,7 +3520,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "Süper Kullanıcı parolası başarılı olarak güncellendi." @@ -3895,7 +4002,7 @@ msgstr "Bağlantıyı düzenle" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "Düzenle" @@ -4172,6 +4279,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "Bu adımı atla" @@ -4700,32 +4808,32 @@ msgstr "" "dışındaki bağlantı noktalarında HTTPS'nin sorunlara neden olduğu " "bilinmektedir." -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Web Sunucusu (HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" "Site http://{0} adresinde kullanılabilir olacaktır" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Web Sunucusu (HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" "Site https://{0} adresinde kullanılabilir " "olacaktır" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "Güvenli Kabuk (SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5711,7 +5819,7 @@ msgstr "Yazılım Kurulum Anlık Görüntüleri" msgid "Enable or disable snapshots before and after software installation" msgstr "" "Yazılım kurulumundan önce ve sonra anlık görüntüleri etkinleştirin veya " -"etkisizleştirin" +"etkisizleştirin." #: plinth/modules/snapshot/forms.py:32 msgid "Hourly Snapshots Limit" @@ -5719,7 +5827,7 @@ msgstr "Saatlik Anlık Görüntü Sınırı" #: plinth/modules/snapshot/forms.py:33 msgid "Keep a maximum of this many hourly snapshots." -msgstr "Bu birçok saatlik anlık görüntüyü en fazlada tutun." +msgstr "En fazla bu kadar tutulacak saatlik anlık görüntü." #: plinth/modules/snapshot/forms.py:36 msgid "Daily Snapshots Limit" @@ -5727,7 +5835,7 @@ msgstr "Günlük Anlık Görüntü Sınırı" #: plinth/modules/snapshot/forms.py:37 msgid "Keep a maximum of this many daily snapshots." -msgstr "Bu birçok günlük anlık görüntüyü en fazlada tutun." +msgstr "En fazla bu kadar tutulacak günlük anlık görüntü." #: plinth/modules/snapshot/forms.py:40 msgid "Weekly Snapshots Limit" @@ -5735,7 +5843,7 @@ msgstr "Haftalık Anlık Görüntü Sınırı" #: plinth/modules/snapshot/forms.py:41 msgid "Keep a maximum of this many weekly snapshots." -msgstr "Bu birçok haftalık anlık görüntüyü en fazlada tutun." +msgstr "En fazla bu kadar tutulacak haftalık anlık görüntü." #: plinth/modules/snapshot/forms.py:44 msgid "Monthly Snapshots Limit" @@ -5743,7 +5851,7 @@ msgstr "Aylık Anlık Görüntü Sınırı" #: plinth/modules/snapshot/forms.py:45 msgid "Keep a maximum of this many monthly snapshots." -msgstr "Bu birçok aylık anlık görüntüyü en fazlada tutun." +msgstr "En fazla bu kadar tutulacak aylık anlık görüntü." #: plinth/modules/snapshot/forms.py:48 msgid "Yearly Snapshots Limit" @@ -5754,8 +5862,8 @@ msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 (keep " "no yearly snapshot)." msgstr "" -"Bu birçok yıllık anlık görüntüyü en fazlada tutun. Varsayılan değer 0'dır (" -"yıllık anlık görüntü tutmayın)." +"En fazla bu kadar tutulacak yıllık anlık görüntü. Varsayılan değer 0'dır " +"(yıllık anlık görüntü tutma)." #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 msgid "Delete the following snapshots permanently?" @@ -6306,27 +6414,27 @@ msgstr "Tor Socks Proksi" msgid "Tor Bridge Relay" msgstr "Tor Köprüsü Aktarımı" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" -msgstr "Tor aktarımı bağlantı noktası mevcut" +msgstr "Tor aktarımı bağlantı noktası kullanılabilir" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "Obfs3 taşıma kayıtlı" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "Obfs4 taşıma kayıtlı" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" -msgstr "Tor aracılığıyla tcp{kind} üzerindeki erişim URL'si {url}" +msgstr "Tor aracılığıyla tcp{kind} üzerinde erişim URL'si {url}" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" -msgstr "Tcp{kind} üzerinde {url} adresinde Tor kullanımını onayla" +msgstr "Tcp{kind} üzerinde {url} adresinde Tor kullanımını onaylama" #: plinth/modules/tor/forms.py:31 msgid "" @@ -6474,7 +6582,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" "9050 nolu TCP bağlantı noktası üzerindeki %(box_name)s cihazınızda bir Tor " -"SOCKS bağlantı noktası mevcuttur." +"SOCKS bağlantı noktası kullanılabilir." #: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" @@ -6554,11 +6662,11 @@ 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:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "Güncelle" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 msgid "FreedomBox Updated" msgstr "FreedomBox Güncellendi" @@ -6726,22 +6834,38 @@ msgstr "Tüm hizmetlere ve sistem ayarlarına erişim" msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP \"{search_item}\" girişini denetleme" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "Kullanıcı adı alınmış veya ayrılmış." -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 msgid "Enter a valid username." msgstr "Geçerli bir kullanıcı adı girin." -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Zorunlu. 150 veya daha az karakter. Sadece İngilizce harfler, rakamlar ve " "@/./-/_ karakterleri." -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Password" +msgid "Authorization Password" +msgstr "Yönetici Parolası" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Add password" +msgid "Invalid password." +msgstr "Parola ekle" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6755,20 +6879,23 @@ msgstr "" "kullanıcılar tüm hizmetlere oturum açabilecektir. Ayrıca SSH aracılığıyla " "sisteme oturum açabilir ve yönetici yetkilerine (sudo) sahip olabilirler." -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "LDAP kullanıcısının oluşturulması başarısız oldu." -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "{group} grubuna yeni kullanıcı ekleme başarısız oldu." -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "Yetkili SSH Anahtarları" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6779,43 +6906,47 @@ msgstr "" "tane olmak üzere birden çok anahtar girebilirsiniz. Boş satırlar ve # ile " "başlayan satırlar yoksayılacaktır." -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "LDAP kullanıcısının yeniden adlandırılması başarısız oldu." -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "Kullanıcıyı gruptan kaldırma başarısız oldu." -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "Kullanıcıyı gruba ekleme başarısız oldu." -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "SSH anahtarları ayarlanamıyor." -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "Kullanıcı durumunu değiştirme başarısız oldu." -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "Sistemdeki tek yönetici silinemez." -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "LDAP kullanıcı parolasının değiştirilmesi başarısız oldu." -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "Admin grubuna yeni kullanıcı ekleme başarısız oldu." -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "Konsol erişimini kısıtlama başarısız oldu." -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "Kullanıcı hesabı oluşturuldu, şu an oturum açtınız" @@ -6828,15 +6959,16 @@ msgstr "%(username)s için Parola Değiştirin" msgid "Save Password" msgstr "Parolayı Kaydet" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "Kullanıcı Oluştur" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "Kullanıcıyı Sil" @@ -6854,7 +6986,7 @@ msgstr "%(username)s kullanıcısını sil" msgid "Administrator Account" msgstr "Yönetici Hesabı" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6864,12 +6996,34 @@ msgstr "" "sonra değiştirilebilir. Bu kullanıcıya yönetici yetkileri verilecektir. " "Diğer kullanıcılar daha sonra eklenebilir." -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "Hesap Oluştur" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "Yönetici Hesabı" + +#: plinth/modules/users/templates/users_firstboot.html:38 +#, fuzzy +#| msgid "Cannot delete the only administrator in the system." +msgid "The following administrator accounts exist in the system." +msgstr "Sistemdeki tek yönetici silinemez." + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "Kullanıcılar" @@ -6883,7 +7037,13 @@ msgstr "%(username)s kullanıcısını sil" msgid "Edit user %(username)s" msgstr "%(username)s kullanıcısını düzenle" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "%(username)s kullanıcısını düzenle" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " @@ -6892,39 +7052,39 @@ msgstr "" "Parolayı değiştirmek için parola " "değiştirme formunu kullanın." -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "Değişiklikleri Kaydet" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "%(username)s kullanıcısı oluşturuldu." -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "%(username)s kullanıcısı güncellendi." -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "Kullanıcıyı Düzenle" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "{user} kullanıcısı silindi." -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "LDAP kullanıcısının silinmesi başarısız oldu." -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "Parolayı Değiştir" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "Parola başarılı olarak değiştirildi." @@ -7370,28 +7530,28 @@ msgstr "Uygulamalar" msgid "System" msgstr "Sistem" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "Parolayı değiştir" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "Yeniden başlat" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "Kapat" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "Oturumu kapat" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "Dil seçin" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "Oturum aç" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 2c4ca9c48..26b1980fa 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2019-01-04 17:06+0000\n" "Last-Translator: prolinux ukraine \n" "Language-Team: Ukrainian calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Enable application" +msgid "Administer calibre application" +msgstr "Влючити застосунок" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Remove Repository" +msgid "Name of the new library" +msgstr "Видалити сховище" + +#: plinth/modules/calibre/forms.py:27 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Archive %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "Видалити архів %(name)s" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Remove Repository" +msgid "Manage Libraries" +msgstr "Видалити сховище" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Remove Repository" +msgid "Create Library" +msgstr "Видалити сховище" + +#: plinth/modules/calibre/templates/calibre.html:36 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository not found" +msgid "Library created." +msgstr "Сховище не знайдено" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1085,11 +1199,13 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 msgid "TLS domain" msgstr "" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1411,7 +1527,7 @@ msgid "Use HTTP basic authentication" msgstr "" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "Ім’я користувача" @@ -1877,12 +1993,6 @@ msgstr "" msgid "Delete this repository permanently?" msgstr "Остаточно видалити цей архів?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "" - #: plinth/modules/gitweb/views.py:45 #, fuzzy #| msgid "Repository not found" @@ -1905,16 +2015,6 @@ msgstr "Сховище не знайдено" msgid "Edit repository" msgstr "Видалити сховище" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" @@ -2383,7 +2483,7 @@ msgid "Chat Client" msgstr "" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -3030,34 +3130,34 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 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:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "SSH server password" msgid "Set SuperUser Password" msgstr "пароль SSH серверу" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3075,7 +3175,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 msgid "SuperUser password successfully updated." msgstr "" @@ -3471,7 +3571,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "" @@ -3740,6 +3840,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4193,29 +4294,29 @@ msgid "" "HTTPS on ports other than 443 is known to cause problems." msgstr "" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -5588,24 +5689,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5794,11 +5895,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5941,22 +6042,36 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Repository not found" msgid "Enter a valid username." msgstr "Сховище не знайдено" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "Показати пароль" + +#: plinth/modules/users/forms.py:105 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5965,63 +6080,66 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." -msgstr "" - -#: plinth/modules/users/forms.py:135 +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 #, python-brace-format -msgid "Failed to add new user to {group} group." +msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:163 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, python-brace-format +msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "" @@ -6034,15 +6152,16 @@ msgstr "" msgid "Save Password" msgstr "" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "" @@ -6060,19 +6179,37 @@ msgstr "" msgid "Administrator Account" msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "" +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "" @@ -6086,46 +6223,51 @@ msgstr "" msgid "Edit user %(username)s" msgstr "" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "" @@ -6568,28 +6710,28 @@ msgstr "" msgid "System" msgstr "" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 msgid "Restart" msgstr "" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 msgid "Shut down" msgstr "" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 msgid "Select language" msgstr "" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "" @@ -6842,9 +6984,6 @@ msgstr "" #~ msgid "Restoring" #~ msgstr "Відновити" -#~ msgid "Enable application" -#~ msgstr "Влючити застосунок" - #, fuzzy #~| msgid "Connection refused" #~ msgid "Custom Section" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index 0ebef07d7..34c9ef318 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: 2020-09-15 16:55-0400\n" +"POT-Creation-Date: 2020-10-05 18:59-0400\n" "PO-Revision-Date: 2020-07-13 22:29+0000\n" "Last-Translator: Tang Zongxun \n" "Language-Team: Chinese (Simplified) calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +#, fuzzy +#| msgid "Install this application?" +msgid "Administer calibre application" +msgstr "安装此应用程序?" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:9 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +#, fuzzy +#| msgid "Create new repository" +msgid "Name of the new library" +msgstr "创建新存储库" + +#: plinth/modules/calibre/forms.py:27 +#, fuzzy +#| msgid "This service already exists" +msgid "A library with this name already exists." +msgstr "此服务已存在" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, fuzzy, python-format +#| msgid "Delete Wiki or Blog %(name)s" +msgid "Delete calibre Library %(name)s" +msgstr "删除 wiki 页面或博客 %(name)s " + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#, python-format +msgid "Delete %(name)s" +msgstr "删除 %(name)s" + +#: plinth/modules/calibre/templates/calibre.html:23 +#, fuzzy +#| msgid "Create User" +msgid "Manage Libraries" +msgstr "创建用户" + +#: plinth/modules/calibre/templates/calibre.html:27 +#: plinth/modules/calibre/templates/calibre.html:29 +#, fuzzy +#| msgid "Create User" +msgid "Create Library" +msgstr "创建用户" + +#: plinth/modules/calibre/templates/calibre.html:36 +#, fuzzy +#| msgid "Tor relay port available" +msgid "No libraries available." +msgstr "Tor 中继端口可用" + +#: plinth/modules/calibre/templates/calibre.html:43 +#, fuzzy, python-format +#| msgid "Delete site %(site)s" +msgid "Delete library %(library)s" +msgstr "删除站点 %(site)s" + +#: plinth/modules/calibre/templates/calibre.html:49 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +#, fuzzy +#| msgid "Repository removed." +msgid "Library created." +msgstr "储存库被移除。" + +#: plinth/modules/calibre/views.py:50 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "An error occurred while creating the library." +msgstr "在配置过程中出错。" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "{name} 已删除。" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "不能删除 {name}:{error}" + #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format msgid "" @@ -1128,13 +1249,15 @@ msgstr "" msgid "VoIP Helper" msgstr "" -#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 +#: plinth/modules/coturn/forms.py:22 plinth/modules/mumble/forms.py:21 +#: plinth/modules/quassel/forms.py:22 #, fuzzy #| msgid "Subdomain" msgid "TLS domain" msgstr "子域" -#: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 +#: plinth/modules/coturn/forms.py:24 plinth/modules/mumble/forms.py:23 +#: plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." @@ -1493,7 +1616,7 @@ msgid "Use HTTP basic authentication" msgstr "使用 HTTP 基本身份验证" #: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 -#: plinth/modules/users/forms.py:68 +#: plinth/modules/users/forms.py:69 msgid "Username" msgstr "用户名" @@ -2011,12 +2134,6 @@ msgstr "删除 wiki 页面或博客 %(name)s " msgid "Delete this repository permanently?" msgstr "永久删除此快照?" -#: plinth/modules/gitweb/templates/gitweb_delete.html:27 -#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 -#, python-format -msgid "Delete %(name)s" -msgstr "删除 %(name)s" - #: plinth/modules/gitweb/views.py:45 #, fuzzy #| msgid "Repository removed." @@ -2041,16 +2158,6 @@ msgstr "储存库被移除。" msgid "Edit repository" msgstr "创建用户" -#: plinth/modules/gitweb/views.py:138 -#, python-brace-format -msgid "{name} deleted." -msgstr "{name} 已删除。" - -#: plinth/modules/gitweb/views.py:142 -#, python-brace-format -msgid "Could not delete {name}: {error}" -msgstr "不能删除 {name}:{error}" - #: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "文档" @@ -2601,7 +2708,7 @@ msgstr "" "(JSXC)" #: plinth/modules/jsxc/templates/jsxc_launch.html:118 -#: plinth/templates/base.html:246 +#: plinth/templates/base.html:248 msgid "JavaScript license information" msgstr "" @@ -3358,13 +3465,13 @@ msgstr "已发布到密钥服务器的密钥。" msgid "Error occurred while publishing key." msgstr "发布密钥时出现错误。" -#: plinth/modules/mumble/__init__.py:24 +#: plinth/modules/mumble/__init__.py:31 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "Mumble 是一个开放源码的低延迟、 加密、 高品质语音聊天软件。" -#: plinth/modules/mumble/__init__.py:26 +#: plinth/modules/mumble/__init__.py:33 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3373,11 +3480,11 @@ msgstr "" "您可以使用常规端口 64738 连接到您的 Mumble 服务器。您可以从桌面和 Android 设" "备连接 Mumble 客户端。" -#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:50 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:51 #, fuzzy #| msgid "" #| "Voice Chat \n" @@ -3387,13 +3494,13 @@ msgstr "" "语音聊天\n" "(Mumble)" -#: plinth/modules/mumble/forms.py:14 +#: plinth/modules/mumble/forms.py:30 #, fuzzy #| msgid "SSH server password" msgid "Set SuperUser Password" msgstr "SSH 服务器密码" -#: plinth/modules/mumble/forms.py:17 +#: plinth/modules/mumble/forms.py:33 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." @@ -3411,7 +3518,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:27 +#: plinth/modules/mumble/views.py:39 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3826,7 +3933,7 @@ msgstr "编辑连接" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 #: plinth/modules/wireguard/templates/wireguard_show_server.html:69 -#: plinth/templates/base.html:160 plinth/templates/base.html:161 +#: plinth/templates/base.html:161 plinth/templates/base.html:162 msgid "Edit" msgstr "編輯" @@ -4099,6 +4206,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" msgstr "" @@ -4615,29 +4723,29 @@ msgstr "" "警告:
您的 PageKite 前端服务器可能不支持您在此处定义的所有协议/端" "口组合。例如,已知443以外的端口上的HTTPS会导致问题。" -#: plinth/modules/pagekite/utils.py:42 +#: plinth/modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" msgstr "Web 服务器(HTTP)" -#: plinth/modules/pagekite/utils.py:44 +#: plinth/modules/pagekite/utils.py:47 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "网站可从 http://{0} 访问" -#: plinth/modules/pagekite/utils.py:56 +#: plinth/modules/pagekite/utils.py:59 msgid "Web Server (HTTPS)" msgstr "Web 服务器(HTTPS)" -#: plinth/modules/pagekite/utils.py:58 +#: plinth/modules/pagekite/utils.py:61 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "网站可从 https://{0} 访问" -#: plinth/modules/pagekite/utils.py:70 +#: plinth/modules/pagekite/utils.py:73 msgid "Secure Shell (SSH)" msgstr "安全 Shell(SSH)" -#: plinth/modules/pagekite/utils.py:72 +#: plinth/modules/pagekite/utils.py:75 msgid "" "See SSH client setup instructions" @@ -6243,24 +6351,24 @@ msgstr "" msgid "Tor Bridge Relay" msgstr "Tor 网桥中继" -#: plinth/modules/tor/__init__.py:110 +#: plinth/modules/tor/__init__.py:112 msgid "Tor relay port available" msgstr "Tor 中继端口可用" -#: plinth/modules/tor/__init__.py:120 +#: plinth/modules/tor/__init__.py:122 msgid "Obfs3 transport registered" msgstr "已注册 Obfs3 传输" -#: plinth/modules/tor/__init__.py:130 +#: plinth/modules/tor/__init__.py:132 msgid "Obfs4 transport registered" msgstr "已注册 Obfs4 传输" -#: plinth/modules/tor/__init__.py:199 +#: plinth/modules/tor/__init__.py:201 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "在 tcp{kind} 上通过 Tor 访问 {url}" -#: plinth/modules/tor/__init__.py:210 +#: plinth/modules/tor/__init__.py:212 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "确认使用 Tor 通过 tcp{kind} 访问 {url}" @@ -6484,11 +6592,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:66 plinth/templates/setup.html:62 msgid "Update" msgstr "更新" -#: plinth/modules/upgrades/__init__.py:102 +#: plinth/modules/upgrades/__init__.py:106 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -6647,22 +6755,38 @@ msgstr "" msgid "Check LDAP entry \"{search_item}\"" msgstr "请检查 LDAP 条目“{search_item}”" -#: plinth/modules/users/forms.py:36 +#: plinth/modules/users/forms.py:37 msgid "Username is taken or is reserved." msgstr "用户名已经占用或保留。" -#: plinth/modules/users/forms.py:63 +#: plinth/modules/users/forms.py:64 #, fuzzy #| msgid "Invalid server name" msgid "Enter a valid username." msgstr "服务器名称无效" -#: plinth/modules/users/forms.py:70 +#: plinth/modules/users/forms.py:71 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:86 +#: plinth/modules/users/forms.py:79 +#, fuzzy +#| msgid "Administrator Account" +msgid "Authorization Password" +msgstr "管理员帐户" + +#: plinth/modules/users/forms.py:80 +msgid "Enter your current password to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:88 +#, fuzzy +#| msgid "Show password" +msgid "Invalid password." +msgstr "显示密码" + +#: plinth/modules/users/forms.py:105 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6681,20 +6805,23 @@ msgstr "" "支持单一登录的服务。

管理员(admin)组中的用户将能够登录所有服务。他" "们还可以通过 SSH 登录到系统并具有管理权限(sudo)。" -#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 -msgid "Creating LDAP user failed." +#: plinth/modules/users/forms.py:150 plinth/modules/users/forms.py:394 +#, fuzzy, python-brace-format +#| msgid "Creating LDAP user failed." +msgid "Creating LDAP user failed: {error}" msgstr "创建 LDAP 用户失败。" -#: plinth/modules/users/forms.py:135 -#, python-brace-format -msgid "Failed to add new user to {group} group." +#: plinth/modules/users/forms.py:163 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to {group} group." +msgid "Failed to add new user to {group} group: {error}" msgstr "未能将新用户添加到 {group}。" -#: plinth/modules/users/forms.py:149 +#: plinth/modules/users/forms.py:177 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:151 +#: plinth/modules/users/forms.py:179 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6703,45 +6830,49 @@ msgstr "" "设置 SSH 公钥将允许此用户安全地登录到系统不使用密码。您可以输入多个密钥,每行" "一个。将忽略空行和以 # 开头的行。" -#: plinth/modules/users/forms.py:235 +#: plinth/modules/users/forms.py:266 msgid "Renaming LDAP user failed." msgstr "重命名 LDAP 用户失败。" -#: plinth/modules/users/forms.py:247 +#: plinth/modules/users/forms.py:279 msgid "Failed to remove user from group." msgstr "无法从组中删除用户。" -#: plinth/modules/users/forms.py:258 +#: plinth/modules/users/forms.py:291 msgid "Failed to add user to group." msgstr "无法将用户添加到组。" -#: plinth/modules/users/forms.py:267 +#: plinth/modules/users/forms.py:304 msgid "Unable to set SSH keys." msgstr "不能设置 SSH 密钥。" -#: plinth/modules/users/forms.py:282 +#: plinth/modules/users/forms.py:322 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "无法将用户添加到组。" -#: plinth/modules/users/forms.py:290 +#: plinth/modules/users/forms.py:330 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:321 +#: plinth/modules/users/forms.py:365 msgid "Changing LDAP user password failed." msgstr "更改 LDAP 用户密码失败。" -#: plinth/modules/users/forms.py:356 -msgid "Failed to add new user to admin group." +#: plinth/modules/users/forms.py:405 +#, fuzzy, python-brace-format +#| msgid "Failed to add new user to admin group." +msgid "Failed to add new user to admin group: {error}" msgstr "未能将新用户添加到管理员组。" -#: plinth/modules/users/forms.py:373 -msgid "Failed to restrict console access." +#: plinth/modules/users/forms.py:424 +#, fuzzy, python-brace-format +#| msgid "Failed to restrict console access." +msgid "Failed to restrict console access: {error}" msgstr "限制命令行访问失败。" -#: plinth/modules/users/forms.py:385 +#: plinth/modules/users/forms.py:437 msgid "User account created, you are now logged in" msgstr "用户帐户已创建,您现在可以登录" @@ -6754,15 +6885,16 @@ msgstr "为%(username)s更改密码" msgid "Save Password" msgstr "保存密码" -#: plinth/modules/users/templates/users_create.html:17 +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 #: plinth/modules/users/templates/users_list.html:27 #: plinth/modules/users/templates/users_list.html:29 -#: plinth/modules/users/views.py:42 +#: plinth/modules/users/views.py:44 msgid "Create User" msgstr "创建用户" #: plinth/modules/users/templates/users_delete.html:11 -#: plinth/modules/users/views.py:120 +#: plinth/modules/users/views.py:122 msgid "Delete User" msgstr "删除用户" @@ -6780,7 +6912,7 @@ msgstr "删除 %(username)s" msgid "Administrator Account" msgstr "管理员帐户" -#: plinth/modules/users/templates/users_firstboot.html:14 +#: plinth/modules/users/templates/users_firstboot.html:15 msgid "" "Choose a username and password to access this web interface. The password " "can be changed later. This user will be granted administrative privileges. " @@ -6789,12 +6921,32 @@ msgstr "" "选择一个用户名和密码才能访问此 web 界面。以后可以更改密码。此用户将被授予管理" "权限。其他用户可以在以后添加。" -#: plinth/modules/users/templates/users_firstboot.html:27 +#: plinth/modules/users/templates/users_firstboot.html:28 msgid "Create Account" msgstr "创建帐户" +#: plinth/modules/users/templates/users_firstboot.html:32 +#, fuzzy +#| msgid "Administrator Account" +msgid "An administrator account already exists." +msgstr "管理员帐户" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + #: plinth/modules/users/templates/users_list.html:23 -#: plinth/modules/users/views.py:59 +#: plinth/modules/users/views.py:61 msgid "Users" msgstr "用户" @@ -6808,46 +6960,52 @@ msgstr "删除用户 %(username)s" msgid "Edit user %(username)s" msgstr "编辑用户 %(username)s" -#: plinth/modules/users/templates/users_update.html:15 +#: plinth/modules/users/templates/users_update.html:11 +#, fuzzy, python-format +#| msgid "Edit user %(username)s" +msgid "Edit User %(username)s" +msgstr "编辑用户 %(username)s" + +#: plinth/modules/users/templates/users_update.html:19 #, python-format msgid "" "Use the change password form to " "change the password." msgstr "使用 更改密码窗口 更改密码。" -#: plinth/modules/users/templates/users_update.html:27 +#: plinth/modules/users/templates/users_update.html:31 #: plinth/templates/language-selection.html:17 msgid "Save Changes" msgstr "保存更改" -#: plinth/modules/users/views.py:40 +#: plinth/modules/users/views.py:42 #, python-format msgid "User %(username)s created." msgstr "用户 %(username)s 已创建。" -#: plinth/modules/users/views.py:74 +#: plinth/modules/users/views.py:76 #, python-format msgid "User %(username)s updated." msgstr "用户 %(username)s 已更新。" -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:77 msgid "Edit User" msgstr "编辑用户" -#: plinth/modules/users/views.py:130 +#: plinth/modules/users/views.py:132 #, python-brace-format msgid "User {user} deleted." msgstr "用户 {user} 已删除。" -#: plinth/modules/users/views.py:137 +#: plinth/modules/users/views.py:139 msgid "Deleting LDAP user failed." msgstr "删除 LDAP 用户失败。" -#: plinth/modules/users/views.py:146 +#: plinth/modules/users/views.py:148 msgid "Change Password" msgstr "更改密码" -#: plinth/modules/users/views.py:147 +#: plinth/modules/users/views.py:149 msgid "Password changed successfully." msgstr "已成功更改密码。" @@ -7351,34 +7509,34 @@ msgstr "应用程序" msgid "System" msgstr "系统" -#: plinth/templates/base.html:166 plinth/templates/base.html:167 +#: plinth/templates/base.html:168 plinth/templates/base.html:169 msgid "Change password" msgstr "更改密码" -#: plinth/templates/base.html:174 plinth/templates/base.html:175 +#: plinth/templates/base.html:176 plinth/templates/base.html:177 #, fuzzy #| msgid "Restart Now" msgid "Restart" msgstr "现在重新启动" -#: plinth/templates/base.html:180 plinth/templates/base.html:181 +#: plinth/templates/base.html:182 plinth/templates/base.html:183 #, fuzzy #| msgid "Shut Down Now" msgid "Shut down" msgstr "现在关闭" -#: plinth/templates/base.html:188 plinth/templates/base.html:189 -#: plinth/templates/base.html:213 plinth/templates/base.html:215 +#: plinth/templates/base.html:190 plinth/templates/base.html:191 +#: plinth/templates/base.html:215 plinth/templates/base.html:217 msgid "Log out" msgstr "登出" -#: plinth/templates/base.html:197 plinth/templates/base.html:200 +#: plinth/templates/base.html:199 plinth/templates/base.html:202 #, fuzzy #| msgid "Language" msgid "Select language" msgstr "语言" -#: plinth/templates/base.html:205 plinth/templates/base.html:207 +#: plinth/templates/base.html:207 plinth/templates/base.html:209 msgid "Log in" msgstr "登录" diff --git a/plinth/module_loader.py b/plinth/module_loader.py index a8c0621db..420c4a0e7 100644 --- a/plinth/module_loader.py +++ b/plinth/module_loader.py @@ -66,12 +66,13 @@ def load_modules(): except KeyError: logger.error('Unsatified dependency for module - %s', module_name) - logger.info('Module load order - %s', ordered_modules) + logger.info('Initializing apps - %s', ', '.join(ordered_modules)) for module_name in ordered_modules: _initialize_module(module_name, modules[module_name]) loaded_modules[module_name] = modules[module_name] + logger.debug('App initialization completed.') post_module_loading.send_robust(sender="module_loader") @@ -134,8 +135,6 @@ def _initialize_module(module_name, module): if module.setup_helper.get_state( ) != 'needs-setup' and module.app.is_enabled(): module.app.set_enabled(True) - - logger.debug("Initialized %s", module.__name__) except Exception as exception: logger.exception('Exception while running init for %s: %s', module, exception) diff --git a/plinth/modules/bepasty/__init__.py b/plinth/modules/bepasty/__init__.py index 597d87513..0fa082e8c 100644 --- a/plinth/modules/bepasty/__init__.py +++ b/plinth/modules/bepasty/__init__.py @@ -15,7 +15,7 @@ from plinth.modules.firewall.components import Firewall from .manifest import backup, clients # noqa, pylint: disable=unused-import -version = 1 +version = 2 managed_packages = ['bepasty', 'uwsgi', 'uwsgi-plugin-python3'] @@ -98,6 +98,9 @@ def setup(helper, old_version=None): helper.call('post', actions.superuser_run, 'bepasty', ['setup', '--domain-name', 'freedombox.local']) helper.call('post', app.enable) + if old_version == 1 and not get_configuration().get('DEFAULT_PERMISSIONS'): + # Upgrade to a better default only if user hasn't changed the value. + set_default_permissions('read') def get_configuration(): diff --git a/plinth/modules/calibre/__init__.py b/plinth/modules/calibre/__init__.py new file mode 100644 index 000000000..5608b0cdc --- /dev/null +++ b/plinth/modules/calibre/__init__.py @@ -0,0 +1,124 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +FreedomBox app for calibre e-book library. +""" + +import json +import re + +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions +from plinth import app as app_module +from plinth import cfg, frontpage, menu +from plinth.daemon import Daemon +from plinth.modules.apache.components import Webserver +from plinth.modules.firewall.components import Firewall +from plinth.modules.users.components import UsersAndGroups +from plinth.utils import format_lazy + +from .manifest import backup, clients # noqa, pylint: disable=unused-import + +version = 1 + +managed_services = ['calibre-server-freedombox'] + +managed_packages = ['calibre'] + +_description = [ + format_lazy( + _('calibre server provides online access to your e-book collection. ' + 'You can store your e-books on your {box_name}, read them online or ' + 'from any of your devices.'), box_name=_(cfg.box_name)), + _('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 of formats to make e-books ready for reading on any ' + 'device. It also provides an online web reader. It remembers your ' + 'last read location, bookmarks, and highlighted text. Content ' + 'distribution using OPDS is currently not supported.'), + _('Only users belonging to calibre group will be able to access ' + 'the app. All users with access can use all the libraries.') +] + +app = None + +LIBRARY_NAME_PATTERN = r'[a-zA-Z0-9 _-]+' + + +class CalibreApp(app_module.App): + """FreedomBox app for calibre.""" + + app_id = 'calibre' + + def __init__(self): + """Create components for the app.""" + super().__init__() + + groups = {'calibre': _('Administer calibre application')} + + info = app_module.Info(app_id=self.app_id, version=version, + name=_('calibre'), icon_filename='calibre', + short_description=_('E-book Library'), + description=_description, manual_page='calibre', + clients=clients) + self.add(info) + + menu_item = menu.Menu('menu-calibre', info.name, + info.short_description, info.icon_filename, + 'calibre:index', parent_url_name='apps') + self.add(menu_item) + + shortcut = frontpage.Shortcut('shortcut-calibre', info.name, + short_description=info.short_description, + icon=info.icon_filename, url='/calibre', + clients=info.clients, + login_required=True, + allowed_groups=list(groups)) + self.add(shortcut) + + firewall = Firewall('firewall-calibre', info.name, + ports=['http', 'https'], is_external=True) + self.add(firewall) + + webserver = Webserver('webserver-calibre', 'calibre-freedombox', + urls=['https://{host}/calibre']) + self.add(webserver) + + daemon = Daemon('daemon-calibre', managed_services[0], + listen_ports=[(8844, 'tcp4')]) + self.add(daemon) + + users_and_groups = UsersAndGroups('users-and-groups-calibre', + reserved_usernames=['calibre'], + groups=groups) + self.add(users_and_groups) + + +def setup(helper, old_version=None): + """Install and configure the module.""" + helper.install(managed_packages) + helper.call('post', app.enable) + + +def validate_library_name(library_name): + """Raise exception if library name does not fit the accepted pattern.""" + if not re.fullmatch(r'[A-Za-z0-9_.-]+', library_name): + raise Exception('Invalid library name') + + +def list_libraries(): + """Return a list of libraries.""" + output = actions.superuser_run('calibre', ['list-libraries']) + return json.loads(output)['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]]) + + +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]]) diff --git a/plinth/modules/calibre/data/etc/apache2/conf-available/calibre-freedombox.conf b/plinth/modules/calibre/data/etc/apache2/conf-available/calibre-freedombox.conf new file mode 100644 index 000000000..e423f2134 --- /dev/null +++ b/plinth/modules/calibre/data/etc/apache2/conf-available/calibre-freedombox.conf @@ -0,0 +1,10 @@ +## +## On all sites, provide calibre web interface on a path: /calibre +## + + ProxyPass http://localhost:8844/calibre + Include includes/freedombox-single-sign-on.conf + + TKTAuthToken "admin" "calibre" + + diff --git a/plinth/modules/calibre/data/etc/plinth/modules-enabled/calibre b/plinth/modules/calibre/data/etc/plinth/modules-enabled/calibre new file mode 100644 index 000000000..bef75a6fd --- /dev/null +++ b/plinth/modules/calibre/data/etc/plinth/modules-enabled/calibre @@ -0,0 +1 @@ +plinth.modules.calibre diff --git a/plinth/modules/calibre/data/lib/systemd/system/calibre-server-freedombox.service b/plinth/modules/calibre/data/lib/systemd/system/calibre-server-freedombox.service new file mode 100644 index 000000000..8133549ef --- /dev/null +++ b/plinth/modules/calibre/data/lib/systemd/system/calibre-server-freedombox.service @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later + +[Unit] +Description=calibre Content Server +Documentation=man:calibre-server(1) +After=network.target + +[Service] +CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_SETUID CAP_SETGID CAP_SETPCAP CAP_CHOWN CAP_FSETID CAP_SETFCAP CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_IPC_OWNER CAP_NET_ADMIN CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_AUDIT_WRITE CAP_KILL CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_LINUX_IMMUTABLE CAP_IPC_LOCK CAP_SYS_CHROOT CAP_BLOCK_SUSPEND CAP_LEASE CAP_SYS_PACCT CAP_SYS_TTY_CONFIG CAP_SYS_BOOT CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_SYS_NICE CAP_SYS_RESOURCE +DevicePolicy=closed +Environment=HOME="/var/lib/calibre-server-freedombox" +Environment=DEFAULT_LIBRARY="/var/lib/calibre-server-freedombox/libraries/Library" +Environment=ARGS="--listen-on 127.0.0.1 --url-prefix /calibre --port 8844 --enable-local-write --disable-auth" +ExecStartPre=sh -e -c "files=$$(ls ${HOME}/libraries/*/metadata.db 2>/dev/null || true); [ \"x$${files}\" = \"x\" ] && (mkdir -p \"${DEFAULT_LIBRARY}\" && calibredb --with-library=\"${DEFAULT_LIBRARY}\" list_categories > /dev/null) || true" +ExecStart=sh -e -c "files=${HOME}/libraries/*/metadata.db; libraries=$$(dirname $${files}) ; exec /usr/bin/calibre-server $ARGS $${libraries}" +Restart=on-failure +ExecReload=/bin/kill -HUP $MAINPID +DynamicUser=yes +LockPersonality=yes +NoNewPrivileges=yes +PrivateDevices=yes +PrivateMounts=yes +PrivateTmp=yes +PrivateUsers=yes +ProtectControlGroups=yes +ProtectClock=yes +ProtectHome=yes +ProtectHostname=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=strict +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK +RestrictNamespaces=yes +RestrictRealtime=yes +RestrictSUIDSGID=yes +StateDirectory=calibre-server-freedombox +SystemCallArchitectures=native +SystemCallFilter=@system-service +SystemCallFilter=~@resources +SystemCallFilter=~@privileged +SystemCallErrorNumber=EPERM +Type=simple + +[Install] +WantedBy=multi-user.target diff --git a/plinth/modules/calibre/forms.py b/plinth/modules/calibre/forms.py new file mode 100644 index 000000000..61fe67d61 --- /dev/null +++ b/plinth/modules/calibre/forms.py @@ -0,0 +1,29 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Django form for configuring calibre. +""" + +from django import forms +from django.core import validators +from django.core.exceptions import ValidationError +from django.utils.translation import ugettext_lazy as _ + +from plinth.modules import calibre + + +class CreateLibraryForm(forms.Form): + """Form to create an empty library.""" + + name = forms.CharField( + label=_('Name of the new library'), strip=True, + validators=[validators.RegexValidator(r'^[A-Za-z0-9_.-]+$')]) + + def clean_name(self): + """Check if the library name is valid.""" + name = self.cleaned_data['name'] + + if name in calibre.list_libraries(): + raise ValidationError( + _('A library with this name already exists.')) + + return name diff --git a/plinth/modules/calibre/manifest.py b/plinth/modules/calibre/manifest.py new file mode 100644 index 000000000..2b6ce7317 --- /dev/null +++ b/plinth/modules/calibre/manifest.py @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later + +from django.utils.translation import ugettext_lazy as _ + +from plinth.clients import validate +from plinth.modules.backups.api import validate as validate_backup + +clients = validate([{ + 'name': _('calibre'), + 'platforms': [{ + 'type': 'web', + 'url': '/calibre/' + }] +}]) + +backup = validate_backup({ + 'data': { + 'directories': ['/var/lib/private/calibre-server-freedombox/'] + }, + 'services': ['calibre-server-freedombox'] +}) diff --git a/plinth/modules/calibre/templates/calibre-delete-library.html b/plinth/modules/calibre/templates/calibre-delete-library.html new file mode 100644 index 000000000..93946e251 --- /dev/null +++ b/plinth/modules/calibre/templates/calibre-delete-library.html @@ -0,0 +1,30 @@ +{% extends "base.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} + +{% load i18n %} + +{% block content %} + +

+ {% blocktrans trimmed %} + Delete calibre Library {{ name }} + {% endblocktrans %} +

+ +

+ {% blocktrans trimmed %} + Delete this library permanently? All stored e-books and saved data will be + lost. + {% endblocktrans %} +

+ +
+ {% csrf_token %} + + +
+ +{% endblock %} diff --git a/plinth/modules/calibre/templates/calibre.html b/plinth/modules/calibre/templates/calibre.html new file mode 100644 index 000000000..9e4e854a8 --- /dev/null +++ b/plinth/modules/calibre/templates/calibre.html @@ -0,0 +1,59 @@ +{% extends "app.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} + +{% load i18n %} + +{% block page_head %} + +{% endblock %} + +{% block configuration %} + {{ block.super }} + +

{% trans "Manage Libraries" %}

+ + + +
+
+ {% if not libraries %} +

{% trans 'No libraries available.' %}

+ {% else %} +
+ {% for library in libraries %} + + {% endfor %} +
+ {% endif %} +
+
+ +{% endblock %} diff --git a/plinth/modules/calibre/tests/__init__.py b/plinth/modules/calibre/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/plinth/modules/calibre/tests/data/sample.txt b/plinth/modules/calibre/tests/data/sample.txt new file mode 100644 index 000000000..73709ba68 --- /dev/null +++ b/plinth/modules/calibre/tests/data/sample.txt @@ -0,0 +1 @@ +Testing diff --git a/plinth/modules/calibre/tests/test_actions.py b/plinth/modules/calibre/tests/test_actions.py new file mode 100644 index 000000000..ff61ece9c --- /dev/null +++ b/plinth/modules/calibre/tests/test_actions.py @@ -0,0 +1,84 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Test module for calibre actions. +""" + +import imp +import json +import pathlib +from unittest.mock import call, patch + +import pytest + + +def _action_file(): + """Return the path to the 'calibre' actions file.""" + current_directory = pathlib.Path(__file__).parent + return str(current_directory / '..' / '..' / '..' / '..' / 'actions' / + 'calibre') + + +actions = imp.load_source('calibre', _action_file()) + + +@pytest.fixture(name='call_action') +def fixture_call_action(tmpdir, capsys): + """Run actions with custom root path.""" + + def _call_action(args, **kwargs): + actions.LIBRARIES_PATH = pathlib.Path(str(tmpdir)) + with patch('argparse._sys.argv', ['calibre'] + args): + actions.main() + captured = capsys.readouterr() + return captured.out + + return _call_action + + +@pytest.fixture(autouse=True) +def fixture_patch(): + """Patch some underlying methods.""" + + def side_effect(*args, **_kwargs): + if args[0][0] != 'calibredb': + return + + path = pathlib.Path(args[0][2]) / 'metadata.db' + path.touch() + + with patch('subprocess.call') as subprocess_call, \ + patch('shutil.chown'): + subprocess_call.side_effect = side_effect + yield + + +def test_list_libraries(call_action): + """Test listing libraries.""" + assert json.loads(call_action(['list-libraries'])) == {'libraries': []} + call_action(['create-library', 'TestLibrary']) + expected_output = {'libraries': ['TestLibrary']} + assert json.loads(call_action(['list-libraries'])) == expected_output + + +@patch('shutil.chown') +def test_create_library(chown, call_action): + """Test creating a library.""" + call_action(['create-library', 'TestLibrary']) + library = actions.LIBRARIES_PATH / 'TestLibrary' + assert (library / 'metadata.db').exists() + assert library.stat().st_mode == 0o40755 + expected_output = {'libraries': ['TestLibrary']} + assert json.loads(call_action(['list-libraries'])) == expected_output + + chown.assert_has_calls([call(library.parent.parent, 'root', 'root')]) + + +def test_delete_library(call_action): + """Test deleting a library.""" + call_action(['create-library', 'TestLibrary']) + + call_action(['delete-library', 'TestLibrary']) + assert json.loads(call_action(['list-libraries'])) == {'libraries': []} + + with pytest.raises(FileNotFoundError): + call_action(['delete-library', 'TestLibrary']) diff --git a/plinth/modules/calibre/tests/test_functional.py b/plinth/modules/calibre/tests/test_functional.py new file mode 100644 index 000000000..0b84b53e7 --- /dev/null +++ b/plinth/modules/calibre/tests/test_functional.py @@ -0,0 +1,180 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Functional, browser based tests for calibre app. +""" + +import pathlib +import time + +import pytest + +from plinth.tests import functional + +pytestmark = [pytest.mark.apps, pytest.mark.sso, pytest.mark.calibre] + + +@pytest.fixture(scope='module', autouse=True) +def fixture_background(session_browser): + """Login and install the app.""" + functional.login(session_browser) + functional.install(session_browser, 'calibre') + yield + functional.app_disable(session_browser, 'calibre') + + +def test_enable_disable(session_browser): + """Test enabling the app.""" + functional.app_disable(session_browser, 'calibre') + + functional.app_enable(session_browser, 'calibre') + assert functional.service_is_running(session_browser, 'calibre') + assert functional.is_available(session_browser, 'calibre') + + functional.app_disable(session_browser, 'calibre') + assert not functional.service_is_running(session_browser, 'calibre') + assert not functional.is_available(session_browser, 'calibre') + + +def test_add_delete_library(session_browser): + """Test adding/deleting a new library.""" + functional.app_enable(session_browser, 'calibre') + _delete_library(session_browser, 'FunctionalTest', True) + + _add_library(session_browser, 'FunctionalTest') + assert _is_library_available(session_browser, 'FunctionalTest') + + _delete_library(session_browser, 'FunctionalTest') + assert not _is_library_available(session_browser, 'FunctionalTest') + + +def test_add_delete_book(session_browser): + """Test adding/delete book in the library.""" + functional.app_enable(session_browser, 'calibre') + _add_library(session_browser, 'FunctionalTest') + _delete_book(session_browser, 'FunctionalTest', 'sample.txt', True) + + _add_book(session_browser, 'FunctionalTest', 'sample.txt') + assert _is_book_available(session_browser, 'FunctionalTest', 'sample.txt') + + _delete_book(session_browser, 'FunctionalTest', 'sample.txt') + assert not _is_book_available(session_browser, 'FunctionalTest', + 'sample.txt') + + +@pytest.mark.backups +def test_backup(session_browser): + """Test backing up and restoring.""" + functional.app_enable(session_browser, 'calibre') + _add_library(session_browser, 'FunctionalTest') + functional.backup_create(session_browser, 'calibre', 'test_calibre') + _delete_library(session_browser, 'FunctionalTest') + functional.backup_restore(session_browser, 'calibre', 'test_calibre') + assert _is_library_available(session_browser, 'FunctionalTest') + + +def _add_library(browser, name): + """Add a new library.""" + if _is_library_available(browser, name): + return + + browser.find_link_by_href( + '/plinth/apps/calibre/library/create/').first.click() + browser.find_by_id('id_calibre-name').fill(name) + functional.submit(browser) + + +def _delete_library(browser, name, ignore_missing=False): + """Delete a library.""" + functional.nav_to_module(browser, 'calibre') + link = browser.find_link_by_href( + f'/plinth/apps/calibre/library/{name}/delete/') + if not link: + if ignore_missing: + return + + raise ValueError('Library not found') + + link.first.click() + functional.submit(browser) + + +def _is_library_available(browser, name): + """Return whether a library is present in the list of libraries.""" + functional.nav_to_module(browser, 'calibre') + link = browser.find_link_by_href( + f'/plinth/apps/calibre/library/{name}/delete/') + return bool(link) + + +def _visit_library(browser, name): + """Open the page for the library.""" + functional.visit(browser, '/calibre/') + + # Calibre interface will be available a short time after restarting the + # service. + def _service_available(): + unavailable_xpath = '//h1[contains(text(), "Service Unavailable")]' + available = not browser.find_by_xpath(unavailable_xpath) + if not available: + time.sleep(0.5) + functional.visit(browser, '/calibre/') + + return available + + functional.eventually(_service_available) + + functional.eventually(browser.find_by_css, + args=[f'.calibre-push-button[data-lid="{name}"]']) + link = browser.find_by_css(f'.calibre-push-button[data-lid="{name}"]') + if not link: + raise ValueError('Library not found') + + link.first.click() + functional.eventually(browser.find_by_css, ['.book-list-cover-grid']) + + +def _add_book(browser, library_name, book_name): + """Add a book to the library through Calibre interface.""" + _visit_library(browser, library_name) + add_button = browser.find_by_css('a[data-button-icon="plus"]') + add_button.first.click() + + functional.eventually(browser.find_by_xpath, + ['//span[contains(text(), "Add books")]']) + browser.execute_script( + '''document.querySelector('input[type="file"]').setAttribute( + 'name', 'test-book-upload');''') + + file_path = pathlib.Path(__file__).parent / f'data/{book_name}' + browser.attach_file('test-book-upload', [str(file_path)]) + functional.eventually(browser.find_by_xpath, + ['//span[contains(text(), "Added successfully")]']) + + +def _delete_book(browser, library_name, book_name, ignore_missing=False): + """Delete a book from the library through Calibre interface.""" + _visit_library(browser, library_name) + book_name = book_name.partition('.')[0] + book = browser.find_by_xpath(f'//a[contains(@title, "{book_name}")]') + if not book: + if ignore_missing: + return + + raise Exception('Book not found') + + book.first.click() + delete_button = browser.find_by_css('a[data-button-icon="trash"]') + delete_button.first.click() + + dialog = browser.find_by_id('modal-container').first + functional.eventually(lambda: dialog.visible) + ok_button = browser.find_by_xpath('//span[contains(text(), "OK")]') + ok_button.first.click() + + +def _is_book_available(browser, library_name, book_name): + """Return whether a book is present in Calibre interface.""" + _visit_library(browser, library_name) + book_name = book_name.partition('.')[0] + book = browser.find_by_xpath(f'//a[contains(@title, "{book_name}")]') + return bool(book) diff --git a/plinth/modules/calibre/tests/test_views.py b/plinth/modules/calibre/tests/test_views.py new file mode 100644 index 000000000..24ede010d --- /dev/null +++ b/plinth/modules/calibre/tests/test_views.py @@ -0,0 +1,146 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Tests for calibre views. +""" + +from unittest.mock import call, patch + +import pytest +from django import urls +from django.contrib.messages.storage.fallback import FallbackStorage +from django.http.response import Http404 + +from plinth import actions, module_loader +from plinth.modules.calibre import views + +# For all tests, use plinth.urls instead of urls configured for testing +pytestmark = pytest.mark.urls('plinth.urls') + + +@pytest.fixture(autouse=True, scope='module') +def fixture_calibre_urls(): + """Make sure calibre app's URLs are part of plinth.urls.""" + with patch('plinth.module_loader._modules_to_load', new=[]) as modules, \ + patch('plinth.urls.urlpatterns', new=[]): + modules.append('plinth.modules.calibre') + module_loader.include_urls() + yield + + +@pytest.fixture(autouse=True) +def calibre_patch(): + """Patch calibre methods.""" + with patch('plinth.modules.calibre.list_libraries') as list_libraries: + list_libraries.return_value = ['TestExistingLibrary'] + + yield + + +def make_request(request, view, **kwargs): + """Make request with a message storage.""" + setattr(request, 'session', 'session') + messages = FallbackStorage(request) + setattr(request, '_messages', messages) + response = view(request, **kwargs) + + return response, messages + + +@patch('plinth.modules.calibre.create_library') +def test_create_library(create_library, rf): + """Test that create library view works.""" + form_data = {'calibre-name': 'TestLibrary'} + request = rf.post(urls.reverse('calibre:create-library'), data=form_data) + view = views.CreateLibraryView.as_view() + response, messages = make_request(request, view) + + assert response.status_code == 302 + assert response.url == urls.reverse('calibre:index') + assert list(messages)[0].message == 'Library created.' + create_library.assert_has_calls([call('TestLibrary')]) + + +@patch('plinth.modules.calibre.create_library') +def test_create_library_failed(create_library, rf): + """Test that create library fails as expected.""" + create_library.side_effect = actions.ActionError('calibre', 'TestOutput', + 'TestError') + form_data = {'calibre-name': 'TestLibrary'} + request = rf.post(urls.reverse('calibre:create-library'), data=form_data) + view = views.CreateLibraryView.as_view() + response, messages = make_request(request, view) + + assert response.status_code == 302 + assert response.url == urls.reverse('calibre:index') + assert list(messages)[0].message == \ + 'An error occurred while creating the library. TestError' + + +def test_create_library_existing_library(rf): + """Test that create library errors out for an existing library name.""" + form_data = {'calibre-name': 'TestExistingLibrary'} + request = rf.post(urls.reverse('calibre:create-library'), data=form_data) + view = views.CreateLibraryView.as_view() + response, _ = make_request(request, view) + + assert response.context_data['form'].errors['name'][ + 0] == 'A library with this name already exists.' + assert response.status_code == 200 + + +def test_create_library_invalid_name(rf): + """Test that create library errors out for invalid name.""" + form_data = {'calibre-name': 'Invalid Library'} + request = rf.post(urls.reverse('calibre:create-library'), data=form_data) + view = views.CreateLibraryView.as_view() + response, _ = make_request(request, view) + + assert response.context_data['form'].errors['name'][ + 0] == 'Enter a valid value.' + assert response.status_code == 200 + + +@patch('plinth.modules.calibre.app') +def test_delete_library_confirmation_view(_app, rf): + """Test that deleting library confirmation shows correct name.""" + response, _ = make_request(rf.get(''), views.delete_library, + name='TestExistingLibrary') + assert response.status_code == 200 + assert response.context_data['name'] == 'TestExistingLibrary' + + +@patch('plinth.modules.calibre.delete_library') +@patch('plinth.modules.calibre.app') +def test_delete_library(_app, delete_library, rf): + """Test that deleting a library works.""" + response, messages = make_request(rf.post(''), views.delete_library, + name='TestExistingLibrary') + assert response.status_code == 302 + assert response.url == urls.reverse('calibre:index') + assert list(messages)[0].message == 'TestExistingLibrary deleted.' + delete_library.assert_has_calls([call('TestExistingLibrary')]) + + +@patch('plinth.modules.calibre.delete_library') +def test_delete_library_error(delete_library, rf): + """Test that deleting a library shows error when operation fails.""" + delete_library.side_effect = actions.ActionError('calibre', 'TestInput', + 'TestError') + response, messages = make_request(rf.post(''), views.delete_library, + name='TestExistingLibrary') + assert response.status_code == 302 + assert response.url == urls.reverse('calibre:index') + assert list(messages)[0].message == \ + 'Could not delete TestExistingLibrary: '\ + "('calibre', 'TestInput', 'TestError')" + + +def test_delete_library_non_existing(rf): + """Test that deleting a library shows error when operation fails.""" + with pytest.raises(Http404): + make_request(rf.post(''), views.delete_library, + name='TestNonExistingLibrary') + + with pytest.raises(Http404): + make_request(rf.get(''), views.delete_library, + name='TestNonExistingLibrary') diff --git a/plinth/modules/calibre/urls.py b/plinth/modules/calibre/urls.py new file mode 100644 index 000000000..a4cb694e3 --- /dev/null +++ b/plinth/modules/calibre/urls.py @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +URLs for the calibre module. +""" + +from django.conf.urls import url + +from . import views + +urlpatterns = [ + url(r'^apps/calibre/$', views.CalibreAppView.as_view(), name='index'), + url(r'^apps/calibre/library/create/$', views.CreateLibraryView.as_view(), + name='create-library'), + url(r'^apps/calibre/library/(?P[a-zA-Z0-9_.-]+)/delete/$', + views.delete_library, name='delete-library'), +] diff --git a/plinth/modules/calibre/views.py b/plinth/modules/calibre/views.py new file mode 100644 index 000000000..f969de9d5 --- /dev/null +++ b/plinth/modules/calibre/views.py @@ -0,0 +1,75 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Views for the calibre module. +""" + +from django.contrib import messages +from django.contrib.messages.views import SuccessMessageMixin +from django.http import Http404 +from django.shortcuts import redirect +from django.template.response import TemplateResponse +from django.urls import reverse_lazy +from django.utils.translation import ugettext as _ +from django.views.generic.edit import FormView + +from plinth import actions, views +from plinth.modules import calibre + +from . import forms + + +class CalibreAppView(views.AppView): + """Serve configuration form.""" + app_id = 'calibre' + template_name = 'calibre.html' + + def get_context_data(self, **kwargs): + """Return additional context for rendering the template.""" + context = super().get_context_data(**kwargs) + context['libraries'] = calibre.list_libraries() + return context + + +class CreateLibraryView(SuccessMessageMixin, FormView): + """View to create an empty library.""" + form_class = forms.CreateLibraryForm + prefix = 'calibre' + template_name = 'form.html' + success_url = reverse_lazy('calibre:index') + success_message = _('Library created.') + + def form_valid(self, form): + """Create the library on valid form submission.""" + try: + calibre.create_library(form.cleaned_data['name']) + except actions.ActionError as error: + self.success_message = '' + error_text = error.args[2].split('\n')[0] + messages.error( + self.request, "{0} {1}".format( + _('An error occurred while creating the library.'), + error_text)) + + return super().form_valid(form) + + +def delete_library(request, name): + """View to delete a library.""" + if name not in calibre.list_libraries(): + raise Http404 + + if request.method == 'POST': + try: + calibre.delete_library(name) + messages.success(request, _('{name} deleted.').format(name=name)) + except actions.ActionError as error: + messages.error( + request, + _('Could not delete {name}: {error}').format( + name=name, error=error)) + return redirect(reverse_lazy('calibre:index')) + + return TemplateResponse(request, 'calibre-delete-library.html', { + 'title': calibre.app.info.name, + 'name': name + }) diff --git a/plinth/modules/coturn/__init__.py b/plinth/modules/coturn/__init__.py index d5309d8f6..5e74ee7e0 100644 --- a/plinth/modules/coturn/__init__.py +++ b/plinth/modules/coturn/__init__.py @@ -115,6 +115,10 @@ def get_domain(): def get_domains(): """Return a list with the configured domains.""" + # If not installed, return empty. But work while installing too. + if not pathlib.Path('/etc/coturn/freedombox.conf').exists(): + return [] + domain = get_domain() if domain: return [domain] diff --git a/plinth/modules/dynamicdns/__init__.py b/plinth/modules/dynamicdns/__init__.py index bcf20774f..dc87de12c 100644 --- a/plinth/modules/dynamicdns/__init__.py +++ b/plinth/modules/dynamicdns/__init__.py @@ -9,9 +9,9 @@ from plinth import actions from plinth import app as app_module from plinth import cfg, menu from plinth.modules.names.components import DomainType +from plinth.modules.users.components import UsersAndGroups from plinth.signals import domain_added from plinth.utils import format_lazy -from plinth.modules.users.components import UsersAndGroups from .manifest import backup # noqa, pylint: disable=unused-import @@ -76,7 +76,6 @@ class DynamicDNSApp(app_module.App): domain_type='domain-type-dynamic', name=current_status['dynamicdns_domain'], services='__all__') - self.set_enabled(True) def is_enabled(self): """Return whether all the leader components are enabled. diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index 2f71b3766..61fabdaba 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -3,23 +3,30 @@ FreedomBox app to configure Mumble server. """ +import pathlib + from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ +from plinth import actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon +from plinth.modules import names from plinth.modules.firewall.components import Firewall +from plinth.modules.letsencrypt.components import LetsEncrypt from plinth.modules.users.components import UsersAndGroups from .manifest import backup, clients # noqa, pylint: disable=unused-import -version = 1 +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.'), @@ -61,6 +68,15 @@ class MumbleApp(app_module.App): ports=['mumble-plinth'], is_external=True) self.add(firewall) + letsencrypt = LetsEncrypt( + 'letsencrypt-mumble', domains=get_domains, + daemons=managed_services, 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', + managing_app='mumble') + self.add(letsencrypt) + daemon = Daemon( 'daemon-mumble', managed_services[0], listen_ports=[(64738, 'tcp4'), (64738, 'tcp6'), (64738, 'udp4'), @@ -75,4 +91,42 @@ class MumbleApp(app_module.App): def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) - helper.call('post', app.enable) + helper.call('post', actions.superuser_run, 'mumble', ['setup']) + if not old_version: + helper.call('post', app.enable) + + app.get_component('letsencrypt-mumble').setup_certificates() + + +def get_available_domains(): + """Return an iterator with all domains able to have a certificate.""" + return (domain.name for domain in names.components.DomainName.list() + if domain.domain_type.can_have_certificate) + + +def set_domain(domain): + """Set the TLS domain by writing a file to data directory.""" + if domain: + actions.superuser_run('mumble', ['set-domain', domain]) + + +def get_domain(): + """Read TLS domain from config file select first available if none.""" + domain = actions.superuser_run('mumble', ['get-domain']).strip() + if not domain: + domain = next(get_available_domains(), None) + set_domain(domain) + + return domain + + +def get_domains(): + """Return a list with the configured domains.""" + if not pathlib.Path('/var/lib/mumble-server/').exists(): + return [] + + domain = get_domain() + if domain: + return [domain] + + return [] diff --git a/plinth/modules/mumble/forms.py b/plinth/modules/mumble/forms.py index fa05b25b5..a3df53a23 100644 --- a/plinth/modules/mumble/forms.py +++ b/plinth/modules/mumble/forms.py @@ -6,9 +6,25 @@ Mumble server configuration form from django import forms from django.utils.translation import ugettext_lazy as _ +from plinth.modules import mumble + + +def get_domain_choices(): + """Double domain entries for inclusion in the choice field.""" + return ((domain, domain) for domain in mumble.get_available_domains()) + class MumbleForm(forms.Form): """Mumble server configuration""" + domain = forms.ChoiceField( + choices=get_domain_choices, + label=_('TLS domain'), + help_text=_( + 'Select a domain to use TLS with. If the list is empty, please ' + 'configure at least one domain with certificates.'), + required=False, + ) + super_user_password = forms.CharField( max_length=20, label=_('Set SuperUser Password'), diff --git a/plinth/modules/mumble/views.py b/plinth/modules/mumble/views.py index a12ba76ce..4180f7b59 100644 --- a/plinth/modules/mumble/views.py +++ b/plinth/modules/mumble/views.py @@ -3,6 +3,7 @@ from django.contrib import messages from django.utils.translation import ugettext_lazy as _ from plinth import actions +from plinth.modules import mumble from plinth.modules.mumble.forms import MumbleForm from plinth.views import AppView @@ -11,10 +12,21 @@ class MumbleAppView(AppView): app_id = 'mumble' form_class = MumbleForm + def get_initial(self): + """Return the values to fill in the form.""" + initial = super().get_initial() + initial['domain'] = mumble.get_domain() + return initial + def form_valid(self, form): """Apply new superuser password if it exists""" new_config = form.cleaned_data + if mumble.get_domain() != new_config['domain']: + mumble.set_domain(new_config['domain']) + mumble.app.get_component('letsencrypt-mumble').setup_certificates() + messages.success(self.request, _('Configuration updated')) + password = new_config.get('super_user_password') if password: actions.run_as_user( diff --git a/plinth/modules/pagekite/__init__.py b/plinth/modules/pagekite/__init__.py index eff0ab899..3a305ed76 100644 --- a/plinth/modules/pagekite/__init__.py +++ b/plinth/modules/pagekite/__init__.py @@ -81,7 +81,9 @@ class PagekiteApp(app_module.App): self.add(daemon) # Register kite name with Name Services module. - utils.update_names_module(is_enabled=self.is_enabled()) + setup_helper = globals()['setup_helper'] + if setup_helper.get_state() != 'needs-setup' and self.is_enabled(): + utils.update_names_module(is_enabled=True) def enable(self): """Send domain signals after enabling the app.""" diff --git a/plinth/modules/pagekite/utils.py b/plinth/modules/pagekite/utils.py index d2a7d4572..7c3cf266d 100644 --- a/plinth/modules/pagekite/utils.py +++ b/plinth/modules/pagekite/utils.py @@ -20,6 +20,9 @@ KITE_SECRET = '@kitesecret' # Augeas base path for Pagekite configuration files CONF_PATH = '/files/etc/pagekite.d' +# Kite name used by default in config. Should be treated as unconfigured. +UNCONFIGURED_KITE = 'NAME.pagekite.me' + # Parameters that get stored in configuration service_on entries SERVICE_PARAMS = [ 'protocol', 'kitename', 'backend_host', 'backend_port', 'secret' @@ -178,7 +181,7 @@ def update_names_module(is_enabled=None): service for service, value in config['predefined_services'].items() if value ] - if config['kite_name']: + if config['kite_name'] and config['kite_name'] != UNCONFIGURED_KITE: domain_added.send_robust(sender='pagekite', domain_type='domain-type-pagekite', name=config['kite_name'], diff --git a/plinth/modules/quassel/__init__.py b/plinth/modules/quassel/__init__.py index bee065c40..43555e679 100644 --- a/plinth/modules/quassel/__init__.py +++ b/plinth/modules/quassel/__init__.py @@ -134,6 +134,10 @@ def get_domain(): def get_domains(): """Return a list with the configured domain for quassel.""" + # If not installed, return empty. But work while installing too. + if not pathlib.Path('/var/lib/quassel/').exists(): + return [] + domain = get_domain() if domain: return [domain] diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index 7cd98bfc9..b8ae723f5 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -87,7 +87,9 @@ class TorApp(app_module.App): self.add(users_and_groups) # Register hidden service name with Name Services module. - if self.is_enabled() and app_is_running(self): + setup_helper = globals()['setup_helper'] + if setup_helper.get_state() != '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']] diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py index 5ae2c85f3..978495df9 100644 --- a/plinth/modules/upgrades/__init__.py +++ b/plinth/modules/upgrades/__init__.py @@ -45,7 +45,9 @@ app = None BACKPORTS_REQUESTED_KEY = 'upgrades_backports_requested' -SOURCES_LIST = '/etc/apt/sources.list.d/freedombox2.list' +SOURCES_LIST = '/etc/apt/sources.list' + +BACKPORTS_SOURCES_LIST = '/etc/apt/sources.list.d/freedombox2.list' logger = logging.getLogger(__name__) @@ -72,8 +74,10 @@ class UpgradesApp(app_module.App): self._show_new_release_notification() - # Check every day for setting up apt backport sources, every 3 minutes - # in debug mode. + # Check every day (every 3 minutes in debug mode): + # - backports becomes available -> configure it if selected by user + # - new stable release becomes available -> perform dist-upgrade if + # updates are enabled interval = 180 if cfg.develop else 24 * 3600 glib.schedule(interval, setup_repositories) @@ -146,7 +150,7 @@ def disable(): def setup_repositories(data): - """Setup apt backport repositories.""" + """Setup apt repositories for backports or new stable release.""" if is_backports_requested(): command = ['setup-repositories'] if cfg.develop: @@ -170,7 +174,7 @@ def set_backports_requested(requested): def is_backports_enabled(): """Return whether backports are enabled in the system configuration.""" - return os.path.exists(SOURCES_LIST) + return os.path.exists(BACKPORTS_SOURCES_LIST) def get_current_release(): diff --git a/plinth/modules/users/forms.py b/plinth/modules/users/forms.py index bebb77b74..760c9abd1 100644 --- a/plinth/modules/users/forms.py +++ b/plinth/modules/users/forms.py @@ -6,6 +6,7 @@ import re from django import forms from django.contrib import auth, messages from django.contrib.auth.forms import SetPasswordForm, UserCreationForm +from django.contrib.auth.hashers import check_password from django.contrib.auth.models import Group, User from django.core import validators from django.core.exceptions import ValidationError @@ -65,15 +66,33 @@ class UsernameValidator(validators.RegexValidator): USERNAME_FIELD = forms.CharField( - label=ugettext_lazy('Username'), - max_length=150, validators=[UsernameValidator()], + label=ugettext_lazy('Username'), max_length=150, + validators=[UsernameValidator()], help_text=ugettext_lazy('Required. 150 characters or fewer. English ' 'letters, digits and @/./-/_ only.')) +class PasswordConfirmForm(forms.Form): + """Password confirmation form.""" + confirm_password = forms.CharField( + widget=forms.PasswordInput, + label=ugettext_lazy('Authorization Password'), help_text=ugettext_lazy( + 'Enter your current password to authorize account modifications.')) + + def clean_confirm_password(self): + """Check that current user's password matches.""" + confirm_password = self.cleaned_data['confirm_password'] + password_matches = check_password(confirm_password, + self.request.user.password) + if not password_matches: + raise ValidationError(_('Invalid password.'), code='invalid') + + return confirm_password + + class CreateUserForm(ValidNewUsernameCheckMixin, plinth.forms.LanguageSelectionFormMixin, - UserCreationForm): + PasswordConfirmForm, UserCreationForm): """Custom user create form. Include options to add user to groups. @@ -95,7 +114,8 @@ class CreateUserForm(ValidNewUsernameCheckMixin, class Meta(UserCreationForm.Meta): """Metadata to control automatic form building.""" - fields = ('username', 'password1', 'password2', 'groups', 'language') + fields = ('username', 'password1', 'password2', 'groups', 'language', + 'confirm_password') def __init__(self, request, *args, **kwargs): """Initialize the form with extra request argument.""" @@ -104,7 +124,7 @@ class CreateUserForm(ValidNewUsernameCheckMixin, self.fields['username'].widget.attrs.update({ 'autofocus': 'autofocus', 'autocapitalize': 'none', - 'autocomplete': 'username' + 'autocomplete': 'username', }) def save(self, commit=True): @@ -114,26 +134,34 @@ class CreateUserForm(ValidNewUsernameCheckMixin, if commit: user.userprofile.language = self.cleaned_data['language'] user.userprofile.save() + auth_username = self.request.user.username + confirm_password = self.cleaned_data['confirm_password'] + process_input = '{0}\n{1}'.format(self.cleaned_data['password1'], + confirm_password).encode() try: - actions.superuser_run( - 'users', - ['create-user', user.get_username()], - input=self.cleaned_data['password1'].encode()) - except ActionError: - messages.error(self.request, _('Creating LDAP user failed.')) + actions.superuser_run('users', [ + 'create-user', + user.get_username(), '--auth-user', auth_username + ], input=process_input) + except ActionError as error: + messages.error( + self.request, + _('Creating LDAP user failed: {error}'.format( + error=error))) for group in self.cleaned_data['groups']: try: - actions.superuser_run( - 'users', - ['add-user-to-group', - user.get_username(), group]) - except ActionError: + actions.superuser_run('users', [ + 'add-user-to-group', + user.get_username(), group, '--auth-user', + auth_username + ], input=confirm_password.encode()) + except ActionError as error: messages.error( self.request, - _('Failed to add new user to {group} group.').format( - group=group)) + _('Failed to add new user to {group} group: {error}'). + format(group=group, error=error)) group_object, created = Group.objects.get_or_create(name=group) group_object.user_set.add(user) @@ -141,7 +169,7 @@ class CreateUserForm(ValidNewUsernameCheckMixin, return user -class UserUpdateForm(ValidNewUsernameCheckMixin, +class UserUpdateForm(ValidNewUsernameCheckMixin, PasswordConfirmForm, plinth.forms.LanguageSelectionFormMixin, forms.ModelForm): """When user info is changed, also updates LDAP user.""" username = USERNAME_FIELD @@ -158,7 +186,8 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, class Meta: """Metadata to control automatic form building.""" - fields = ('username', 'groups', 'ssh_keys', 'language', 'is_active') + fields = ('username', 'groups', 'ssh_keys', 'language', 'is_active', + 'confirm_password') model = User widgets = { 'groups': plinth.forms.CheckboxSelectMultipleWithReadOnly(), @@ -210,9 +239,11 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, user = super(UserUpdateForm, self).save(commit=False) # Profile is auto saved with user object user.userprofile.language = self.cleaned_data['language'] + auth_username = self.request.user.username + confirm_password = self.cleaned_data['confirm_password'] # If user is updating their own profile then only translate the pages - if self.username == self.request.user.username: + if self.username == auth_username: set_language(self.request, None, user.userprofile.language) if commit: @@ -240,8 +271,9 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, try: actions.superuser_run('users', [ 'remove-user-from-group', - user.get_username(), old_group - ]) + user.get_username(), old_group, '--auth-user', + auth_username + ], input=confirm_password.encode()) except ActionError: messages.error(self.request, _('Failed to remove user from group.')) @@ -251,18 +283,23 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, try: actions.superuser_run('users', [ 'add-user-to-group', - user.get_username(), new_group - ]) + user.get_username(), new_group, '--auth-user', + auth_username + ], input=confirm_password.encode()) except ActionError: messages.error(self.request, _('Failed to add user to group.')) try: actions.superuser_run('ssh', [ - 'set-keys', '--username', - user.get_username(), '--keys', - self.cleaned_data['ssh_keys'].strip() - ]) + 'set-keys', + '--username', + user.get_username(), + '--keys', + self.cleaned_data['ssh_keys'].strip(), + '--auth-user', + auth_username, + ], input=confirm_password.encode()) except ActionError: messages.error(self.request, _('Unable to set SSH keys.')) @@ -273,10 +310,13 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, else: status = 'inactive' try: - actions.superuser_run( - 'users', - ['set-user-status', - user.get_username(), status]) + actions.superuser_run('users', [ + 'set-user-status', + user.get_username(), + status, + '--auth-user', + auth_username, + ], input=confirm_password.encode()) except ActionError: messages.error(self.request, _('Failed to change user status.')) @@ -297,7 +337,7 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, return cleaned_data -class UserChangePasswordForm(SetPasswordForm): +class UserChangePasswordForm(PasswordConfirmForm, SetPasswordForm): """Custom form that also updates password for LDAP users.""" def __init__(self, request, *args, **kwargs): @@ -310,12 +350,16 @@ class UserChangePasswordForm(SetPasswordForm): def save(self, commit=True): """Save the user model and change LDAP password as well.""" user = super(UserChangePasswordForm, self).save(commit) + auth_username = self.request.user.username if commit: + process_input = '{0}\n{1}'.format( + self.cleaned_data['new_password1'], + self.cleaned_data['confirm_password']).encode() try: - actions.superuser_run( - 'users', ['set-user-password', - user.get_username()], - input=self.cleaned_data['new_password1'].encode()) + actions.superuser_run('users', [ + 'set-user-password', + user.get_username(), '--auth-user', auth_username + ], input=process_input) except ActionError: messages.error(self.request, _('Changing LDAP user password failed.')) @@ -341,19 +385,25 @@ class FirstBootForm(ValidNewUsernameCheckMixin, auth.forms.UserCreationForm): try: actions.superuser_run( 'users', - ['create-user', user.get_username()], + ['create-user', + user.get_username(), '--auth-user', ''], input=self.cleaned_data['password1'].encode()) - except ActionError: - messages.error(self.request, _('Creating LDAP user failed.')) + except ActionError as error: + messages.error( + self.request, + _('Creating LDAP user failed: {error}'.format( + error=error))) try: actions.superuser_run( 'users', ['add-user-to-group', user.get_username(), 'admin']) - except ActionError: - messages.error(self.request, - _('Failed to add new user to admin group.')) + except ActionError as error: + messages.error( + self.request, + _('Failed to add new user to admin group: {error}'.format( + error=error))) # Create initial Django groups for group_choice in UsersAndGroups.get_group_choices(): @@ -368,9 +418,11 @@ class FirstBootForm(ValidNewUsernameCheckMixin, auth.forms.UserCreationForm): # Restrict console login to users in admin or sudo group try: set_restricted_access(True) - except Exception: - messages.error(self.request, - _('Failed to restrict console access.')) + except Exception as error: + messages.error( + self.request, + _('Failed to restrict console access: {error}'.format( + error=error))) return user diff --git a/plinth/modules/users/templates/users_create.html b/plinth/modules/users/templates/users_create.html index 96a5204bf..53e2dc4da 100644 --- a/plinth/modules/users/templates/users_create.html +++ b/plinth/modules/users/templates/users_create.html @@ -8,6 +8,8 @@ {% block content %} +

{%trans "Create User" %}

+
{% csrf_token %} diff --git a/plinth/modules/users/templates/users_firstboot.html b/plinth/modules/users/templates/users_firstboot.html index 6fb326b81..4229413e6 100644 --- a/plinth/modules/users/templates/users_firstboot.html +++ b/plinth/modules/users/templates/users_firstboot.html @@ -10,21 +10,57 @@ {% block content %}

{% trans "Administrator Account" %}

-

- {% blocktrans trimmed %} - Choose a username and password to access this web interface. - The password can be changed later. This user will be granted - administrative privileges. Other users can be added later. - {% endblocktrans %} -

+ {% if not admin_users %} +

+ {% blocktrans trimmed %} + Choose a username and password to access this web interface. + The password can be changed later. This user will be granted + administrative privileges. Other users can be added later. + {% endblocktrans %} +

- - {% csrf_token %} + + {% csrf_token %} - {{ form|bootstrap }} + {{ form|bootstrap }} - -
+ + + {% else %} + + +

+ {% blocktrans trimmed %} + The following administrator accounts exist in the system. + {% endblocktrans %} +

+ +
    + {% for user in admin_users %} +
  • {{ user }}
  • + {% endfor %} +
+ +

+ {% blocktrans trimmed %} + Delete these accounts from command line and refresh the page to create + an account that is usable with {{ box_name }}. On the command line run + the command 'echo "{password}" | /usr/share/plinth/actions/users + remove-user {username}'. If an account is already usable with + {{ box_name }}, skip this step. + {% endblocktrans %} +

+ +
+ {% csrf_token %} + + +
+ {% endif %} {% endblock %} - diff --git a/plinth/modules/users/templates/users_update.html b/plinth/modules/users/templates/users_update.html index f33bb30f6..ecf4ecfbd 100644 --- a/plinth/modules/users/templates/users_update.html +++ b/plinth/modules/users/templates/users_update.html @@ -7,7 +7,11 @@ {% load i18n %} {% block content %} -

{{ object.username }}

+

+ {% blocktrans trimmed with username=object.username %} + Edit User {{ username }} + {% endblocktrans %} +

{% url 'users:change_password' object.username as change_password_url %} diff --git a/plinth/modules/users/tests/test_actions.py b/plinth/modules/users/tests/test_actions.py index 6a1d54645..b88404476 100644 --- a/plinth/modules/users/tests/test_actions.py +++ b/plinth/modules/users/tests/test_actions.py @@ -16,6 +16,7 @@ import pytest from plinth import action_utils from plinth.modules import security +from plinth.tests import config as test_config _cleanup_users = None _cleanup_groups = None @@ -74,8 +75,8 @@ def _try_login_to_ssh(username, password, returncode=0): def _action_file(): """Return the path to the 'users' actions file.""" current_directory = pathlib.Path(__file__).parent - return str( - current_directory / '..' / '..' / '..' / '..' / 'actions' / 'users') + return str(current_directory / '..' / '..' / '..' / '..' / 'actions' / + 'users') @pytest.fixture(name='disable_restricted_access', autouse=True) @@ -111,8 +112,8 @@ def fixture_auto_cleanup_users_groups(needs_root, load_cfg): def _call_action(arguments, **kwargs): """Call the action script.""" - kwargs['stdout'] = kwargs.get('stdout', subprocess.DEVNULL) - kwargs['stderr'] = kwargs.get('stderr', subprocess.DEVNULL) + kwargs['stdout'] = kwargs.get('stdout', subprocess.PIPE) + kwargs['stderr'] = kwargs.get('stderr', subprocess.PIPE) kwargs['check'] = kwargs.get('check', True) return subprocess.run([_action_file()] + arguments, **kwargs) @@ -120,13 +121,19 @@ def _call_action(arguments, **kwargs): def _create_user(username=None, groups=None): """Call the action script for creating a new user.""" username = username or _random_string() - password = _random_string() + password = username + '_passwd' + admin_user, admin_password = _get_admin_user_password() - _call_action(['create-user', username], input=password.encode()) + process_input = "{0}\n{1}".format(password, admin_password).encode() + _call_action(['create-user', '--auth-user', admin_user, username], + input=process_input) if groups: for group in groups: - _call_action(['add-user-to-group', username, group]) + admin_user, admin_password = _get_admin_user_password() + _call_action([ + 'add-user-to-group', '--auth-user', admin_user, username, group + ], input=admin_password.encode()) if group != 'admin': _cleanup_groups.add(group) @@ -136,29 +143,54 @@ def _create_user(username=None, groups=None): def _delete_user(username): """Utility to delete an LDAP and Samba user""" - _call_action(['remove-user', username]) + process_input = None + if _get_group_users('admin') == [username]: + _, admin_password = _get_admin_user_password() + process_input = admin_password.encode() + _call_action(['remove-user', username], input=process_input) + + +def _get_admin_user_password(): + """Return an admin username and password.""" + + admin_users = _get_group_users('admin') + + if not admin_users: + return ('', '') + + if test_config.admin_username in admin_users: + return (test_config.admin_username, test_config.admin_password) + + return (admin_users[0], admin_users[0] + '_passwd') def _rename_user(old_username, new_username=None): """Rename a user.""" new_username = new_username or _random_string() + _call_action(['rename-user', old_username, new_username]) _cleanup_users.remove(old_username) _cleanup_users.add(new_username) return new_username +def _get_group_users(group): + """Return the list of members in a group.""" + process = _call_action(['get-group-users', group]) + return process.stdout.decode().split() + + def _get_user_groups(username): """Return the list of groups for a user.""" - process = _call_action(['get-user-groups', username], - stdout=subprocess.PIPE) + process = _call_action(['get-user-groups', username]) return process.stdout.decode().split() def _create_group(groupname=None): groupname = groupname or _random_string() _call_action(['create-group', groupname]) - _cleanup_groups.add(groupname) + if groupname != 'admin': + _cleanup_groups.add(groupname) return groupname @@ -181,7 +213,13 @@ def test_change_user_password(): username, old_password = _create_user(groups=['admin']) old_password_hash = _get_password_hash(username) new_password = 'pass $123' - _call_action(['set-user-password', username], input=new_password.encode()) + + admin_user, admin_password = _get_admin_user_password() + + process_input = "{0}\n{1}".format(new_password, admin_password).encode() + _call_action(['set-user-password', username, '--auth-user', admin_user], + input=process_input) + new_password_hash = _get_password_hash(username) assert old_password_hash != new_password_hash @@ -191,6 +229,38 @@ def test_change_user_password(): assert _try_login_to_ssh(username, new_password) +def test_change_password_as_non_admin_user(): + """Test changing user password as a non-admin user.""" + username, old_password = _create_user() + old_password_hash = _get_password_hash(username) + new_password = 'pass $123' + + process_input = "{0}\n{1}".format(new_password, old_password).encode() + _call_action(['set-user-password', username, '--auth-user', username], + input=process_input) + + new_password_hash = _get_password_hash(username) + assert old_password_hash != new_password_hash + + # User can login to ssh using new password but not the old password. + # sshpass gives a return code of 5 if the password is incorrect. + assert _try_login_to_ssh(username, old_password, returncode=5) + assert _try_login_to_ssh(username, new_password) + + +def test_change_other_users_password_as_non_admin(): + """Test that changing other user's password as a non-admin user fails.""" + username1, password1 = _create_user() + username2, _ = _create_user() + new_password = 'pass $123' + + process_input = "{0}\n{1}".format(new_password, password1).encode() + with pytest.raises(subprocess.CalledProcessError): + _call_action( + ['set-user-password', username2, '--auth-user', username1], + input=process_input) + + def test_set_password_for_non_existent_user(): """Test setting password for a non-existent user.""" non_existent_user = _random_string() @@ -202,6 +272,9 @@ def test_set_password_for_non_existent_user(): def test_rename_user(): """Test whether renaming a user works.""" + # create an admin user to create other users with + _create_user(groups=['admin']) + old_username, password = _create_user(groups=['admin', _random_string()]) old_groups = _get_user_groups(old_username) @@ -269,24 +342,40 @@ def test_groups(): assert _is_exit_zero([_action_file(), 'remove-group', groupname]) +def test_delete_admin_group_fails(): + """Test that deleting the admin group fails.""" + groupname = 'admin' + _create_group('admin') + + assert not _is_exit_zero([_action_file(), 'remove-group', groupname]) + + def test_user_group_interactions(): """Test adding/removing user from a groups.""" group1 = _random_string() user1, _ = _create_user(groups=[group1]) assert [group1] == _get_user_groups(user1) + admin_user, admin_password = _get_admin_user_password() + # add-user-to-group is not idempotent with pytest.raises(subprocess.CalledProcessError): - _call_action(['add-user-to-group', user1, group1]) + _call_action( + ['add-user-to-group', '--auth-user', admin_user, user1, group1], + input=admin_password.encode()) # The same user can be added to other new groups group2 = _random_string() _create_group(group2) - _call_action(['add-user-to-group', user1, group2]) + _call_action( + ['add-user-to-group', '--auth-user', admin_user, user1, group2], + input=admin_password.encode()) # Adding a user to a non-existent group creates the group group3 = _random_string() - _call_action(['add-user-to-group', user1, group3]) + _call_action( + ['add-user-to-group', '--auth-user', admin_user, user1, group3], + input=admin_password.encode()) _cleanup_groups.add(group3) # The expected groups got created and the user is part of them. @@ -295,7 +384,10 @@ def test_user_group_interactions(): # Remove user from group group_to_remove_from = random.choice(expected_groups) - _call_action(['remove-user-from-group', user1, group_to_remove_from]) + _call_action([ + 'remove-user-from-group', '--auth-user', admin_user, user1, + group_to_remove_from + ], input=admin_password.encode()) # User is no longer in the group that they're removed from expected_groups.remove(group_to_remove_from) @@ -305,4 +397,7 @@ def test_user_group_interactions(): random_group = _random_string() _create_group(random_group) with pytest.raises(subprocess.CalledProcessError): - _call_action(['remove-user-from-group', user1, random_group]) + _call_action([ + 'remove-user-from-group', '--auth-user', admin_user, user1, + random_group + ], input=admin_password.encode()) diff --git a/plinth/modules/users/tests/test_functional.py b/plinth/modules/users/tests/test_functional.py index fc642dbab..7481297de 100644 --- a/plinth/modules/users/tests/test_functional.py +++ b/plinth/modules/users/tests/test_functional.py @@ -3,10 +3,18 @@ Functional, browser based tests for users app. """ +import random +import string +import subprocess +import urllib + +import pytest from pytest_bdd import given, parsers, scenarios, then, when from plinth.tests import functional +_admin_password = functional.config['DEFAULT']['password'] + scenarios('users.feature') _language_codes = { @@ -51,11 +59,63 @@ def new_user_does_not_exist(session_browser, name): @given(parsers.parse('the user {name:w} exists')) def test_user_exists(session_browser, name): + functional.nav_to_module(session_browser, 'users') + user_link = session_browser.find_link_by_href( + '/plinth/sys/users/{}/edit/'.format(name)) + + if user_link: + _delete_user(session_browser, name) + + _create_user(session_browser, name, _random_string()) + + +@given( + parsers.parse('the admin user {name:w} with password {password:w} exists')) +def test_admin_user_exists(session_browser, name, password): functional.nav_to_module(session_browser, 'users') user_link = session_browser.find_link_by_href('/plinth/sys/users/' + name + '/edit/') - if not user_link: - create_user(session_browser, name, 'secret123') + if user_link: + _delete_user(session_browser, name) + + _create_user(session_browser, name, password, is_admin=True) + + +@given(parsers.parse('the user {name:w} with password {password:w} exists')) +def user_exists(session_browser, name, password): + functional.nav_to_module(session_browser, 'users') + user_link = session_browser.find_link_by_href('/plinth/sys/users/' + name + + '/edit/') + if user_link: + _delete_user(session_browser, name) + + _create_user(session_browser, name, password) + + +@given( + parsers.parse( + "I'm logged in as the user {username:w} with password {password:w}")) +def logged_in_user_with_account(session_browser, username, password): + functional.login_with_account(session_browser, functional.base_url, + username, password) + + +@given(parsers.parse('the ssh keys are {ssh_keys:w}')) +def ssh_keys(session_browser, ssh_keys): + _set_ssh_keys(session_browser, ssh_keys) + + +@given('the client has a ssh key') +def generate_ssh_keys(session_browser, tmp_path_factory): + key_file = tmp_path_factory.getbasetemp() / 'users-ssh.key' + try: + key_file.unlink() + except FileNotFoundError: + pass + + subprocess.check_call( + ['ssh-keygen', '-t', 'ed25519', '-N', '', '-q', '-f', + str(key_file)]) @when( @@ -74,6 +134,123 @@ def delete_user(session_browser, name): _delete_user(session_browser, name) +@when('I change the language to ') +def change_language(session_browser, language): + _set_language(session_browser, _language_codes[language]) + + +@when(parsers.parse('I change the ssh keys to {ssh_keys:w}')) +def change_ssh_keys(session_browser, ssh_keys): + _set_ssh_keys(session_browser, ssh_keys) + + +@when('I remove the ssh keys') +def remove_ssh_keys(session_browser): + _set_ssh_keys(session_browser, '') + + +@when( + parsers.parse( + 'I change the ssh keys to {ssh_keys:w} for the user {username:w}')) +def change_user_ssh_keys(session_browser, ssh_keys, username): + _set_ssh_keys(session_browser, ssh_keys, username=username) + + +@when( + parsers.parse( + 'I change my ssh keys to {ssh_keys:w} with password {password:w}')) +def change_my_ssh_keys(session_browser, ssh_keys, password): + _set_ssh_keys(session_browser, ssh_keys, password=password) + + +@when(parsers.parse('I set the user {username:w} as inactive')) +def set_user_inactive(session_browser, username): + _set_user_inactive(session_browser, username) + + +@when( + parsers.parse( + 'I change my password from {current_password} to {new_password:w}')) +def change_my_password(session_browser, current_password, new_password): + _change_password(session_browser, new_password, + current_password=current_password) + + +@when( + parsers.parse( + 'I change the user {username:w} password to {new_password:w}')) +def change_other_user_password(session_browser, username, new_password): + _change_password(session_browser, new_password, username=username) + + +@when('I configure the ssh keys') +def configure_ssh_keys(session_browser, tmp_path_factory): + public_key_file = tmp_path_factory.getbasetemp() / 'users-ssh.key.pub' + public_key = public_key_file.read_text() + _set_ssh_keys(session_browser, public_key) + + +@then( + parsers.parse( + 'I can log in as the user {username:w} with password {password:w}')) +def can_log_in(session_browser, username, password): + functional.visit(session_browser, '/plinth/accounts/logout/') + functional.login_with_account(session_browser, functional.base_url, + username, password) + assert len(session_browser.find_by_id('id_user_menu')) > 0 + + +@then( + parsers.parse( + "I can't log in as the user {username:w} with password {password:w}")) +def cannot_log_in(session_browser, username, password): + functional.visit(session_browser, '/plinth/accounts/logout/') + functional.login_with_account(session_browser, functional.base_url, + username, password) + assert len(session_browser.find_by_id('id_user_menu')) == 0 + + +@then('Plinth language should be ') +def plinth_language_should_be(session_browser, language): + assert _check_language(session_browser, _language_codes[language]) + + +@then(parsers.parse('the ssh keys should be {ssh_keys:w}')) +def ssh_keys_match(session_browser, ssh_keys): + assert _get_ssh_keys(session_browser) == ssh_keys + + +@then('the ssh keys should be removed') +def ssh_keys_should_be_removed(session_browser, ssh_keys): + assert _get_ssh_keys(session_browser) == '' + + +@then( + parsers.parse( + 'the ssh keys should be {ssh_keys:w} for the user {username:w}')) +def ssh_keys_match_for_user(session_browser, ssh_keys, username): + assert _get_ssh_keys(session_browser, username=username) == ssh_keys + + +@then(parsers.parse('my ssh keys should be {ssh_keys:w}')) +def my_ssh_keys_match(session_browser, ssh_keys): + assert _get_ssh_keys(session_browser) == ssh_keys + + +@then('the client should be able to connect passwordless over ssh') +def should_connect_passwordless_over_ssh(session_browser, tmp_path_factory): + key_file = tmp_path_factory.getbasetemp() / 'users-ssh.key' + _try_login_to_ssh(key_file=key_file) + + +@then("the client shouldn't be able to connect passwordless over ssh") +def should_not_connect_passwordless_over_ssh(session_browser, + tmp_path_factory): + key_file = tmp_path_factory.getbasetemp() / 'users-ssh.key' + with pytest.raises(subprocess.CalledProcessError): + _try_login_to_ssh(key_file=key_file) + + @then(parsers.parse('{name:w} should be listed as a user')) def new_user_is_listed(session_browser, name): assert _is_user(session_browser, name) @@ -84,23 +261,16 @@ def new_user_is_not_listed(session_browser, name): assert not _is_user(session_browser, name) -@when('I change the language to ') -def change_language(session_browser, language): - _set_language(session_browser, _language_codes[language]) - - -@then('Plinth language should be ') -def plinth_language_should_be(session_browser, language): - assert _check_language(session_browser, _language_codes[language]) - - -def _create_user(browser, name, password): +def _create_user(browser, name, password, is_admin=False): functional.nav_to_module(browser, 'users') with functional.wait_for_page_update(browser): browser.find_link_by_href('/plinth/sys/users/create/').first.click() browser.find_by_id('id_username').fill(name) browser.find_by_id('id_password1').fill(password) browser.find_by_id('id_password2').fill(password) + if is_admin: + browser.find_by_id('id_groups_0').check() + browser.find_by_id('id_confirm_password').fill(_admin_password) functional.submit(browser) @@ -110,6 +280,7 @@ def _rename_user(browser, old_name, new_name): browser.find_link_by_href('/plinth/sys/users/' + old_name + '/edit/').first.click() browser.find_by_id('id_username').fill(new_name) + browser.find_by_id('id_confirm_password').fill(_admin_password) functional.submit(browser) @@ -135,6 +306,7 @@ def _set_language(browser, language_code): functional.visit(browser, '/plinth/sys/users/{}/edit/'.format(username)) browser.find_by_xpath('//select[@id="id_language"]//option[@value="' + language_code + '"]').first.click() + browser.find_by_id('id_confirm_password').fill(_admin_password) functional.submit(browser) @@ -142,3 +314,73 @@ def _check_language(browser, language_code): functional.nav_to_module(browser, 'config') return browser.find_by_css('.app-titles').first.find_by_tag( 'h2').first.value == _config_page_title_language_map[language_code] + + +def _get_ssh_keys(browser, username=None): + functional.visit(browser, '/plinth/') + if username is None: + browser.find_by_id('id_user_menu').click() + browser.find_by_id('id_user_edit_menu').click() + else: + functional.visit(browser, + '/plinth/sys/users/{}/edit/'.format(username)) + return browser.find_by_id('id_ssh_keys').text + + +def _random_string(length=8): + """Return a random string created from lower case ascii.""" + return ''.join( + [random.choice(string.ascii_lowercase) for _ in range(length)]) + + +def _set_ssh_keys(browser, ssh_keys, username=None, password=None): + if username is None: + browser.find_by_id('id_user_menu').click() + browser.find_by_id('id_user_edit_menu').click() + else: + functional.visit(browser, + '/plinth/sys/users/{}/edit/'.format(username)) + + password = password or _admin_password + + browser.find_by_id('id_ssh_keys').fill(ssh_keys) + browser.find_by_id('id_confirm_password').fill(password) + + functional.submit(browser) + + +def _set_user_inactive(browser, username): + functional.visit(browser, '/plinth/sys/users/{}/edit/'.format(username)) + browser.find_by_id('id_is_active').uncheck() + browser.find_by_id('id_confirm_password').fill(_admin_password) + functional.submit(browser) + + +def _change_password(browser, new_password, current_password=None, + username=None): + current_password = current_password or _admin_password + + if username is None: + browser.find_by_id('id_user_menu').click() + browser.find_by_id('id_change_password_menu').click() + else: + functional.visit( + browser, '/plinth/sys/users/{}/change_password/'.format(username)) + + browser.find_by_id('id_new_password1').fill(new_password) + browser.find_by_id('id_new_password2').fill(new_password) + browser.find_by_id('id_confirm_password').fill(current_password) + functional.submit(browser) + + +def _try_login_to_ssh(key_file=None): + user = functional.config['DEFAULT']['username'] + hostname = urllib.parse.urlparse( + functional.config['DEFAULT']['url']).hostname + port = functional.config['DEFAULT']['ssh_port'] + + subprocess.check_call([ + 'ssh', '-p', port, '-i', key_file, '-q', '-o', + 'StrictHostKeyChecking=no', '-o', 'UserKnownHostsFile=/dev/null', '-o', + 'BatchMode=yes', '{0}@{1}'.format(user, hostname), '/bin/true' + ]) diff --git a/plinth/modules/users/tests/test_views.py b/plinth/modules/users/tests/test_views.py index 97d717908..467604990 100644 --- a/plinth/modules/users/tests/test_views.py +++ b/plinth/modules/users/tests/test_views.py @@ -67,6 +67,7 @@ def make_request(request, view, as_admin=True, **kwargs): user = User.objects.create(username='tester') admin_user = User.objects.create(username='admin') + admin_user.set_password('adminpassword') request.user = admin_user if as_admin else user @@ -99,7 +100,8 @@ def test_create_user_view(rf, username): form_data = { 'username': username, 'password1': password, - 'password2': password + 'password2': password, + 'confirm_password': 'adminpassword', } request = rf.post(urls.reverse('users:create'), data=form_data) @@ -111,6 +113,31 @@ def test_create_user_view(rf, username): assert response.url == urls.reverse('users:index') +@pytest.mark.parametrize('password,error', [ + ('', { + 'confirm_password': ['This field is required.'] + }), + ('wrong_password', { + 'confirm_password': ['Invalid password.'] + }), +]) +def test_create_user_invalid_admin_view(rf, password, error): + """Test that user creation with an invalid admin password fails.""" + user_password = 'testingtesting' + form_data = { + 'username': 'test-new', + 'password1': user_password, + 'password2': user_password, + 'confirm_password': password, + } + + request = rf.post(urls.reverse('users:create'), data=form_data) + view = views.UserCreate.as_view() + response, messages = make_request(request, view) + + assert response.context_data['form'].errors == error + + def test_create_user_form_view(rf): """Test that a username field on create form has correct attributes.""" request = rf.get(urls.reverse('users:create')) @@ -133,7 +160,8 @@ def test_create_user_invalid_username_view(rf, username): form_data = { 'username': username, 'password1': 'testingtesting', - 'password2': 'testingtesting' + 'password2': 'testingtesting', + 'confirm_password': 'adminpassword', } request = rf.post(urls.reverse('users:create'), data=form_data) @@ -157,7 +185,8 @@ def test_create_user_taken_or_reserved_username_view(rf, username, error): form_data = { 'username': username, 'password1': 'testingtesting', - 'password2': 'testingtesting' + 'password2': 'testingtesting', + 'confirm_password': 'adminpassword', } request = rf.post(urls.reverse('users:create'), data=form_data) @@ -175,7 +204,8 @@ def test_update_user_view(rf): form_data = { 'username': new_username, 'password1': 'testingtesting', - 'password2': 'testingtesting' + 'password2': 'testingtesting', + 'confirm_password': 'adminpassword', } url = urls.reverse('users:edit', kwargs={'slug': user}) @@ -189,12 +219,40 @@ def test_update_user_view(rf): kwargs={'slug': new_username}) +@pytest.mark.parametrize('password,error', [ + ('', { + 'confirm_password': ['This field is required.'] + }), + ('wrong_password', { + 'confirm_password': ['Invalid password.'] + }), +]) +def test_update_user_invalid_admin_view(rf, password, error): + """Test that updating username with an invalid admin password fails.""" + user = 'tester' + new_username = 'tester-renamed' + form_data = { + 'username': new_username, + 'password1': 'testingtesting', + 'password2': 'testingtesting', + 'confirm_password': password, + } + + url = urls.reverse('users:edit', kwargs={'slug': user}) + request = rf.post(url, data=form_data) + view = views.UserUpdate.as_view() + response, messages = make_request(request, view, as_admin=True, slug=user) + + assert response.context_data['form'].errors == error + + def test_update_user_without_permissions_view(rf): """Test that updating other user as non-admin user raises exception.""" form_data = { 'username': 'admin-renamed', 'password1': 'testingtesting', - 'password2': 'testingtesting' + 'password2': 'testingtesting', + 'confirm_password': 'adminpassword', } url = urls.reverse('users:edit', kwargs={'slug': 'admin'}) @@ -224,7 +282,8 @@ def test_user_change_password_view(rf): user = 'admin' form_data = { 'new_password1': 'testingtesting2', - 'new_password2': 'testingtesting2' + 'new_password2': 'testingtesting2', + 'confirm_password': 'adminpassword', } url = urls.reverse('users:change_password', kwargs={'slug': user}) @@ -237,6 +296,32 @@ def test_user_change_password_view(rf): assert response.url == urls.reverse('users:edit', kwargs={'slug': user}) +@pytest.mark.parametrize('password,error', [ + ('', { + 'confirm_password': ['This field is required.'] + }), + ('wrong_password', { + 'confirm_password': ['Invalid password.'] + }), +]) +def test_user_change_password_invalid_admin_view(rf, password, error): + """Test that changing password with an invalid admin password fails.""" + user = 'admin' + form_data = { + 'new_password1': 'testingtesting2', + 'new_password2': 'testingtesting2', + 'confirm_password': password, + } + + url = urls.reverse('users:change_password', kwargs={'slug': user}) + request = rf.post(url, data=form_data) + view = views.UserChangePassword.as_view() + response, messages = make_request(request, view, as_admin=True, slug=user) + + assert response.context_data['form'].errors == error + assert response.status_code == 200 + + def test_user_change_password_without_permissions_view(rf): """ Test that changing other user password as a non-admin user raises @@ -245,7 +330,8 @@ def test_user_change_password_without_permissions_view(rf): user = 'admin' form_data = { 'new_password1': 'adminadmin2', - 'new_password2': 'adminadmin2' + 'new_password2': 'adminadmin2', + 'confirm_password': 'adminpassword', } url = urls.reverse('users:change_password', kwargs={'slug': user}) diff --git a/plinth/modules/users/tests/users.feature b/plinth/modules/users/tests/users.feature index ddb70ab14..4e1a5eea2 100644 --- a/plinth/modules/users/tests/users.feature +++ b/plinth/modules/users/tests/users.feature @@ -2,11 +2,6 @@ # TODO Scenario: Add user to wiki group # TODO Scenario: Remove user from wiki group -# TODO Scenario: Set user SSH key -# TODO Scenario: Clear user SSH key -# TODO Scenario: Make user inactive -# TODO Scenario: Make user active -# TODO Scenario: Change user password @system @essential @users Feature: Users and Groups @@ -27,10 +22,39 @@ Scenario: Rename user Then alice should not be listed as a user Then bob should be listed as a user -Scenario: Delete user +Scenario: Admin users can change their own ssh keys + When I change the ssh keys to somekey123 + Then the ssh keys should be somekey123 + +Scenario: Non-admin users can change their own ssh keys + Given the user alice with password secret123secret123 exists + And I'm logged in as the user alice with password secret123secret123 + When I change my ssh keys to somekey456 with password secret123secret123 + Then my ssh keys should be somekey456 + +Scenario: Admin users can change other user's ssh keys Given the user alice exists - When I delete the user alice - Then alice should not be listed as a user + When I change the ssh keys to alicesomekey123 for the user alice + Then the ssh keys should be alicesomekey123 for the user alice + +Scenario: Users can remove ssh keys + Given the ssh keys are somekey123 + When I remove the ssh keys + Then the ssh keys should be removed + +Scenario: Users can connect passwordless over ssh if the keys are set + Given the ssh application is enabled + And the client has a ssh key + When I configure the ssh keys + Then the client should be able to connect passwordless over ssh + +Scenario: Users can't connect passwordless over ssh if the keys aren't set + Given the ssh application is enabled + And the client has a ssh key + And the ssh keys are configured + When I remove the ssh keys + Then the client shouldn't be able to connect passwordless over ssh + Scenario Outline: Change language When I change the language to @@ -52,3 +76,30 @@ Scenario Outline: Change language | Türkçe | | 简体中文 | | None | + +Scenario: Admin users can set other users an inactive + Given the user alice with password secret789secret789 exists + When I set the user alice as inactive + Then I can't log in as the user alice with password secret789secret789 + +Scenario: Admin users can change their own password + Given the admin user testadmin with password testingtesting123 exists + And I'm logged in as the user testadmin with password testingtesting123 + When I change my password from testingtesting123 to testingtesting456 + Then I can log in as the user testadmin with password testingtesting456 + +Scenario: Admin user can change other user's password + Given the user alice exists + When I change the user alice password to secretsecret567 + Then I can log in as the user alice with password secretsecret567 + +Scenario: Non-admin users can change their own password + Given the user alice with password secret123secret123 exists + And I'm logged in as the user alice with password secret123secret123 + When I change my password from secret123secret123 to secret456secret456 + Then I can log in as the user alice with password secret456secret456 + +Scenario: Delete user + Given the user alice exists + When I delete the user alice + Then alice should not be listed as a user diff --git a/plinth/modules/users/views.py b/plinth/modules/users/views.py index d51014a1c..f11b55d55 100644 --- a/plinth/modules/users/views.py +++ b/plinth/modules/users/views.py @@ -6,6 +6,7 @@ from django.contrib.auth import update_session_auth_hash from django.contrib.auth.models import User from django.contrib.messages.views import SuccessMessageMixin from django.core.exceptions import PermissionDenied +from django.http import HttpResponseRedirect from django.urls import reverse, reverse_lazy from django.utils.translation import ugettext as _ from django.utils.translation import ugettext_lazy @@ -25,6 +26,7 @@ from .forms import (CreateUserForm, FirstBootForm, UserChangePasswordForm, class ContextMixin(object): """Mixin to add 'title' to the template context.""" + def get_context_data(self, **kwargs): """Add self.title to template context.""" context = super(ContextMixin, self).get_context_data(**kwargs) @@ -184,6 +186,24 @@ class FirstBootView(django.views.generic.CreateView): form_class = FirstBootForm + def dispatch(self, request, *args, **kwargs): + """Check if there is no possibility to create a new admin account.""" + if request.method == 'POST' and 'skip' in request.POST: + first_boot.mark_step_done('users_firstboot') + return HttpResponseRedirect(reverse(first_boot.next_step())) + + return super().dispatch(request, *args, **kwargs) + + def get_context_data(self, *args, **kwargs): + """Add admin users to context data.""" + context = super().get_context_data(*args, **kwargs) + + output = actions.superuser_run('users', ['get-group-users', 'admin']) + admin_users = output.strip().split('\n') if output.strip() else [] + context['admin_users'] = admin_users + + return context + def get_form_kwargs(self): """Make request available to the form (to insert messages)""" kwargs = super(FirstBootView, self).get_form_kwargs() diff --git a/plinth/templates/base.html b/plinth/templates/base.html index 6934f4b55..0252d30f8 100644 --- a/plinth/templates/base.html +++ b/plinth/templates/base.html @@ -146,7 +146,7 @@ {% include "help-menu.html" %} -