Release v20.15 to unstable

-----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAl97sOEWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICOTLEADMMYYYpDVZQYiFA9Os70I8xhGa
 btc0WPqbPd1FmLZbxZgeen3Oi2d5ijD2Kl5hPW6hGw1+UeeHtvgj7DA1HEMlofIH
 9AXXdOiz4rhASbcZTPrfFUuOrpmgEIMNXy53sFiD44OgRaC1iRq7asuT7OVu5YTv
 i+dnQp99B9hXLqLu8kzNfRB1umb5NBmFx76p2d/JUw4HpAIPEKGbcpRKZ7KiweDX
 h80ZCnyeFTNjAo+AEv5BetXd8wnHYZ8Z+/S+lfuR8alcsPnlXcAYsFZ+Y6VKEeI3
 XOPsfBaAS7WZJi/kWz+GTRxMu7CC1W59AlzPhNvqzL0yHDUpk+SfpV1sB4wlRic1
 9naPUv8ys40sevUDuLYjkb1WgjHAcYKSrZ4QySjzTdmdby7pS1zgAoY7kt7XfFnl
 NUkdwdihdZSPS5Uftho2DgvNEJht2FIn19mQoJzehEL76IaVcmFRAHe+r5Zz5zE6
 V6A4VcX9BZ0EsyANmAaXnNYGTIrDvDL2SZE8qTyamxxsy3xTFubQcm43/cCR5jml
 YihnrHdNR4Ec/+2dKVRN06K/aLJJ8VShhAAc7Q/pjY2HGZ2FUSeCQzrNVRwhLwOh
 JKCF4ALrreCknCqaKf69y4TKYqAhKdtH2DzdW0Z7O7ZtXQ45SzX+DgQtz7mA794g
 Bik1z+W/2DBt7TzmwA==
 =iWRL
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAl9/kIgWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICBUXEACLpqG9bmnO+vgJzDAUBn5ppRZo
 sC2MFjJzsKYep23VpNndw5Xk9xRhGKdu08IOoNy1J7epKRJv4EY2naFjBWeRQzdO
 kTIaMDsEWRyrvK6s8XBif5rhdZ250Bk6s8VBobGFtNJQcSSlzFyIXrxt9FkUTo0P
 DOzdDLVWLxt/WiCzdGjbUQ3Cih35GTPVXbphUKvAD08aFsrEjNgulZV8ghrerRYx
 N1h6W3UTjP3t9DChR0EJo5Bro762y+PG+/mUmMgcoHgbZbm0tcFObtDl805yY9ak
 c9NT0zhx1vcuOH96YrwUBp6Y8OFAukEh241aFuED8UrF2SaAnsNa6QpHijCleWj9
 LDRwqsGrs17Rl4QkD4aj2ole9walYlAOj/P+iiX2ZXVttywJenHGFpN4Jq7uNkP4
 81X5SHQyomTQ3/7nb3KDGvpx7XWaSbrMyhS0ZYDEZOVkMYtyn3xe426Oy7DFuP5o
 xg2mmgzLSLg6iI4RrfEbc2/6pPM3s83D2gCME9H+9q3NHYyHAtdS/FH5w3QPbnS5
 SDI2pgkkrGIaDRacxdFWPzFeXFjrDKEo2ePiNnQw99wQ8E6wIFpjMMn/8zsHQvgH
 gl1PLF9NnSYcYKM7vDs+pwTJ3+Es7NCxnYN7k5wlDEv4TJvy9EQbvjH+WQr4SeRU
 pIiQyQPFQKUMhdeDKw==
 =6Q8s
 -----END PGP SIGNATURE-----

Merge tag 'v20.15' into debian/buster-backports

Release v20.15 to unstable

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
James Valleroy 2020-10-08 18:19:41 -04:00
commit 3e4ebcefd4
104 changed files with 12267 additions and 4077 deletions

View File

@ -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

View File

@ -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)

View File

@ -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)

76
actions/calibre Executable file
View File

@ -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()

View File

@ -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()

View File

@ -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

View File

@ -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')

View File

@ -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():

View File

@ -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'

View File

@ -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

71
debian/changelog vendored
View File

@ -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 <jvalleroy@mailbox.org> Mon, 05 Oct 2020 19:25:41 -0400
plinth (20.14.1~bpo10+1) buster-backports; urgency=high
* Rebuild for buster-backports.

3
debian/control vendored
View File

@ -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,

View File

@ -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|.*<<Include(\([a-zA-Z0-9_/+-]*\),.*|\1|p" | sort -u) ; \

View File

@ -18,7 +18,9 @@ be built.
Picking an app
^^^^^^^^^^^^^^
We must first, of course, pick an application to add to FreedomBox. For the
We must first, of course, pick an application to add to FreedomBox. Many
potential applications that can be added to FreedomBox have been listed on the
`FreedomBox wiki <https://wiki.debian.org/FreedomBox/LeavingTheCloud>`. 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.

View File

@ -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]] -~
<<TableOfContents()>>
@ -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}}

View File

@ -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 ===

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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}}

View File

@ -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.

View File

@ -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

View File

