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/"
"i>"
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"
-"em>. 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"
+"em>. 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"
+"em> 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"
+"a>. 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 ""
"पासवर्ड बदलने के लिये यइ पासवर्ड बदलना फोम्र "
"a> का उपयोग करें."
-#: 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 %}
+ 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 %}
+