@ -3,4 +3,4 @@
Package init file.
"""
__version__ = '20.14'
__version__ = '20.15'

View File

@ -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 <an1f3@hotmail.com>\n"
"Language-Team: Arabic (Saudi Arabia) <https://hosted.weblate.org/projects/"
@ -389,6 +389,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 ""
@ -655,7 +656,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 ""
@ -813,12 +814,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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <nevena.mircheva@gmail.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/freedombox/"
@ -394,6 +394,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 ""
@ -660,7 +661,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 ""
@ -818,12 +819,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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <pavel.borecki@gmail.com>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/freedombox/plinth/"
@ -414,6 +414,7 @@ msgstr "Smazat archiv %(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 "Potvrdit"
@ -708,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 "Oprávnění"
@ -894,12 +895,132 @@ 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 "Nastavení aktualizováno"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Smazat Git repozitář <em>%(name)s</em>"
#: 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ář <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3418,21 +3525,21 @@ msgstr ""
"dispozici jsou <a href=\"http://mumble.info\">klienti</a> 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr "Stránky budou k dispozici na <a href=\"http://{0}\">http://{0}</a>"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "Stránky budou k dispozici na <a href=\"https://{0}\">https://{0}</a>"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
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 <em>%(username)s</em>"
msgstr "Upravit uživatele %(username)s"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -6925,39 +7085,39 @@ msgstr ""
"Heslo změníte pomocí <a href='%(change_password_url)s'>formuláře pro změnu "
"hesla</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 "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"

View File

@ -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 <subscriptions@zete.tk>\n"
"Language-Team: Danish <https://hosted.weblate.org/projects/freedombox/"
@ -415,6 +415,7 @@ msgstr "Slet arkivet %(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"
@ -706,7 +707,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
#, fuzzy
#| msgid "Transmission BitTorrent"
msgid "Permissions"
@ -887,12 +888,132 @@ msgstr "Opfrisk IP-adresse og 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 opdateret"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Slet Wiki eller Blog <em>%(name)s</em>"
#: 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3454,23 +3561,23 @@ msgstr ""
"<a href=\"http://mumble.info\">Klienter</a> 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr "Siden vil være tilgængelig på <a href=\"http://{0}\">http://{0}</a>"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "Siden vil være tilgængelig på <a href=\"https://{0}\">https://{0}</a>"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
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 <em>%(username)s</em>"
msgstr "Rediger Bruger <em>%(username)s</em>"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -6958,39 +7116,39 @@ msgstr ""
"Brug <a href='%(change_password_url)s'>siden til kodeordsændring </a> 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 <em>%(username)s</em>"
#~ msgstr "Rediger Bruger <em>%(username)s</em>"

View File

@ -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 <sagen@permondes.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/freedombox/"
@ -415,6 +415,7 @@ msgstr "Archiv %(name)s löschen"
#: 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 "Absenden"
@ -722,7 +723,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 "Berechtigungen"
@ -892,12 +893,132 @@ msgstr "IP-Adresse und Domänen aktualisieren"
#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39
#: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py: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 aktualisiert"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Git Repository <em>%(name)s</em> 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 <em>%(name)s</em> 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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3438,19 +3545,19 @@ msgstr ""
"verbinden. Auf <a href=\"http://mumble.info\">Mumble</a> 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr ""
"Webseite wird unter <a href=\"http://{0}\">http://{0}</a> 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr ""
"Webseite wird unter <a href=\"https://{0}\">https://{0}</a> 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em> ä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 <em>%(username)s</em>"
msgstr "Benutzer <em>%(username)s</em> bearbeiten"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -7012,39 +7171,39 @@ msgstr ""
"href='%(change_password_url)s'>Passwortänderungsformular</a>, 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 <em>%(username)s</em>"
#~ msgstr "Benutzer <em>%(username)s</em> bearbeiten"
#~ msgid "Scramblesuit transport registered"
#~ msgstr "Scramblesuit Transport registriert"

View File

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <epost@anotheragency.no>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/freedombox/plinth/"
@ -423,6 +423,7 @@ msgstr "Διαγραφή αρχείου %(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 "Υποβολή"
@ -739,7 +740,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 "Δικαιώματα"
@ -929,12 +930,132 @@ 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Διαγραφή αποθετηρίου Git <em>%(name)s</em>"
#: 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3514,19 +3621,19 @@ msgstr ""
"href=\"http://mumble.info\"> Πελάτες </a> για να συνδεθείτε με το 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr ""
"Η τοποθεσία θα είναι διαθέσιμη στο <a href =\"http://{0}\">http://{0} </a>"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "Το Site θα είναι διαθέσιμο στο <a href=\"https://{0}\">https://{0}</a>"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 "Αλλαγή κωδικού πρόσβασης για το <em>%(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 <em>%(username)s</em>"
msgstr "Επεξεργασία χρήστη %(username)s"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -7064,39 +7224,39 @@ msgstr ""
"Χρησιμοποιήστε τη <a href='%(change_password_url)s'> φόρμα αλλαγής κωδικού "
"πρόσβασης </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 "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 "Σύνδεση"

File diff suppressed because it is too large Load Diff

View File

@ -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 <ampbox@gmail.com>\n"
"Language-Team: Persian <https://hosted.weblate.org/projects/freedombox/"
@ -436,6 +436,7 @@ msgstr "پاک‌کردن %(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
#, fuzzy
msgid "Submit"
msgstr "فرستادن"
@ -723,7 +724,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 ""
@ -903,12 +904,127 @@ 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "پاک‌کردن ویکی یا وبلاگ <em>%(name)s</em>"
#: 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 "پاک‌کردن ویکی یا وبلاگ <em>%(name)s</em>"
msgid "Delete this repository permanently?"
msgstr "اتصال <strong>%(name)s</strong> را برای همیشه پاک می‌کنید؟"
#: 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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3332,23 +3434,23 @@ msgstr ""
"\"http://mumble.info\">نرم‌افزارهایی</a> برای اتصال به سرور مامبل برای "
"کامپیوتر رومیزی و دستگاه‌های اندروید در دسترس است."
#: 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(name)s</em>"
msgid "Edit User <em>%(username)s</em>"
msgstr "پاک‌کردن ویکی یا وبلاگ <em>%(name)s</em>"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <sunil@medhas.org>\n"
"Language-Team: Plinth Developers <freedombox-discuss@lists.alioth.debian."
@ -454,6 +454,7 @@ msgstr "DELETE %(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 "SUBMIT"
@ -754,7 +755,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
#, fuzzy
#| msgid "Transmission BitTorrent"
msgid "Permissions"
@ -938,12 +939,132 @@ 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 "CONFIGURATION UPDATED"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "DELETE WIKI OR BLOG <em>%(name)s</em>"
#: 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3539,23 +3646,23 @@ msgstr ""
"href=\"http://mumble.info\">CLIENTS</a> 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr "SITE WILL BE AVAILABLE AT <a href=\"http://{0}\">HTTP://{0}</a>"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "SITE WILL BE AVAILABLE AT <a href=\\\"https://{0}\\\">HTTPS://{0}</a>"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
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 <em>%(username)s</em>"
msgstr "EDIT USER <em>%(username)s</em>"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -7039,39 +7196,39 @@ msgstr ""
"USE THE <a href='%(change_password_url)s'>CHANGE PASSWORD FORM </a> 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 <em>%(username)s</em>"
#~ msgstr "EDIT USER <em>%(username)s</em>"
#~ msgid "Scramblesuit transport registered"
#~ msgstr "SCRAMBLESUIT TRANSPORT REGISTERED"

File diff suppressed because it is too large Load Diff

View File

@ -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 <xosem@disroot.org>\n"
"Language-Team: Galician <https://hosted.weblate.org/projects/freedombox/"
@ -390,6 +390,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 ""
@ -656,7 +657,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 ""
@ -814,12 +815,116 @@ 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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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"

View File

@ -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 <drashtipandya37@gmail.com>\n"
"Language-Team: Gujarati <https://hosted.weblate.org/projects/freedombox/"
@ -413,6 +413,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 "સમર્પિત કરો"
@ -689,7 +690,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 ""
@ -864,12 +865,122 @@ 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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 "એપ્લિકેશન સક્ષમ કરો"

View File

@ -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 <epost@anotheragency.no>\n"
"Language-Team: Hindi <https://hosted.weblate.org/projects/freedombox/plinth/"
@ -436,6 +436,7 @@ msgstr "पुरालेख हटाईये %(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 "जमा करें"
@ -734,7 +735,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 "अनुमतियाँ"
@ -917,12 +918,132 @@ 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "विकी और ब्लॉग हटाईये <em>%(name)s</em>"
#: 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 "विकी और ब्लॉग हटाईये <em>%(name)s</em
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 ""
@ -2094,16 +2211,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 "प्रलेखन"
@ -2641,7 +2748,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 "जावास्क्रिप्ट लाइसेंस जानकारी"
@ -3379,13 +3486,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 "ममबल एक खुला सोरस, कम विलंबता, एन्क्रिप्टेड अच्छा गुणवत्ता आवाज चैट सॉफ्टवेयर है."
#: 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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3395,21 +3502,21 @@ msgstr ""
"mumble.info\">Clients</a> अापके डेस्कटॉप और एंड्रॉयड डिवाइस से ममबल से कनेक्ट होने के "
"लिए उपलब्ध हैं."
#: 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr "साइट <a href=\"http://{0}\">http://{0}</a> पर उपलब्ध होगा"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "साइट<a href=\"https://{0}\">https://{0}</a>पर उपलब्ध होगा"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 ""
"<br /><br /> एडमिन ग्रुप के यूसरस सब सर्विसस पर लॉग इन कर सकेगें. 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 "<em>%(username)s</em> के लिया पासवर्ड बद
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 <em>%(username)s</em>"
msgstr "यूसर संपादित करें %(username)s"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -6853,39 +7013,39 @@ msgstr ""
"पासवर्ड बदलने के लिये <a href='%(change_password_url)s'> यइ पासवर्ड बदलना फोम्र </"
"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 "लॉग इन"

View File

@ -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ő <domag02@gmail.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/freedombox/"
@ -414,6 +414,7 @@ msgstr "%(name)s archívum törlése"
#: 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 "Küldés"
@ -707,7 +708,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 "Engedélyek"
@ -885,12 +886,132 @@ msgstr "IP címek és tartományok frissítése"
#: 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 "A beállítások frissültek"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "<em>%(name)s</em> 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 "<em>%(name)s</em> 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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3430,19 +3537,19 @@ msgstr ""
"kapcsolódhatsz. Mumble <a href=\"http://mumble.info\">kliensek</a> "
"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 <a href=\"http://{0}\">http://{0}</a>"
msgstr "Az oldal itt lesz elérhető: <a href=\"http://{0}\">http://{0}</a>"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "Az oldal itt lesz elérhető: <a href=\"https://{0}\">https://{0}</a>"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 "<em>%(username)s</em> 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 <em>%(username)s</em>"
msgstr "%(username)s felhasználó szerkesztése"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -7028,39 +7188,39 @@ msgstr ""
"A jelszó a <a href='%(change_password_url)s'>jelszómódosítás űrlap</a> "
"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"

View File

@ -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 <ButterflyOfFire@protonmail.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/freedombox/"
@ -417,6 +417,7 @@ msgstr "Hapus %(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 ""
@ -709,7 +710,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 ""
@ -888,12 +889,126 @@ 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Hapus Wiki atau Blog <em>%(name)s</em>"
#: 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(name)s</em>"
msgid "Edit User <em>%(username)s</em>"
msgstr "Hapus Wiki atau Blog <em>%(name)s</em>"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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"

View File

@ -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 <diegor@tiscali.it>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/freedombox/"
@ -418,6 +418,7 @@ msgstr "Cancella archivio %(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 "Invia"
@ -720,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 ""
@ -909,12 +910,132 @@ 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 "Configurazione caricata"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Cancellare Git Repository <em>%(name)s</em>"
#: 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3469,19 +3576,19 @@ msgstr ""
"64738 <a href=\"http://mumble.info\"> Sono disponibili dei client</a> 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr "Il sito sarà disponibile su <a href=\"http://{0}\">http{0}</a>"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "Il sito sarà disponibile au <a href=\"https://{0}\">HTTPS://{0}{0}</a>"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(name)s</em>"
msgid "Edit User <em>%(username)s</em>"
msgstr "Cancellare Git Repository <em>%(name)s</em>"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <yogesh@karnatakaeducation.org.in>\n"
"Language-Team: Kannada <https://hosted.weblate.org/projects/freedombox/"
@ -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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <pere-weblate@hungry.com>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/"
"freedombox/freedombox/nb_NO/>\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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Slette wiki eller blogg <em>%(name)s</em>"
#: 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3456,21 +3556,21 @@ msgstr ""
"\"http://mumble.info\">Klienter</a> 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr ""
"Nettstedet vil være tilgjengelig på <a href=\"http://{0}\">http://{0}</a>"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr ""
"Nettstedet vil bli tilgjengelig på <a href=\"https://{0}\">https://{0}</a>"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
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 <em>%(username)s</em>"
msgstr "Endre bruker %(username)s"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -6963,39 +7116,39 @@ msgstr ""
"Bruk <a href=\"%(change_password_url)s\">passordsendringsskjemaet</a> 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?"

View File

@ -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 <regmeplus@zoho.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/freedombox/"
@ -415,6 +415,7 @@ msgstr "Archief %(name)s verwijderen"
#: 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 "Invoeren"
@ -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 "Toegangsrechten"
@ -877,12 +878,132 @@ 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 "Configuratie bijgewerkt"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Verwijder Wiki of Blog <em>%(name)s</em>"
#: 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr ""
"De website zal beschikbaar zijn op <a href=\"http://{0}\">http://{0}</a>"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr ""
"De website zal beschikbaar zijn op <a href=\"https://{0}\">https://{0}</a>"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
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 <em>%(username)s</em>"
msgstr "Gebruiker <em>%(username)s</em> wijzigen"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -6789,39 +6948,39 @@ msgstr ""
"Gebruik het <a href='%(change_password_url)s'>wachtwoord wijzigingsformulier "
"</a> 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 <em>%(username)s</em>"
#~ msgstr "Gebruiker <em>%(username)s</em> wijzigen"
#~ msgid "Scramblesuit transport registered"
#~ msgstr "Scramblesuit transport geregisteerd"

View File

@ -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 <sto@tutanota.de>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/freedombox/plinth/"
@ -412,6 +412,7 @@ msgstr "Usuń archiwum %(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 "Wyślij"
@ -711,7 +712,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 ""
@ -891,12 +892,127 @@ msgstr "Odśwież adres IP i domeny"
#: 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 "Konfigurcja uaktualniona"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Usuń wiki lub blog <em>%(name)s</em>"
#: 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(name)s</em>"
msgid "Edit User <em>%(username)s</em>"
msgstr "Usuń wiki lub blog <em>%(name)s</em>"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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"

View File

@ -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 <mmsrs@sky.com>\n"
"POT-Creation-Date: 2020-10-05 18:59-0400\n"
"PO-Revision-Date: 2020-09-29 09:39+0000\n"
"Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/freedombox/"
"plinth/pt/>\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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr "O Servidor da descoberta do serviço está a correr"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 <em>%(service_name)s</em> 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 <a href=\"https://jitsi.org/\">Jitsi</a> (for computers) and <a "

View File

@ -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-17 09:36+0000\n"
"Last-Translator: Nikita Epifanov <nikgreens@protonmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/freedombox/"
@ -410,6 +410,7 @@ msgstr "Удалить архив %(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 "Отправить"
@ -708,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 "Разрешения"
@ -875,12 +876,132 @@ msgstr "Обновите IP-адреса и домены"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "Удалить репозиторий Git <em>%(name)s</em>"
#: 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3378,19 +3485,19 @@ msgstr ""
"64738. На <a href=\"http://mumble.info\"> Клиенты</a> вы можете найти "
"клиенты для вашего компьютера и 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr "Сайт будет доступен на <a href=\"http://{0}\">http://{0}</a>"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "Сайт будет доступен на <a href=\"https://{0}\">https://{0}</a>"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 "Изменение пароля для <em>%(username)s</em>"
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 <em>%(username)s</em>"
msgstr "Редактирование пользователя %(username)s"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -6886,39 +7046,39 @@ msgstr ""
"Используйте <a href='%(change_password_url)s'>форму смены пароля</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 "Сбой при удалении 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 "Войти"

View File

@ -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 <erikusaj@hotmail.com>\n"
"Language-Team: Slovenian <https://hosted.weblate.org/projects/freedombox/"
@ -438,6 +438,7 @@ msgstr "Brisanje arhiva %(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 "Oddaj"
@ -755,7 +756,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 ""
@ -927,12 +928,127 @@ 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 "Konfiguracija je posodobljena"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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"

View File

@ -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 <branislav.djalic@gmail.com>\n"
"Language-Team: Serbian <https://hosted.weblate.org/projects/freedombox/"
@ -412,6 +412,7 @@ msgstr "Izbriši Arhivu %(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 "Pošalji"
@ -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 ""
@ -866,12 +867,121 @@ msgstr "Osveži listu IP adresa i domena"
#: 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 "Konfiguracija sačuvana"
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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"

File diff suppressed because it is too large Load Diff

View File

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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 ""

View File

@ -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 <sunil@medhas.org>\n"
"Language-Team: Telugu <https://hosted.weblate.org/projects/freedombox/plinth/"
@ -423,6 +423,7 @@ msgstr "%(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 "సమర్పించు"
@ -712,7 +713,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 "అనుమతులు"
@ -893,12 +894,131 @@ msgstr "IP చిరునామా మరియు డొమైన్‌లన
#: 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "వికీ లేదా బ్లాగ్ తొలగించు <em>%(name)s</em>"
#: 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 "వికీ లేదా బ్లాగ్ తొలగించు <e
msgid "Delete this repository permanently?"
msgstr "<strong>%(name)s</strong> అనుసంధానం శాశ్వతంగా తొలగించు ?"
#: 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. <a "
@ -3363,21 +3469,21 @@ msgstr ""
"mumble.info\"> 1Clients </a> 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 ""
"<b>హెచ్చరిక:</b><br>మా 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr "సైట్ <a href=\"http://{0}\">http://{0}</a> వద్ద అందుబాటులో ఉంటుంది"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "సైట్ <a href=\"https://{0}\">https://{0}</a> వద్ద అందుబాటులో ఉంటుంది"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 "<em>%(username)s</em>కు పాస్‌వర్డ్ ను మా
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 <em>%(username)s</em>"
msgstr "%(username)s వినియోగదారుని మార్చు"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -6772,39 +6931,39 @@ msgstr ""
"పాస్వర్డ్ను మార్చడానికి <a href='%(change_password_url)s'> పాస్వర్డ్ రూపాన్ని మార్చండి </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 "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది."
@ -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 "లోనికి ప్రవేశించండి"

View File

@ -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 <hitowerdigit@hotmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/freedombox/"
"freedombox/tr/>\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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "<em>%(name)s</em> 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 "<em>%(name)s</em> 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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://mumble.info\">istemciler</a> 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr ""
"Site <a href=\"http://{0}\">http://{0}</a> 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr ""
"Site <a href=\"https://{0}\">https://{0}</a> 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 "<em>%(username)s</em> 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 <em>%(username)s</em>"
msgstr "%(username)s kullanıcısını düzenle"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
@ -6892,39 +7052,39 @@ msgstr ""
"Parolayı değiştirmek için <a href='%(change_password_url)s'>parola "
"değiştirme formunu</a> 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ç"

View File

@ -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 <prolinux@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/freedombox/"
@ -425,6 +425,7 @@ msgstr "Видалити архів %(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 "Надіслати"
@ -709,7 +710,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 ""
@ -881,12 +882,125 @@ 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 <em>calibre</em> 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 <em>%(name)s</em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> 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 <a href=\"http://{0}\">http://{0}</a>"
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 <a href=\"https://{0}\">https://{0}</a>"
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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 <em>%(username)s</em>"
msgstr ""
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> 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"

View File

@ -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 <tangzongxun@hotmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
@ -409,6 +409,7 @@ msgstr "删除名为 %(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 "提交"
@ -719,7 +720,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
#, fuzzy
#| msgid "Transmission BitTorrent"
msgid "Permissions"
@ -903,12 +904,132 @@ 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 <em>calibre</em> 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 <em>%(name)s</em>"
msgid "Delete calibre Library <em>%(name)s</em>"
msgstr "删除 wiki 页面或博客 <em> %(name)s </em>"
#: 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 页面或博客 <em> %(name)s </em>"
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. <a "
"href=\"http://mumble.info\">Clients</a> to connect to Mumble from your "
@ -3373,11 +3480,11 @@ msgstr ""
"您可以使用常规端口 64738 连接到您的 Mumble 服务器。您可以从桌面和 Android 设"
"备连接 Mumble <a href=\"http://mumble.info\">客户端</a>。"
#: 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 ""
"<b>警告:</b><br>您的 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 <a href=\"http://{0}\">http://{0}</a>"
msgstr "网站可从 <a href=\"http://{0}\"> http://{0}</a> 访问"
#: 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 <a href=\"https://{0}\">https://{0}</a>"
msgstr "网站可从 <a href=\"https://{0}\"> https://{0}</a> 访问"
#: 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 <a href=\"https://pagekite.net/wiki/Howto/"
"SshOverPageKite/\">instructions</a>"
@ -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 ""
"支持单一登录的服务。<br/><br/>管理员(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 "为<em>%(username)s</em>更改密码"
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 <em>%(username)s</em>"
msgstr "编辑用户 %(username)s"
#: plinth/modules/users/templates/users_update.html:19
#, python-format
msgid ""
"Use the <a href='%(change_password_url)s'>change password form </a> to "
"change the password."
msgstr "使用 <a href='%(change_password_url)s'>更改密码窗口</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 "删除 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 "登录"

View File

@ -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)

View File

@ -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():

View File

@ -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 <em>calibre</em> 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]])

View File

@ -0,0 +1,10 @@
##
## On all sites, provide calibre web interface on a path: /calibre
##
<Location /calibre>
ProxyPass http://localhost:8844/calibre
Include includes/freedombox-single-sign-on.conf
<IfModule mod_auth_pubtkt.c>
TKTAuthToken "admin" "calibre"
</IfModule>
</Location>

View File

@ -0,0 +1 @@
plinth.modules.calibre

View File

@ -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

View File

@ -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

View File

@ -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']
})

View File

@ -0,0 +1,30 @@
{% extends "base.html" %}
{% comment %}
# SPDX-License-Identifier: AGPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% block content %}
<h3>
{% blocktrans trimmed %}
Delete calibre Library <em>{{ name }}</em>
{% endblocktrans %}
</h3>
<p>
{% blocktrans trimmed %}
Delete this library permanently? All stored e-books and saved data will be
lost.
{% endblocktrans %}
</p>
<form class="form" method="post">
{% csrf_token %}
<input type="submit" class="btn btn-md btn-danger"
value="{% blocktrans %}Delete {{ name }}{% endblocktrans %}"/>
</form>
{% endblock %}

View File

@ -0,0 +1,59 @@
{% extends "app.html" %}
{% comment %}
# SPDX-License-Identifier: AGPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% block page_head %}
<style type="text/css">
.library-label {
display: inline-block;
width: 40%;
}
.list-group-item .btn {
margin: -5px 2px;
}
</style>
{% endblock %}
{% block configuration %}
{{ block.super }}
<h3>{% trans "Manage Libraries" %}</h3>
<div class="btn-toolbar">
<a href="{% url 'calibre:create-library' %}" class="btn btn-default"
role="button" title="{% trans 'Create Library' %}">
<span class="fa fa-plus" aria-hidden="true"></span>
{% trans 'Create Library' %}
</a>
</div>
<div class="row">
<div class="col-sm-6">
{% if not libraries %}
<p>{% trans 'No libraries available.' %}</p>
{% else %}
<div id="calibre-libraries" class="list-group">
{% for library in libraries %}
<div class="list-group-item clearfix">
<a href="{% url 'calibre:delete-library' library %}"
class="btn btn-default btn-sm pull-right" role="button"
title="{% blocktrans %}Delete library {{ library }}{% endblocktrans %}">
<span class="fa fa-trash-o" aria-hidden="true"></span>
</a>
<a class="library-label"
href="/calibre/#library_id={{ library }}&panel=book_list"
title="{% blocktrans %}Go to library {{ library }}{% endblocktrans %}">
{{ library }}
</a>
</div>
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% endblock %}

View File

View File

@ -0,0 +1 @@
Testing

View File

@ -0,0 +1,84 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Test module for calibre actions.
"""
import imp
import json
import pathlib
from unittest.mock import call, patch
import pytest
def _action_file():
"""Return the path to the 'calibre' actions file."""
current_directory = pathlib.Path(__file__).parent
return str(current_directory / '..' / '..' / '..' / '..' / 'actions' /
'calibre')
actions = imp.load_source('calibre', _action_file())
@pytest.fixture(name='call_action')
def fixture_call_action(tmpdir, capsys):
"""Run actions with custom root path."""
def _call_action(args, **kwargs):
actions.LIBRARIES_PATH = pathlib.Path(str(tmpdir))
with patch('argparse._sys.argv', ['calibre'] + args):
actions.main()
captured = capsys.readouterr()
return captured.out
return _call_action
@pytest.fixture(autouse=True)
def fixture_patch():
"""Patch some underlying methods."""
def side_effect(*args, **_kwargs):
if args[0][0] != 'calibredb':
return
path = pathlib.Path(args[0][2]) / 'metadata.db'
path.touch()
with patch('subprocess.call') as subprocess_call, \
patch('shutil.chown'):
subprocess_call.side_effect = side_effect
yield
def test_list_libraries(call_action):
"""Test listing libraries."""
assert json.loads(call_action(['list-libraries'])) == {'libraries': []}
call_action(['create-library', 'TestLibrary'])
expected_output = {'libraries': ['TestLibrary']}
assert json.loads(call_action(['list-libraries'])) == expected_output
@patch('shutil.chown')
def test_create_library(chown, call_action):
"""Test creating a library."""
call_action(['create-library', 'TestLibrary'])
library = actions.LIBRARIES_PATH / 'TestLibrary'
assert (library / 'metadata.db').exists()
assert library.stat().st_mode == 0o40755
expected_output = {'libraries': ['TestLibrary']}
assert json.loads(call_action(['list-libraries'])) == expected_output
chown.assert_has_calls([call(library.parent.parent, 'root', 'root')])
def test_delete_library(call_action):
"""Test deleting a library."""
call_action(['create-library', 'TestLibrary'])
call_action(['delete-library', 'TestLibrary'])
assert json.loads(call_action(['list-libraries'])) == {'libraries': []}
with pytest.raises(FileNotFoundError):
call_action(['delete-library', 'TestLibrary'])

View File

@ -0,0 +1,180 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Functional, browser based tests for calibre app.
"""
import pathlib
import time
import pytest
from plinth.tests import functional
pytestmark = [pytest.mark.apps, pytest.mark.sso, pytest.mark.calibre]
@pytest.fixture(scope='module', autouse=True)
def fixture_background(session_browser):
"""Login and install the app."""
functional.login(session_browser)
functional.install(session_browser, 'calibre')
yield
functional.app_disable(session_browser, 'calibre')
def test_enable_disable(session_browser):
"""Test enabling the app."""
functional.app_disable(session_browser, 'calibre')
functional.app_enable(session_browser, 'calibre')
assert functional.service_is_running(session_browser, 'calibre')
assert functional.is_available(session_browser, 'calibre')
functional.app_disable(session_browser, 'calibre')
assert not functional.service_is_running(session_browser, 'calibre')
assert not functional.is_available(session_browser, 'calibre')
def test_add_delete_library(session_browser):
"""Test adding/deleting a new library."""
functional.app_enable(session_browser, 'calibre')
_delete_library(session_browser, 'FunctionalTest', True)
_add_library(session_browser, 'FunctionalTest')
assert _is_library_available(session_browser, 'FunctionalTest')
_delete_library(session_browser, 'FunctionalTest')
assert not _is_library_available(session_browser, 'FunctionalTest')
def test_add_delete_book(session_browser):
"""Test adding/delete book in the library."""
functional.app_enable(session_browser, 'calibre')
_add_library(session_browser, 'FunctionalTest')
_delete_book(session_browser, 'FunctionalTest', 'sample.txt', True)
_add_book(session_browser, 'FunctionalTest', 'sample.txt')
assert _is_book_available(session_browser, 'FunctionalTest', 'sample.txt')
_delete_book(session_browser, 'FunctionalTest', 'sample.txt')
assert not _is_book_available(session_browser, 'FunctionalTest',
'sample.txt')
@pytest.mark.backups
def test_backup(session_browser):
"""Test backing up and restoring."""
functional.app_enable(session_browser, 'calibre')
_add_library(session_browser, 'FunctionalTest')
functional.backup_create(session_browser, 'calibre', 'test_calibre')
_delete_library(session_browser, 'FunctionalTest')
functional.backup_restore(session_browser, 'calibre', 'test_calibre')
assert _is_library_available(session_browser, 'FunctionalTest')
def _add_library(browser, name):
"""Add a new library."""
if _is_library_available(browser, name):
return
browser.find_link_by_href(
'/plinth/apps/calibre/library/create/').first.click()
browser.find_by_id('id_calibre-name').fill(name)
functional.submit(browser)
def _delete_library(browser, name, ignore_missing=False):
"""Delete a library."""
functional.nav_to_module(browser, 'calibre')
link = browser.find_link_by_href(
f'/plinth/apps/calibre/library/{name}/delete/')
if not link:
if ignore_missing:
return
raise ValueError('Library not found')
link.first.click()
functional.submit(browser)
def _is_library_available(browser, name):
"""Return whether a library is present in the list of libraries."""
functional.nav_to_module(browser, 'calibre')
link = browser.find_link_by_href(
f'/plinth/apps/calibre/library/{name}/delete/')
return bool(link)
def _visit_library(browser, name):
"""Open the page for the library."""
functional.visit(browser, '/calibre/')
# Calibre interface will be available a short time after restarting the
# service.
def _service_available():
unavailable_xpath = '//h1[contains(text(), "Service Unavailable")]'
available = not browser.find_by_xpath(unavailable_xpath)
if not available:
time.sleep(0.5)
functional.visit(browser, '/calibre/')
return available
functional.eventually(_service_available)
functional.eventually(browser.find_by_css,
args=[f'.calibre-push-button[data-lid="{name}"]'])
link = browser.find_by_css(f'.calibre-push-button[data-lid="{name}"]')
if not link:
raise ValueError('Library not found')
link.first.click()
functional.eventually(browser.find_by_css, ['.book-list-cover-grid'])
def _add_book(browser, library_name, book_name):
"""Add a book to the library through Calibre interface."""
_visit_library(browser, library_name)
add_button = browser.find_by_css('a[data-button-icon="plus"]')
add_button.first.click()
functional.eventually(browser.find_by_xpath,
['//span[contains(text(), "Add books")]'])
browser.execute_script(
'''document.querySelector('input[type="file"]').setAttribute(
'name', 'test-book-upload');''')
file_path = pathlib.Path(__file__).parent / f'data/{book_name}'
browser.attach_file('test-book-upload', [str(file_path)])
functional.eventually(browser.find_by_xpath,
['//span[contains(text(), "Added successfully")]'])
def _delete_book(browser, library_name, book_name, ignore_missing=False):
"""Delete a book from the library through Calibre interface."""
_visit_library(browser, library_name)
book_name = book_name.partition('.')[0]
book = browser.find_by_xpath(f'//a[contains(@title, "{book_name}")]')
if not book:
if ignore_missing:
return
raise Exception('Book not found')
book.first.click()
delete_button = browser.find_by_css('a[data-button-icon="trash"]')
delete_button.first.click()
dialog = browser.find_by_id('modal-container').first
functional.eventually(lambda: dialog.visible)
ok_button = browser.find_by_xpath('//span[contains(text(), "OK")]')
ok_button.first.click()
def _is_book_available(browser, library_name, book_name):
"""Return whether a book is present in Calibre interface."""
_visit_library(browser, library_name)
book_name = book_name.partition('.')[0]
book = browser.find_by_xpath(f'//a[contains(@title, "{book_name}")]')
return bool(book)

View File

@ -0,0 +1,146 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Tests for calibre views.
"""
from unittest.mock import call, patch
import pytest
from django import urls
from django.contrib.messages.storage.fallback import FallbackStorage
from django.http.response import Http404
from plinth import actions, module_loader
from plinth.modules.calibre import views
# For all tests, use plinth.urls instead of urls configured for testing
pytestmark = pytest.mark.urls('plinth.urls')
@pytest.fixture(autouse=True, scope='module')
def fixture_calibre_urls():
"""Make sure calibre app's URLs are part of plinth.urls."""
with patch('plinth.module_loader._modules_to_load', new=[]) as modules, \
patch('plinth.urls.urlpatterns', new=[]):
modules.append('plinth.modules.calibre')
module_loader.include_urls()
yield
@pytest.fixture(autouse=True)
def calibre_patch():
"""Patch calibre methods."""
with patch('plinth.modules.calibre.list_libraries') as list_libraries:
list_libraries.return_value = ['TestExistingLibrary']
yield
def make_request(request, view, **kwargs):
"""Make request with a message storage."""
setattr(request, 'session', 'session')
messages = FallbackStorage(request)
setattr(request, '_messages', messages)
response = view(request, **kwargs)
return response, messages
@patch('plinth.modules.calibre.create_library')
def test_create_library(create_library, rf):
"""Test that create library view works."""
form_data = {'calibre-name': 'TestLibrary'}
request = rf.post(urls.reverse('calibre:create-library'), data=form_data)
view = views.CreateLibraryView.as_view()
response, messages = make_request(request, view)
assert response.status_code == 302
assert response.url == urls.reverse('calibre:index')
assert list(messages)[0].message == 'Library created.'
create_library.assert_has_calls([call('TestLibrary')])
@patch('plinth.modules.calibre.create_library')
def test_create_library_failed(create_library, rf):
"""Test that create library fails as expected."""
create_library.side_effect = actions.ActionError('calibre', 'TestOutput',
'TestError')
form_data = {'calibre-name': 'TestLibrary'}
request = rf.post(urls.reverse('calibre:create-library'), data=form_data)
view = views.CreateLibraryView.as_view()
response, messages = make_request(request, view)
assert response.status_code == 302
assert response.url == urls.reverse('calibre:index')
assert list(messages)[0].message == \
'An error occurred while creating the library. TestError'
def test_create_library_existing_library(rf):
"""Test that create library errors out for an existing library name."""
form_data = {'calibre-name': 'TestExistingLibrary'}
request = rf.post(urls.reverse('calibre:create-library'), data=form_data)
view = views.CreateLibraryView.as_view()
response, _ = make_request(request, view)
assert response.context_data['form'].errors['name'][
0] == 'A library with this name already exists.'
assert response.status_code == 200
def test_create_library_invalid_name(rf):
"""Test that create library errors out for invalid name."""
form_data = {'calibre-name': 'Invalid Library'}
request = rf.post(urls.reverse('calibre:create-library'), data=form_data)
view = views.CreateLibraryView.as_view()
response, _ = make_request(request, view)
assert response.context_data['form'].errors['name'][
0] == 'Enter a valid value.'
assert response.status_code == 200
@patch('plinth.modules.calibre.app')
def test_delete_library_confirmation_view(_app, rf):
"""Test that deleting library confirmation shows correct name."""
response, _ = make_request(rf.get(''), views.delete_library,
name='TestExistingLibrary')
assert response.status_code == 200
assert response.context_data['name'] == 'TestExistingLibrary'
@patch('plinth.modules.calibre.delete_library')
@patch('plinth.modules.calibre.app')
def test_delete_library(_app, delete_library, rf):
"""Test that deleting a library works."""
response, messages = make_request(rf.post(''), views.delete_library,
name='TestExistingLibrary')
assert response.status_code == 302
assert response.url == urls.reverse('calibre:index')
assert list(messages)[0].message == 'TestExistingLibrary deleted.'
delete_library.assert_has_calls([call('TestExistingLibrary')])
@patch('plinth.modules.calibre.delete_library')
def test_delete_library_error(delete_library, rf):
"""Test that deleting a library shows error when operation fails."""
delete_library.side_effect = actions.ActionError('calibre', 'TestInput',
'TestError')
response, messages = make_request(rf.post(''), views.delete_library,
name='TestExistingLibrary')
assert response.status_code == 302
assert response.url == urls.reverse('calibre:index')
assert list(messages)[0].message == \
'Could not delete TestExistingLibrary: '\
"('calibre', 'TestInput', 'TestError')"
def test_delete_library_non_existing(rf):
"""Test that deleting a library shows error when operation fails."""
with pytest.raises(Http404):
make_request(rf.post(''), views.delete_library,
name='TestNonExistingLibrary')
with pytest.raises(Http404):
make_request(rf.get(''), views.delete_library,
name='TestNonExistingLibrary')

View File

@ -0,0 +1,16 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
URLs for the calibre module.
"""
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^apps/calibre/$', views.CalibreAppView.as_view(), name='index'),
url(r'^apps/calibre/library/create/$', views.CreateLibraryView.as_view(),
name='create-library'),
url(r'^apps/calibre/library/(?P<name>[a-zA-Z0-9_.-]+)/delete/$',
views.delete_library, name='delete-library'),
]

View File

@ -0,0 +1,75 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Views for the calibre module.
"""
from django.contrib import messages
from django.contrib.messages.views import SuccessMessageMixin
from django.http import Http404
from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.urls import reverse_lazy
from django.utils.translation import ugettext as _
from django.views.generic.edit import FormView
from plinth import actions, views
from plinth.modules import calibre
from . import forms
class CalibreAppView(views.AppView):
"""Serve configuration form."""
app_id = 'calibre'
template_name = 'calibre.html'
def get_context_data(self, **kwargs):
"""Return additional context for rendering the template."""
context = super().get_context_data(**kwargs)
context['libraries'] = calibre.list_libraries()
return context
class CreateLibraryView(SuccessMessageMixin, FormView):
"""View to create an empty library."""
form_class = forms.CreateLibraryForm
prefix = 'calibre'
template_name = 'form.html'
success_url = reverse_lazy('calibre:index')
success_message = _('Library created.')
def form_valid(self, form):
"""Create the library on valid form submission."""
try:
calibre.create_library(form.cleaned_data['name'])
except actions.ActionError as error:
self.success_message = ''
error_text = error.args[2].split('\n')[0]
messages.error(
self.request, "{0} {1}".format(
_('An error occurred while creating the library.'),
error_text))
return super().form_valid(form)
def delete_library(request, name):
"""View to delete a library."""
if name not in calibre.list_libraries():
raise Http404
if request.method == 'POST':
try:
calibre.delete_library(name)
messages.success(request, _('{name} deleted.').format(name=name))
except actions.ActionError as error:
messages.error(
request,
_('Could not delete {name}: {error}').format(
name=name, error=error))
return redirect(reverse_lazy('calibre:index'))
return TemplateResponse(request, 'calibre-delete-library.html', {
'title': calibre.app.info.name,
'name': name
})

View File

@ -115,6 +115,10 @@ def get_domain():
def get_domains():
"""Return a list with the configured domains."""
# If not installed, return empty. But work while installing too.
if not pathlib.Path('/etc/coturn/freedombox.conf').exists():
return []
domain = get_domain()
if domain:
return [domain]

View File

@ -9,9 +9,9 @@ from plinth import actions
from plinth import app as app_module
from plinth import cfg, menu
from plinth.modules.names.components import DomainType
from plinth.modules.users.components import UsersAndGroups
from plinth.signals import domain_added
from plinth.utils import format_lazy
from plinth.modules.users.components import UsersAndGroups
from .manifest import backup # noqa, pylint: disable=unused-import
@ -76,7 +76,6 @@ class DynamicDNSApp(app_module.App):
domain_type='domain-type-dynamic',
name=current_status['dynamicdns_domain'],
services='__all__')
self.set_enabled(True)
def is_enabled(self):
"""Return whether all the leader components are enabled.

View File

@ -3,23 +3,30 @@
FreedomBox app to configure Mumble server.
"""
import pathlib
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from plinth import actions
from plinth import app as app_module
from plinth import frontpage, menu
from plinth.daemon import Daemon
from plinth.modules import names
from plinth.modules.firewall.components import Firewall
from plinth.modules.letsencrypt.components import LetsEncrypt
from plinth.modules.users.components import UsersAndGroups
from .manifest import backup, clients # noqa, pylint: disable=unused-import
version = 1
version = 2
managed_services = ['mumble-server']
managed_packages = ['mumble-server']
managed_paths = [pathlib.Path('/var/lib/mumble-server')]
_description = [
_('Mumble is an open source, low-latency, encrypted, high quality '
'voice chat software.'),
@ -61,6 +68,15 @@ class MumbleApp(app_module.App):
ports=['mumble-plinth'], is_external=True)
self.add(firewall)
letsencrypt = LetsEncrypt(
'letsencrypt-mumble', domains=get_domains,
daemons=managed_services, should_copy_certificates=True,
private_key_path='/var/lib/mumble-server/privkey.pem',
certificate_path='/var/lib/mumble-server/fullchain.pem',
user_owner='mumble-server', group_owner='mumble-server',
managing_app='mumble')
self.add(letsencrypt)
daemon = Daemon(
'daemon-mumble', managed_services[0],
listen_ports=[(64738, 'tcp4'), (64738, 'tcp6'), (64738, 'udp4'),
@ -75,4 +91,42 @@ class MumbleApp(app_module.App):
def setup(helper, old_version=None):
"""Install and configure the module."""
helper.install(managed_packages)
helper.call('post', app.enable)
helper.call('post', actions.superuser_run, 'mumble', ['setup'])
if not old_version:
helper.call('post', app.enable)
app.get_component('letsencrypt-mumble').setup_certificates()
def get_available_domains():
"""Return an iterator with all domains able to have a certificate."""
return (domain.name for domain in names.components.DomainName.list()
if domain.domain_type.can_have_certificate)
def set_domain(domain):
"""Set the TLS domain by writing a file to data directory."""
if domain:
actions.superuser_run('mumble', ['set-domain', domain])
def get_domain():
"""Read TLS domain from config file select first available if none."""
domain = actions.superuser_run('mumble', ['get-domain']).strip()
if not domain:
domain = next(get_available_domains(), None)
set_domain(domain)
return domain
def get_domains():
"""Return a list with the configured domains."""
if not pathlib.Path('/var/lib/mumble-server/').exists():
return []
domain = get_domain()
if domain:
return [domain]
return []

View File

@ -6,9 +6,25 @@ Mumble server configuration form
from django import forms
from django.utils.translation import ugettext_lazy as _
from plinth.modules import mumble
def get_domain_choices():
"""Double domain entries for inclusion in the choice field."""
return ((domain, domain) for domain in mumble.get_available_domains())
class MumbleForm(forms.Form):
"""Mumble server configuration"""
domain = forms.ChoiceField(
choices=get_domain_choices,
label=_('TLS domain'),
help_text=_(
'Select a domain to use TLS with. If the list is empty, please '
'configure at least one domain with certificates.'),
required=False,
)
super_user_password = forms.CharField(
max_length=20,
label=_('Set SuperUser Password'),

View File

@ -3,6 +3,7 @@ from django.contrib import messages
from django.utils.translation import ugettext_lazy as _
from plinth import actions
from plinth.modules import mumble
from plinth.modules.mumble.forms import MumbleForm
from plinth.views import AppView
@ -11,10 +12,21 @@ class MumbleAppView(AppView):
app_id = 'mumble'
form_class = MumbleForm
def get_initial(self):
"""Return the values to fill in the form."""
initial = super().get_initial()
initial['domain'] = mumble.get_domain()
return initial
def form_valid(self, form):
"""Apply new superuser password if it exists"""
new_config = form.cleaned_data
if mumble.get_domain() != new_config['domain']:
mumble.set_domain(new_config['domain'])
mumble.app.get_component('letsencrypt-mumble').setup_certificates()
messages.success(self.request, _('Configuration updated'))
password = new_config.get('super_user_password')
if password:
actions.run_as_user(

View File

@ -81,7 +81,9 @@ class PagekiteApp(app_module.App):
self.add(daemon)
# Register kite name with Name Services module.
utils.update_names_module(is_enabled=self.is_enabled())
setup_helper = globals()['setup_helper']
if setup_helper.get_state() != 'needs-setup' and self.is_enabled():
utils.update_names_module(is_enabled=True)
def enable(self):
"""Send domain signals after enabling the app."""

View File

@ -20,6 +20,9 @@ KITE_SECRET = '@kitesecret'
# Augeas base path for Pagekite configuration files
CONF_PATH = '/files/etc/pagekite.d'
# Kite name used by default in config. Should be treated as unconfigured.
UNCONFIGURED_KITE = 'NAME.pagekite.me'
# Parameters that get stored in configuration service_on entries
SERVICE_PARAMS = [
'protocol', 'kitename', 'backend_host', 'backend_port', 'secret'
@ -178,7 +181,7 @@ def update_names_module(is_enabled=None):
service for service, value in config['predefined_services'].items()
if value
]
if config['kite_name']:
if config['kite_name'] and config['kite_name'] != UNCONFIGURED_KITE:
domain_added.send_robust(sender='pagekite',
domain_type='domain-type-pagekite',
name=config['kite_name'],

View File

@ -134,6 +134,10 @@ def get_domain():
def get_domains():
"""Return a list with the configured domain for quassel."""
# If not installed, return empty. But work while installing too.
if not pathlib.Path('/var/lib/quassel/').exists():
return []
domain = get_domain()
if domain:
return [domain]

View File

@ -87,7 +87,9 @@ class TorApp(app_module.App):
self.add(users_and_groups)
# Register hidden service name with Name Services module.
if self.is_enabled() and app_is_running(self):
setup_helper = globals()['setup_helper']
if setup_helper.get_state() != 'needs-setup' and \
self.is_enabled() and app_is_running(self):
status = utils.get_status(initialized=False)
hostname = status['hs_hostname']
services = [int(port['virtport']) for port in status['hs_ports']]

View File

@ -45,7 +45,9 @@ app = None
BACKPORTS_REQUESTED_KEY = 'upgrades_backports_requested'
SOURCES_LIST = '/etc/apt/sources.list.d/freedombox2.list'
SOURCES_LIST = '/etc/apt/sources.list'
BACKPORTS_SOURCES_LIST = '/etc/apt/sources.list.d/freedombox2.list'
logger = logging.getLogger(__name__)
@ -72,8 +74,10 @@ class UpgradesApp(app_module.App):
self._show_new_release_notification()
# Check every day for setting up apt backport sources, every 3 minutes
# in debug mode.
# Check every day (every 3 minutes in debug mode):
# - backports becomes available -> configure it if selected by user
# - new stable release becomes available -> perform dist-upgrade if
# updates are enabled
interval = 180 if cfg.develop else 24 * 3600
glib.schedule(interval, setup_repositories)
@ -146,7 +150,7 @@ def disable():
def setup_repositories(data):
"""Setup apt backport repositories."""
"""Setup apt repositories for backports or new stable release."""
if is_backports_requested():
command = ['setup-repositories']
if cfg.develop:
@ -170,7 +174,7 @@ def set_backports_requested(requested):
def is_backports_enabled():
"""Return whether backports are enabled in the system configuration."""
return os.path.exists(SOURCES_LIST)
return os.path.exists(BACKPORTS_SOURCES_LIST)
def get_current_release():

View File

@ -6,6 +6,7 @@ import re
from django import forms
from django.contrib import auth, messages
from django.contrib.auth.forms import SetPasswordForm, UserCreationForm
from django.contrib.auth.hashers import check_password
from django.contrib.auth.models import Group, User
from django.core import validators
from django.core.exceptions import ValidationError
@ -65,15 +66,33 @@ class UsernameValidator(validators.RegexValidator):
USERNAME_FIELD = forms.CharField(
label=ugettext_lazy('Username'),
max_length=150, validators=[UsernameValidator()],
label=ugettext_lazy('Username'), max_length=150,
validators=[UsernameValidator()],
help_text=ugettext_lazy('Required. 150 characters or fewer. English '
'letters, digits and @/./-/_ only.'))
class PasswordConfirmForm(forms.Form):
"""Password confirmation form."""
confirm_password = forms.CharField(
widget=forms.PasswordInput,
label=ugettext_lazy('Authorization Password'), help_text=ugettext_lazy(
'Enter your current password to authorize account modifications.'))
def clean_confirm_password(self):
"""Check that current user's password matches."""
confirm_password = self.cleaned_data['confirm_password']
password_matches = check_password(confirm_password,
self.request.user.password)
if not password_matches:
raise ValidationError(_('Invalid password.'), code='invalid')
return confirm_password
class CreateUserForm(ValidNewUsernameCheckMixin,
plinth.forms.LanguageSelectionFormMixin,
UserCreationForm):
PasswordConfirmForm, UserCreationForm):
"""Custom user create form.
Include options to add user to groups.
@ -95,7 +114,8 @@ class CreateUserForm(ValidNewUsernameCheckMixin,
class Meta(UserCreationForm.Meta):
"""Metadata to control automatic form building."""
fields = ('username', 'password1', 'password2', 'groups', 'language')
fields = ('username', 'password1', 'password2', 'groups', 'language',
'confirm_password')
def __init__(self, request, *args, **kwargs):
"""Initialize the form with extra request argument."""
@ -104,7 +124,7 @@ class CreateUserForm(ValidNewUsernameCheckMixin,
self.fields['username'].widget.attrs.update({
'autofocus': 'autofocus',
'autocapitalize': 'none',
'autocomplete': 'username'
'autocomplete': 'username',
})
def save(self, commit=True):
@ -114,26 +134,34 @@ class CreateUserForm(ValidNewUsernameCheckMixin,
if commit:
user.userprofile.language = self.cleaned_data['language']
user.userprofile.save()
auth_username = self.request.user.username
confirm_password = self.cleaned_data['confirm_password']
process_input = '{0}\n{1}'.format(self.cleaned_data['password1'],
confirm_password).encode()
try:
actions.superuser_run(
'users',
['create-user', user.get_username()],
input=self.cleaned_data['password1'].encode())
except ActionError:
messages.error(self.request, _('Creating LDAP user failed.'))
actions.superuser_run('users', [
'create-user',
user.get_username(), '--auth-user', auth_username
], input=process_input)
except ActionError as error:
messages.error(
self.request,
_('Creating LDAP user failed: {error}'.format(
error=error)))
for group in self.cleaned_data['groups']:
try:
actions.superuser_run(
'users',
['add-user-to-group',
user.get_username(), group])
except ActionError:
actions.superuser_run('users', [
'add-user-to-group',
user.get_username(), group, '--auth-user',
auth_username
], input=confirm_password.encode())
except ActionError as error:
messages.error(
self.request,
_('Failed to add new user to {group} group.').format(
group=group))
_('Failed to add new user to {group} group: {error}').
format(group=group, error=error))
group_object, created = Group.objects.get_or_create(name=group)
group_object.user_set.add(user)
@ -141,7 +169,7 @@ class CreateUserForm(ValidNewUsernameCheckMixin,
return user
class UserUpdateForm(ValidNewUsernameCheckMixin,
class UserUpdateForm(ValidNewUsernameCheckMixin, PasswordConfirmForm,
plinth.forms.LanguageSelectionFormMixin, forms.ModelForm):
"""When user info is changed, also updates LDAP user."""
username = USERNAME_FIELD
@ -158,7 +186,8 @@ class UserUpdateForm(ValidNewUsernameCheckMixin,
class Meta:
"""Metadata to control automatic form building."""
fields = ('username', 'groups', 'ssh_keys', 'language', 'is_active')
fields = ('username', 'groups', 'ssh_keys', 'language', 'is_active',
'confirm_password')
model = User
widgets = {
'groups': plinth.forms.CheckboxSelectMultipleWithReadOnly(),
@ -210,9 +239,11 @@ class UserUpdateForm(ValidNewUsernameCheckMixin,
user = super(UserUpdateForm, self).save(commit=False)
# Profile is auto saved with user object
user.userprofile.language = self.cleaned_data['language']
auth_username = self.request.user.username
confirm_password = self.cleaned_data['confirm_password']
# If user is updating their own profile then only translate the pages
if self.username == self.request.user.username:
if self.username == auth_username:
set_language(self.request, None, user.userprofile.language)
if commit:
@ -240,8 +271,9 @@ class UserUpdateForm(ValidNewUsernameCheckMixin,
try:
actions.superuser_run('users', [
'remove-user-from-group',
user.get_username(), old_group
])
user.get_username(), old_group, '--auth-user',
auth_username
], input=confirm_password.encode())
except ActionError:
messages.error(self.request,
_('Failed to remove user from group.'))
@ -251,18 +283,23 @@ class UserUpdateForm(ValidNewUsernameCheckMixin,
try:
actions.superuser_run('users', [
'add-user-to-group',
user.get_username(), new_group
])
user.get_username(), new_group, '--auth-user',
auth_username
], input=confirm_password.encode())
except ActionError:
messages.error(self.request,
_('Failed to add user to group.'))
try:
actions.superuser_run('ssh', [
'set-keys', '--username',
user.get_username(), '--keys',
self.cleaned_data['ssh_keys'].strip()
])
'set-keys',
'--username',
user.get_username(),
'--keys',
self.cleaned_data['ssh_keys'].strip(),
'--auth-user',
auth_username,
], input=confirm_password.encode())
except ActionError:
messages.error(self.request, _('Unable to set SSH keys.'))
@ -273,10 +310,13 @@ class UserUpdateForm(ValidNewUsernameCheckMixin,
else:
status = 'inactive'
try:
actions.superuser_run(
'users',
['set-user-status',
user.get_username(), status])
actions.superuser_run('users', [
'set-user-status',
user.get_username(),
status,
'--auth-user',
auth_username,
], input=confirm_password.encode())
except ActionError:
messages.error(self.request,
_('Failed to change user status.'))
@ -297,7 +337,7 @@ class UserUpdateForm(ValidNewUsernameCheckMixin,
return cleaned_data
class UserChangePasswordForm(SetPasswordForm):
class UserChangePasswordForm(PasswordConfirmForm, SetPasswordForm):
"""Custom form that also updates password for LDAP users."""
def __init__(self, request, *args, **kwargs):
@ -310,12 +350,16 @@ class UserChangePasswordForm(SetPasswordForm):
def save(self, commit=True):
"""Save the user model and change LDAP password as well."""
user = super(UserChangePasswordForm, self).save(commit)
auth_username = self.request.user.username
if commit:
process_input = '{0}\n{1}'.format(
self.cleaned_data['new_password1'],
self.cleaned_data['confirm_password']).encode()
try:
actions.superuser_run(
'users', ['set-user-password',
user.get_username()],
input=self.cleaned_data['new_password1'].encode())
actions.superuser_run('users', [
'set-user-password',
user.get_username(), '--auth-user', auth_username
], input=process_input)
except ActionError:
messages.error(self.request,
_('Changing LDAP user password failed.'))
@ -341,19 +385,25 @@ class FirstBootForm(ValidNewUsernameCheckMixin, auth.forms.UserCreationForm):
try:
actions.superuser_run(
'users',
['create-user', user.get_username()],
['create-user',
user.get_username(), '--auth-user', ''],
input=self.cleaned_data['password1'].encode())
except ActionError:
messages.error(self.request, _('Creating LDAP user failed.'))
except ActionError as error:
messages.error(
self.request,
_('Creating LDAP user failed: {error}'.format(
error=error)))
try:
actions.superuser_run(
'users',
['add-user-to-group',
user.get_username(), 'admin'])
except ActionError:
messages.error(self.request,
_('Failed to add new user to admin group.'))
except ActionError as error:
messages.error(
self.request,
_('Failed to add new user to admin group: {error}'.format(
error=error)))
# Create initial Django groups
for group_choice in UsersAndGroups.get_group_choices():
@ -368,9 +418,11 @@ class FirstBootForm(ValidNewUsernameCheckMixin, auth.forms.UserCreationForm):
# Restrict console login to users in admin or sudo group
try:
set_restricted_access(True)
except Exception:
messages.error(self.request,
_('Failed to restrict console access.'))
except Exception as error:
messages.error(
self.request,
_('Failed to restrict console access: {error}'.format(
error=error)))
return user

View File

@ -8,6 +8,8 @@
{% block content %}
<h3>{%trans "Create User" %}</h3>
<form class="form" method="post">
{% csrf_token %}

View File

@ -10,21 +10,57 @@
{% block content %}
<h2>{% trans "Administrator Account" %}</h2>
<p>
{% blocktrans trimmed %}
Choose a username and password to access this web interface.
The password can be changed later. This user will be granted
administrative privileges. Other users can be added later.
{% endblocktrans %}
</p>
{% if not admin_users %}
<p>
{% blocktrans trimmed %}
Choose a username and password to access this web interface.
The password can be changed later. This user will be granted
administrative privileges. Other users can be added later.
{% endblocktrans %}
</p>
<form class="form" method="post">
{% csrf_token %}
<form class="form" method="post">
{% csrf_token %}
{{ form|bootstrap }}
{{ form|bootstrap }}
<input type="submit" class="btn btn-primary"
value="{% trans "Create Account" %}"/>
</form>
<input type="submit" class="btn btn-primary"
value="{% trans "Create Account" %}"/>
</form>
{% else %}
<div class="alert alert-danger" role="alert">
{% blocktrans trimmed %}
An administrator account already exists.
{% endblocktrans %}
</div>
<p>
{% blocktrans trimmed %}
The following administrator accounts exist in the system.
{% endblocktrans %}
</p>
<ul>
{% for user in admin_users %}
<li>{{ user }} </li>
{% endfor %}
</ul>
<p>
{% 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 %}
</p>
<form class="form" method="post">
{% csrf_token %}
<input type="submit" class="btn btn-link" name="skip"
value="{% trans "Skip this step" %}"/>
</form>
{% endif %}
{% endblock %}

View File

@ -7,7 +7,11 @@
{% load i18n %}
{% block content %}
<h3>{{ object.username }}</h3>
<h3>
{% blocktrans trimmed with username=object.username %}
Edit User <em>{{ username }}</em>
{% endblocktrans %}
</h3>
<p>
{% url 'users:change_password' object.username as change_password_url %}

View File

@ -16,6 +16,7 @@ import pytest
from plinth import action_utils
from plinth.modules import security
from plinth.tests import config as test_config
_cleanup_users = None
_cleanup_groups = None
@ -74,8 +75,8 @@ def _try_login_to_ssh(username, password, returncode=0):
def _action_file():
"""Return the path to the 'users' actions file."""
current_directory = pathlib.Path(__file__).parent
return str(
current_directory / '..' / '..' / '..' / '..' / 'actions' / 'users')
return str(current_directory / '..' / '..' / '..' / '..' / 'actions' /
'users')
@pytest.fixture(name='disable_restricted_access', autouse=True)
@ -111,8 +112,8 @@ def fixture_auto_cleanup_users_groups(needs_root, load_cfg):
def _call_action(arguments, **kwargs):
"""Call the action script."""
kwargs['stdout'] = kwargs.get('stdout', subprocess.DEVNULL)
kwargs['stderr'] = kwargs.get('stderr', subprocess.DEVNULL)
kwargs['stdout'] = kwargs.get('stdout', subprocess.PIPE)
kwargs['stderr'] = kwargs.get('stderr', subprocess.PIPE)
kwargs['check'] = kwargs.get('check', True)
return subprocess.run([_action_file()] + arguments, **kwargs)
@ -120,13 +121,19 @@ def _call_action(arguments, **kwargs):
def _create_user(username=None, groups=None):
"""Call the action script for creating a new user."""
username = username or _random_string()
password = _random_string()
password = username + '_passwd'
admin_user, admin_password = _get_admin_user_password()
_call_action(['create-user', username], input=password.encode())
process_input = "{0}\n{1}".format(password, admin_password).encode()
_call_action(['create-user', '--auth-user', admin_user, username],
input=process_input)
if groups:
for group in groups:
_call_action(['add-user-to-group', username, group])
admin_user, admin_password = _get_admin_user_password()
_call_action([
'add-user-to-group', '--auth-user', admin_user, username, group
], input=admin_password.encode())
if group != 'admin':
_cleanup_groups.add(group)
@ -136,29 +143,54 @@ def _create_user(username=None, groups=None):
def _delete_user(username):
"""Utility to delete an LDAP and Samba user"""
_call_action(['remove-user', username])
process_input = None
if _get_group_users('admin') == [username]:
_, admin_password = _get_admin_user_password()
process_input = admin_password.encode()
_call_action(['remove-user', username], input=process_input)
def _get_admin_user_password():
"""Return an admin username and password."""
admin_users = _get_group_users('admin')
if not admin_users:
return ('', '')
if test_config.admin_username in admin_users:
return (test_config.admin_username, test_config.admin_password)
return (admin_users[0], admin_users[0] + '_passwd')
def _rename_user(old_username, new_username=None):
"""Rename a user."""
new_username = new_username or _random_string()
_call_action(['rename-user', old_username, new_username])
_cleanup_users.remove(old_username)
_cleanup_users.add(new_username)
return new_username
def _get_group_users(group):
"""Return the list of members in a group."""
process = _call_action(['get-group-users', group])
return process.stdout.decode().split()
def _get_user_groups(username):
"""Return the list of groups for a user."""
process = _call_action(['get-user-groups', username],
stdout=subprocess.PIPE)
process = _call_action(['get-user-groups', username])
return process.stdout.decode().split()
def _create_group(groupname=None):
groupname = groupname or _random_string()
_call_action(['create-group', groupname])
_cleanup_groups.add(groupname)
if groupname != 'admin':
_cleanup_groups.add(groupname)
return groupname
@ -181,7 +213,13 @@ def test_change_user_password():
username, old_password = _create_user(groups=['admin'])
old_password_hash = _get_password_hash(username)
new_password = 'pass $123'
_call_action(['set-user-password', username], input=new_password.encode())
admin_user, admin_password = _get_admin_user_password()
process_input = "{0}\n{1}".format(new_password, admin_password).encode()
_call_action(['set-user-password', username, '--auth-user', admin_user],
input=process_input)
new_password_hash = _get_password_hash(username)
assert old_password_hash != new_password_hash
@ -191,6 +229,38 @@ def test_change_user_password():
assert _try_login_to_ssh(username, new_password)
def test_change_password_as_non_admin_user():
"""Test changing user password as a non-admin user."""
username, old_password = _create_user()
old_password_hash = _get_password_hash(username)
new_password = 'pass $123'
process_input = "{0}\n{1}".format(new_password, old_password).encode()
_call_action(['set-user-password', username, '--auth-user', username],
input=process_input)
new_password_hash = _get_password_hash(username)
assert old_password_hash != new_password_hash
# User can login to ssh using new password but not the old password.
# sshpass gives a return code of 5 if the password is incorrect.
assert _try_login_to_ssh(username, old_password, returncode=5)
assert _try_login_to_ssh(username, new_password)
def test_change_other_users_password_as_non_admin():
"""Test that changing other user's password as a non-admin user fails."""
username1, password1 = _create_user()
username2, _ = _create_user()
new_password = 'pass $123'
process_input = "{0}\n{1}".format(new_password, password1).encode()
with pytest.raises(subprocess.CalledProcessError):
_call_action(
['set-user-password', username2, '--auth-user', username1],
input=process_input)
def test_set_password_for_non_existent_user():
"""Test setting password for a non-existent user."""
non_existent_user = _random_string()
@ -202,6 +272,9 @@ def test_set_password_for_non_existent_user():
def test_rename_user():
"""Test whether renaming a user works."""
# create an admin user to create other users with
_create_user(groups=['admin'])
old_username, password = _create_user(groups=['admin', _random_string()])
old_groups = _get_user_groups(old_username)
@ -269,24 +342,40 @@ def test_groups():
assert _is_exit_zero([_action_file(), 'remove-group', groupname])
def test_delete_admin_group_fails():
"""Test that deleting the admin group fails."""
groupname = 'admin'
_create_group('admin')
assert not _is_exit_zero([_action_file(), 'remove-group', groupname])
def test_user_group_interactions():
"""Test adding/removing user from a groups."""
group1 = _random_string()
user1, _ = _create_user(groups=[group1])
assert [group1] == _get_user_groups(user1)
admin_user, admin_password = _get_admin_user_password()
# add-user-to-group is not idempotent
with pytest.raises(subprocess.CalledProcessError):
_call_action(['add-user-to-group', user1, group1])
_call_action(
['add-user-to-group', '--auth-user', admin_user, user1, group1],
input=admin_password.encode())
# The same user can be added to other new groups
group2 = _random_string()
_create_group(group2)
_call_action(['add-user-to-group', user1, group2])
_call_action(
['add-user-to-group', '--auth-user', admin_user, user1, group2],
input=admin_password.encode())
# Adding a user to a non-existent group creates the group
group3 = _random_string()
_call_action(['add-user-to-group', user1, group3])
_call_action(
['add-user-to-group', '--auth-user', admin_user, user1, group3],
input=admin_password.encode())
_cleanup_groups.add(group3)
# The expected groups got created and the user is part of them.
@ -295,7 +384,10 @@ def test_user_group_interactions():
# Remove user from group
group_to_remove_from = random.choice(expected_groups)
_call_action(['remove-user-from-group', user1, group_to_remove_from])
_call_action([
'remove-user-from-group', '--auth-user', admin_user, user1,
group_to_remove_from
], input=admin_password.encode())
# User is no longer in the group that they're removed from
expected_groups.remove(group_to_remove_from)
@ -305,4 +397,7 @@ def test_user_group_interactions():
random_group = _random_string()
_create_group(random_group)
with pytest.raises(subprocess.CalledProcessError):
_call_action(['remove-user-from-group', user1, random_group])
_call_action([
'remove-user-from-group', '--auth-user', admin_user, user1,
random_group
], input=admin_password.encode())

View File

@ -3,10 +3,18 @@
Functional, browser based tests for users app.
"""
import random
import string
import subprocess
import urllib
import pytest
from pytest_bdd import given, parsers, scenarios, then, when
from plinth.tests import functional
_admin_password = functional.config['DEFAULT']['password']
scenarios('users.feature')
_language_codes = {
@ -51,11 +59,63 @@ def new_user_does_not_exist(session_browser, name):
@given(parsers.parse('the user {name:w} exists'))
def test_user_exists(session_browser, name):
functional.nav_to_module(session_browser, 'users')
user_link = session_browser.find_link_by_href(
'/plinth/sys/users/{}/edit/'.format(name))
if user_link:
_delete_user(session_browser, name)
_create_user(session_browser, name, _random_string())
@given(
parsers.parse('the admin user {name:w} with password {password:w} exists'))
def test_admin_user_exists(session_browser, name, password):
functional.nav_to_module(session_browser, 'users')
user_link = session_browser.find_link_by_href('/plinth/sys/users/' + name +
'/edit/')
if not user_link:
create_user(session_browser, name, 'secret123')
if user_link:
_delete_user(session_browser, name)
_create_user(session_browser, name, password, is_admin=True)
@given(parsers.parse('the user {name:w} with password {password:w} exists'))
def user_exists(session_browser, name, password):
functional.nav_to_module(session_browser, 'users')
user_link = session_browser.find_link_by_href('/plinth/sys/users/' + name +
'/edit/')
if user_link:
_delete_user(session_browser, name)
_create_user(session_browser, name, password)
@given(
parsers.parse(
"I'm logged in as the user {username:w} with password {password:w}"))
def logged_in_user_with_account(session_browser, username, password):
functional.login_with_account(session_browser, functional.base_url,
username, password)
@given(parsers.parse('the ssh keys are {ssh_keys:w}'))
def ssh_keys(session_browser, ssh_keys):
_set_ssh_keys(session_browser, ssh_keys)
@given('the client has a ssh key')
def generate_ssh_keys(session_browser, tmp_path_factory):
key_file = tmp_path_factory.getbasetemp() / 'users-ssh.key'
try:
key_file.unlink()
except FileNotFoundError:
pass
subprocess.check_call(
['ssh-keygen', '-t', 'ed25519', '-N', '', '-q', '-f',
str(key_file)])
@when(
@ -74,6 +134,123 @@ def delete_user(session_browser, name):
_delete_user(session_browser, name)
@when('I change the language to <language>')
def change_language(session_browser, language):
_set_language(session_browser, _language_codes[language])
@when(parsers.parse('I change the ssh keys to {ssh_keys:w}'))
def change_ssh_keys(session_browser, ssh_keys):
_set_ssh_keys(session_browser, ssh_keys)
@when('I remove the ssh keys')
def remove_ssh_keys(session_browser):
_set_ssh_keys(session_browser, '')
@when(
parsers.parse(
'I change the ssh keys to {ssh_keys:w} for the user {username:w}'))
def change_user_ssh_keys(session_browser, ssh_keys, username):
_set_ssh_keys(session_browser, ssh_keys, username=username)
@when(
parsers.parse(
'I change my ssh keys to {ssh_keys:w} with password {password:w}'))
def change_my_ssh_keys(session_browser, ssh_keys, password):
_set_ssh_keys(session_browser, ssh_keys, password=password)
@when(parsers.parse('I set the user {username:w} as inactive'))
def set_user_inactive(session_browser, username):
_set_user_inactive(session_browser, username)
@when(
parsers.parse(
'I change my password from {current_password} to {new_password:w}'))
def change_my_password(session_browser, current_password, new_password):
_change_password(session_browser, new_password,
current_password=current_password)
@when(
parsers.parse(
'I change the user {username:w} password to {new_password:w}'))
def change_other_user_password(session_browser, username, new_password):
_change_password(session_browser, new_password, username=username)
@when('I configure the ssh keys')
def configure_ssh_keys(session_browser, tmp_path_factory):
public_key_file = tmp_path_factory.getbasetemp() / 'users-ssh.key.pub'
public_key = public_key_file.read_text()
_set_ssh_keys(session_browser, public_key)
@then(
parsers.parse(
'I can log in as the user {username:w} with password {password:w}'))
def can_log_in(session_browser, username, password):
functional.visit(session_browser, '/plinth/accounts/logout/')
functional.login_with_account(session_browser, functional.base_url,
username, password)
assert len(session_browser.find_by_id('id_user_menu')) > 0
@then(
parsers.parse(
"I can't log in as the user {username:w} with password {password:w}"))
def cannot_log_in(session_browser, username, password):
functional.visit(session_browser, '/plinth/accounts/logout/')
functional.login_with_account(session_browser, functional.base_url,
username, password)
assert len(session_browser.find_by_id('id_user_menu')) == 0
@then('Plinth language should be <language>')
def plinth_language_should_be(session_browser, language):
assert _check_language(session_browser, _language_codes[language])
@then(parsers.parse('the ssh keys should be {ssh_keys:w}'))
def ssh_keys_match(session_browser, ssh_keys):
assert _get_ssh_keys(session_browser) == ssh_keys
@then('the ssh keys should be removed')
def ssh_keys_should_be_removed(session_browser, ssh_keys):
assert _get_ssh_keys(session_browser) == ''
@then(
parsers.parse(
'the ssh keys should be {ssh_keys:w} for the user {username:w}'))
def ssh_keys_match_for_user(session_browser, ssh_keys, username):
assert _get_ssh_keys(session_browser, username=username) == ssh_keys
@then(parsers.parse('my ssh keys should be {ssh_keys:w}'))
def my_ssh_keys_match(session_browser, ssh_keys):
assert _get_ssh_keys(session_browser) == ssh_keys
@then('the client should be able to connect passwordless over ssh')
def should_connect_passwordless_over_ssh(session_browser, tmp_path_factory):
key_file = tmp_path_factory.getbasetemp() / 'users-ssh.key'
_try_login_to_ssh(key_file=key_file)
@then("the client shouldn't be able to connect passwordless over ssh")
def should_not_connect_passwordless_over_ssh(session_browser,
tmp_path_factory):
key_file = tmp_path_factory.getbasetemp() / 'users-ssh.key'
with pytest.raises(subprocess.CalledProcessError):
_try_login_to_ssh(key_file=key_file)
@then(parsers.parse('{name:w} should be listed as a user'))
def new_user_is_listed(session_browser, name):
assert _is_user(session_browser, name)
@ -84,23 +261,16 @@ def new_user_is_not_listed(session_browser, name):
assert not _is_user(session_browser, name)
@when('I change the language to <language>')
def change_language(session_browser, language):
_set_language(session_browser, _language_codes[language])
@then('Plinth language should be <language>')
def plinth_language_should_be(session_browser, language):
assert _check_language(session_browser, _language_codes[language])
def _create_user(browser, name, password):
def _create_user(browser, name, password, is_admin=False):
functional.nav_to_module(browser, 'users')
with functional.wait_for_page_update(browser):
browser.find_link_by_href('/plinth/sys/users/create/').first.click()
browser.find_by_id('id_username').fill(name)
browser.find_by_id('id_password1').fill(password)
browser.find_by_id('id_password2').fill(password)
if is_admin:
browser.find_by_id('id_groups_0').check()
browser.find_by_id('id_confirm_password').fill(_admin_password)
functional.submit(browser)
@ -110,6 +280,7 @@ def _rename_user(browser, old_name, new_name):
browser.find_link_by_href('/plinth/sys/users/' + old_name +
'/edit/').first.click()
browser.find_by_id('id_username').fill(new_name)
browser.find_by_id('id_confirm_password').fill(_admin_password)
functional.submit(browser)
@ -135,6 +306,7 @@ def _set_language(browser, language_code):
functional.visit(browser, '/plinth/sys/users/{}/edit/'.format(username))
browser.find_by_xpath('//select[@id="id_language"]//option[@value="' +
language_code + '"]').first.click()
browser.find_by_id('id_confirm_password').fill(_admin_password)
functional.submit(browser)
@ -142,3 +314,73 @@ def _check_language(browser, language_code):
functional.nav_to_module(browser, 'config')
return browser.find_by_css('.app-titles').first.find_by_tag(
'h2').first.value == _config_page_title_language_map[language_code]
def _get_ssh_keys(browser, username=None):
functional.visit(browser, '/plinth/')
if username is None:
browser.find_by_id('id_user_menu').click()
browser.find_by_id('id_user_edit_menu').click()
else:
functional.visit(browser,
'/plinth/sys/users/{}/edit/'.format(username))
return browser.find_by_id('id_ssh_keys').text
def _random_string(length=8):
"""Return a random string created from lower case ascii."""
return ''.join(
[random.choice(string.ascii_lowercase) for _ in range(length)])
def _set_ssh_keys(browser, ssh_keys, username=None, password=None):
if username is None:
browser.find_by_id('id_user_menu').click()
browser.find_by_id('id_user_edit_menu').click()
else:
functional.visit(browser,
'/plinth/sys/users/{}/edit/'.format(username))
password = password or _admin_password
browser.find_by_id('id_ssh_keys').fill(ssh_keys)
browser.find_by_id('id_confirm_password').fill(password)
functional.submit(browser)
def _set_user_inactive(browser, username):
functional.visit(browser, '/plinth/sys/users/{}/edit/'.format(username))
browser.find_by_id('id_is_active').uncheck()
browser.find_by_id('id_confirm_password').fill(_admin_password)
functional.submit(browser)
def _change_password(browser, new_password, current_password=None,
username=None):
current_password = current_password or _admin_password
if username is None:
browser.find_by_id('id_user_menu').click()
browser.find_by_id('id_change_password_menu').click()
else:
functional.visit(
browser, '/plinth/sys/users/{}/change_password/'.format(username))
browser.find_by_id('id_new_password1').fill(new_password)
browser.find_by_id('id_new_password2').fill(new_password)
browser.find_by_id('id_confirm_password').fill(current_password)
functional.submit(browser)
def _try_login_to_ssh(key_file=None):
user = functional.config['DEFAULT']['username']
hostname = urllib.parse.urlparse(
functional.config['DEFAULT']['url']).hostname
port = functional.config['DEFAULT']['ssh_port']
subprocess.check_call([
'ssh', '-p', port, '-i', key_file, '-q', '-o',
'StrictHostKeyChecking=no', '-o', 'UserKnownHostsFile=/dev/null', '-o',
'BatchMode=yes', '{0}@{1}'.format(user, hostname), '/bin/true'
])

View File

@ -67,6 +67,7 @@ def make_request(request, view, as_admin=True, **kwargs):
user = User.objects.create(username='tester')
admin_user = User.objects.create(username='admin')
admin_user.set_password('adminpassword')
request.user = admin_user if as_admin else user
@ -99,7 +100,8 @@ def test_create_user_view(rf, username):
form_data = {
'username': username,
'password1': password,
'password2': password
'password2': password,
'confirm_password': 'adminpassword',
}
request = rf.post(urls.reverse('users:create'), data=form_data)
@ -111,6 +113,31 @@ def test_create_user_view(rf, username):
assert response.url == urls.reverse('users:index')
@pytest.mark.parametrize('password,error', [
('', {
'confirm_password': ['This field is required.']
}),
('wrong_password', {
'confirm_password': ['Invalid password.']
}),
])
def test_create_user_invalid_admin_view(rf, password, error):
"""Test that user creation with an invalid admin password fails."""
user_password = 'testingtesting'
form_data = {
'username': 'test-new',
'password1': user_password,
'password2': user_password,
'confirm_password': password,
}
request = rf.post(urls.reverse('users:create'), data=form_data)
view = views.UserCreate.as_view()
response, messages = make_request(request, view)
assert response.context_data['form'].errors == error
def test_create_user_form_view(rf):
"""Test that a username field on create form has correct attributes."""
request = rf.get(urls.reverse('users:create'))
@ -133,7 +160,8 @@ def test_create_user_invalid_username_view(rf, username):
form_data = {
'username': username,
'password1': 'testingtesting',
'password2': 'testingtesting'
'password2': 'testingtesting',
'confirm_password': 'adminpassword',
}
request = rf.post(urls.reverse('users:create'), data=form_data)
@ -157,7 +185,8 @@ def test_create_user_taken_or_reserved_username_view(rf, username, error):
form_data = {
'username': username,
'password1': 'testingtesting',
'password2': 'testingtesting'
'password2': 'testingtesting',
'confirm_password': 'adminpassword',
}
request = rf.post(urls.reverse('users:create'), data=form_data)
@ -175,7 +204,8 @@ def test_update_user_view(rf):
form_data = {
'username': new_username,
'password1': 'testingtesting',
'password2': 'testingtesting'
'password2': 'testingtesting',
'confirm_password': 'adminpassword',
}
url = urls.reverse('users:edit', kwargs={'slug': user})
@ -189,12 +219,40 @@ def test_update_user_view(rf):
kwargs={'slug': new_username})
@pytest.mark.parametrize('password,error', [
('', {
'confirm_password': ['This field is required.']
}),
('wrong_password', {
'confirm_password': ['Invalid password.']
}),
])
def test_update_user_invalid_admin_view(rf, password, error):
"""Test that updating username with an invalid admin password fails."""
user = 'tester'
new_username = 'tester-renamed'
form_data = {
'username': new_username,
'password1': 'testingtesting',
'password2': 'testingtesting',
'confirm_password': password,
}
url = urls.reverse('users:edit', kwargs={'slug': user})
request = rf.post(url, data=form_data)
view = views.UserUpdate.as_view()
response, messages = make_request(request, view, as_admin=True, slug=user)
assert response.context_data['form'].errors == error
def test_update_user_without_permissions_view(rf):
"""Test that updating other user as non-admin user raises exception."""
form_data = {
'username': 'admin-renamed',
'password1': 'testingtesting',
'password2': 'testingtesting'
'password2': 'testingtesting',
'confirm_password': 'adminpassword',
}
url = urls.reverse('users:edit', kwargs={'slug': 'admin'})
@ -224,7 +282,8 @@ def test_user_change_password_view(rf):
user = 'admin'
form_data = {
'new_password1': 'testingtesting2',
'new_password2': 'testingtesting2'
'new_password2': 'testingtesting2',
'confirm_password': 'adminpassword',
}
url = urls.reverse('users:change_password', kwargs={'slug': user})
@ -237,6 +296,32 @@ def test_user_change_password_view(rf):
assert response.url == urls.reverse('users:edit', kwargs={'slug': user})
@pytest.mark.parametrize('password,error', [
('', {
'confirm_password': ['This field is required.']
}),
('wrong_password', {
'confirm_password': ['Invalid password.']
}),
])
def test_user_change_password_invalid_admin_view(rf, password, error):
"""Test that changing password with an invalid admin password fails."""
user = 'admin'
form_data = {
'new_password1': 'testingtesting2',
'new_password2': 'testingtesting2',
'confirm_password': password,
}
url = urls.reverse('users:change_password', kwargs={'slug': user})
request = rf.post(url, data=form_data)
view = views.UserChangePassword.as_view()
response, messages = make_request(request, view, as_admin=True, slug=user)
assert response.context_data['form'].errors == error
assert response.status_code == 200
def test_user_change_password_without_permissions_view(rf):
"""
Test that changing other user password as a non-admin user raises
@ -245,7 +330,8 @@ def test_user_change_password_without_permissions_view(rf):
user = 'admin'
form_data = {
'new_password1': 'adminadmin2',
'new_password2': 'adminadmin2'
'new_password2': 'adminadmin2',
'confirm_password': 'adminpassword',
}
url = urls.reverse('users:change_password', kwargs={'slug': user})

View File

@ -2,11 +2,6 @@
# TODO Scenario: Add user to wiki group
# TODO Scenario: Remove user from wiki group
# TODO Scenario: Set user SSH key
# TODO Scenario: Clear user SSH key
# TODO Scenario: Make user inactive
# TODO Scenario: Make user active
# TODO Scenario: Change user password
@system @essential @users
Feature: Users and Groups
@ -27,10 +22,39 @@ Scenario: Rename user
Then alice should not be listed as a user
Then bob should be listed as a user
Scenario: Delete user
Scenario: Admin users can change their own ssh keys
When I change the ssh keys to somekey123
Then the ssh keys should be somekey123
Scenario: Non-admin users can change their own ssh keys
Given the user alice with password secret123secret123 exists
And I'm logged in as the user alice with password secret123secret123
When I change my ssh keys to somekey456 with password secret123secret123
Then my ssh keys should be somekey456
Scenario: Admin users can change other user's ssh keys
Given the user alice exists
When I delete the user alice
Then alice should not be listed as a user
When I change the ssh keys to alicesomekey123 for the user alice
Then the ssh keys should be alicesomekey123 for the user alice
Scenario: Users can remove ssh keys
Given the ssh keys are somekey123
When I remove the ssh keys
Then the ssh keys should be removed
Scenario: Users can connect passwordless over ssh if the keys are set
Given the ssh application is enabled
And the client has a ssh key
When I configure the ssh keys
Then the client should be able to connect passwordless over ssh
Scenario: Users can't connect passwordless over ssh if the keys aren't set
Given the ssh application is enabled
And the client has a ssh key
And the ssh keys are configured
When I remove the ssh keys
Then the client shouldn't be able to connect passwordless over ssh
Scenario Outline: Change language
When I change the language to <language>
@ -52,3 +76,30 @@ Scenario Outline: Change language
| Türkçe |
| 简体中文 |
| None |
Scenario: Admin users can set other users an inactive
Given the user alice with password secret789secret789 exists
When I set the user alice as inactive
Then I can't log in as the user alice with password secret789secret789
Scenario: Admin users can change their own password
Given the admin user testadmin with password testingtesting123 exists
And I'm logged in as the user testadmin with password testingtesting123
When I change my password from testingtesting123 to testingtesting456
Then I can log in as the user testadmin with password testingtesting456
Scenario: Admin user can change other user's password
Given the user alice exists
When I change the user alice password to secretsecret567
Then I can log in as the user alice with password secretsecret567
Scenario: Non-admin users can change their own password
Given the user alice with password secret123secret123 exists
And I'm logged in as the user alice with password secret123secret123
When I change my password from secret123secret123 to secret456secret456
Then I can log in as the user alice with password secret456secret456
Scenario: Delete user
Given the user alice exists
When I delete the user alice
Then alice should not be listed as a user

View File

@ -6,6 +6,7 @@ from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.models import User
from django.contrib.messages.views import SuccessMessageMixin
from django.core.exceptions import PermissionDenied
from django.http import HttpResponseRedirect
from django.urls import reverse, reverse_lazy
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy
@ -25,6 +26,7 @@ from .forms import (CreateUserForm, FirstBootForm, UserChangePasswordForm,
class ContextMixin(object):
"""Mixin to add 'title' to the template context."""
def get_context_data(self, **kwargs):
"""Add self.title to template context."""
context = super(ContextMixin, self).get_context_data(**kwargs)
@ -184,6 +186,24 @@ class FirstBootView(django.views.generic.CreateView):
form_class = FirstBootForm
def dispatch(self, request, *args, **kwargs):
"""Check if there is no possibility to create a new admin account."""
if request.method == 'POST' and 'skip' in request.POST:
first_boot.mark_step_done('users_firstboot')
return HttpResponseRedirect(reverse(first_boot.next_step()))
return super().dispatch(request, *args, **kwargs)
def get_context_data(self, *args, **kwargs):
"""Add admin users to context data."""
context = super().get_context_data(*args, **kwargs)
output = actions.superuser_run('users', ['get-group-users', 'admin'])
admin_users = output.strip().split('\n') if output.strip() else []
context['admin_users'] = admin_users
return context
def get_form_kwargs(self):
"""Make request available to the form (to insert messages)"""
kwargs = super(FirstBootView, self).get_form_kwargs()

View File

@ -146,7 +146,7 @@
{% include "help-menu.html" %}
<li class="dropdown">
<li id="id_user_menu" class="dropdown">
<a href="{% url 'users:edit' request.user.username %}"
class="dropdown-toggle" data-toggle="dropdown"
role="button" aria-expanded="false">
@ -156,13 +156,15 @@
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="{% url 'users:edit' request.user.username %}"
<a id="id_user_edit_menu"
href="{% url 'users:edit' request.user.username %}"
title="{% trans "Edit"%}">
{% trans "Edit" %}
</a>
</li>
<li>
<a href="{% url 'users:change_password' request.user.username %}"
<a id='id_change_password_menu'
href="{% url 'users:change_password' request.user.username %}"
title="{% trans "Change password" %}">
{% trans "Change password" %}
</a>

View File

@ -0,0 +1,22 @@
{% extends "base.html" %}
{% comment %}
# SPDX-License-Identifier: AGPL-3.0-or-later
{% endcomment %}
{% load bootstrap %}
{% load i18n %}
{% block content %}
<h3>{{ title }}</h3>
<form class="form" method="post">
{% csrf_token %}
{{ form|bootstrap }}
<input type="submit" class="btn btn-primary"
value="{% trans "Submit" %}"/>
</form>
{% endblock %}

View File

@ -14,6 +14,12 @@ backups_ssh_password = None
backups_ssh_keyfile = None
backups_ssh_repo_uuid = 'plinth_test_sshfs' # will be mounted to /media/<uuid>
# An existing admin account for privileged actions. If this admin account
# doesn't exist and no other admin accounts exist, a random admin account is
# created and deleted afterwards by the tests.
admin_username = 'tester'
admin_password = 'testingtesting'
# Import config_local to override the default variables
try:
from .config_local import * # noqa, pylint: disable=unused-import

View File

@ -22,6 +22,8 @@ config.read(pathlib.Path(__file__).with_name('config.ini'))
config['DEFAULT']['url'] = os.environ.get('FREEDOMBOX_URL',
config['DEFAULT']['url']).rstrip('/')
config['DEFAULT']['ssh_port'] = os.environ.get('FREEDOMBOX_SSH_PORT',
config['DEFAULT']['ssh_port'])
config['DEFAULT']['samba_port'] = os.environ.get(
'FREEDOMBOX_SAMBA_PORT', config['DEFAULT']['samba_port'])
@ -234,15 +236,25 @@ def _create_admin_account(browser, username, password):
submit(browser)
def login(browser, url, username, password):
def login(browser):
"""Login to the interface."""
login_with_account(browser, base_url, config['DEFAULT']['username'],
config['DEFAULT']['password'])
def login_with_account(browser, url, username, password):
# XXX: Find a way to remove the hardcoded jsxc URL
if '/plinth/' not in browser.url or '/jsxc/jsxc' in browser.url:
browser.visit(url)
apps_link = browser.find_link_by_href('/plinth/apps/')
if len(apps_link):
return
user_menu = browser.find_by_id('id_user_menu')
if len(user_menu):
if user_menu.text == username:
return
visit(browser, '/plinth/accounts/logout/')
login_button = browser.find_link_by_href('/plinth/accounts/login/')
if login_button:

View File

@ -2,4 +2,5 @@
url = https://localhost:4430
username = tester
password = testingtesting
ssh_port = 2222
samba_port = 4450

View File

@ -13,9 +13,7 @@ from plinth.tests import functional
@given("I'm a logged in user")
def logged_in_user(session_browser):
functional.login(session_browser, functional.base_url,
functional.config['DEFAULT']['username'],
functional.config['DEFAULT']['password'])
functional.login(session_browser)
@given("I'm a logged out user")
@ -57,7 +55,7 @@ def disable_application(session_browser, app_name):
@given(parsers.parse('the {app_name:w} application can be disabled'))
def app_can_be_disabled(session_browser, app_name):
if not functional.app_can_be_disabled(session_browser, app_name):
pytest.skip(f'network time application can\'t be disabled')
pytest.skip('network time application can\'t be disabled')
@then(parsers.parse('the {service_name:w} service should be running'))

View File

@ -67,6 +67,7 @@ def is_user_admin(request, cached=False):
class YAMLFile(object):
"""A context management class for updating YAML files"""
def __init__(self, yaml_file):
"""Return a context object for the YAML file.
@ -156,3 +157,10 @@ def is_axes_old():
return False
return LooseVersion(version) < LooseVersion('5.0')
def is_authenticated_user(username, password):
"""Return true if the user authentication succeeds."""
import pam # Minimize dependencies for running tests
pam_authenticator = pam.pam()
return bool(pam_authenticator.authenticate(username, password))

Some files were not shown because too many files have changed in this diff Show More