freedombox Debian release 25.13

-----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAmjkbeAWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICH5iD/0Vw9PKwVUYiKModXpxhOgb0aGk
 kzeRafam3dOgIQW5Yf4Y3P0gLcfE430iCUvTnJLkxsSVhWA5J2lUYaqLlGoAZGe7
 LCuP77v4ZWFYKnWkBBTTNIEDvsCe15CVKe+LoUhl4mS1TYGe2RvxIwK5f55YTu2k
 EvJkSzY31YezQpA5XyH7LQdeJw8C3fpM+RZUzPttTJNkhAmqkcDBppVmh8T8hmM9
 oXbZ8aHHofKlFjhFLla3QxHGCfeoOExY/A6A6AMSwHK2gmnza00YUEU0rfrWmfGm
 6VW/xxNxQRgY4buG54pgtv91adJtxEt1dT9f30HTonEy0MY674urDTKoRZnj80RG
 BsrAqXkKi9NHaL3CJ+NEErX8mq3mvSmabc9S4yAHvKKtX07Uvu/SekJnA2KNH5fZ
 ItIrniL/bUx0gkw+PJJu6UFpTp8WctRNPhiIQHm7/fq497lebwo46npfwZdfP7qI
 uCF0fedvS+/Zdr4WNShsuLZvwpt51waJTOVqSFdN2AeLdhD+rUVFgsxr0GI+O0M5
 lL4lPI58GL6s3OYqnzIMmYmFxdDkWnR8PBXJlazVP88iIWJNtRqzQ6k9XJDcUd8X
 U8ue22hGdAWxNH2VnNGBSuIwoNISM91UtoRD06pKAw7GkESIQ2zMhroOObN7NcgI
 ASUxB+KXp2ieLT29Vw==
 =htcO
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAmjnoPEWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICMhhEACQ/xw3siNT6GdG3xhXbeJQJCEy
 S1rVpCXjCNoVxvM9jZO/8atGs5l5dVvZdLbGqYQTSFnBRei9Scmd5lHJf/DqOe3i
 zBRYS/9ahAYvz7olD37pikLlvHRcdsahCyw0cBw+B30FJdax3vkxLP7B+CbZhqWj
 ZcA3RhXAmvxqoprZN2Q/zFY2M2j2X38TtLx7bOt3KAWqPZcAgAoOKptl36JDimGa
 MPO+UwRSsjNgNV80bPWPYABQiFxaxM06Vl98K+/xaN/mIDZbJXDeoTAh+XT28QKz
 a3pxpM6lIq4KFfTJjKaXNj/6kmLulIxhlCNIqtm50a2d3XaAp97T0W0hkWk+wjTa
 7nkJ91lM+Ysj0i5i9NSv6IpfWlQ99whJvCCcPPIYeBjt06hLn4dO63BFPe7OXJy4
 MvBAmUYVNBHEmy2Z2umTNtiUPBKL3jj4t8LxlVrKQ7rqthl0Qhe8+9yPHOtoEy44
 6ndI2VxZ/m8mdk12pQOqmrWlv3s9yRbNCi4gir8kX6JRgp81XwNS6AOKk9ghW4N4
 4vWLdEiDNeJRJ31dE0uptTsYzUeWvIIrpWMlNgZAYHRRbhKxCW/u/8uLdxk+rZnW
 jzKEiCFvcl4brUZ1BKmaoK5ChxnyPRWL1CfG8xWKlNCUxXquCW906cNDRQpJ5F6i
 b8KO1xSknslUnAP5MQ==
 =vnij
 -----END PGP SIGNATURE-----

Merge tag 'v25.13' into debian/trixie-backports

freedombox Debian release 25.13
This commit is contained in:
James Valleroy 2025-10-09 07:47:59 -04:00
commit 8e3a468a58
122 changed files with 2766 additions and 2489 deletions

2
.gitignore vendored
View File

@ -4,7 +4,7 @@
doc/manual/*/*.pdf
doc/manual/*/*.html
doc/manual/*/*.xml
doc/plinth.1
doc/*.1
doc/dev/_build
\#*
.#*

View File

@ -56,7 +56,7 @@ build:
build-backports:
extends: .build-package
variables:
RELEASE: bookworm-backports
RELEASE: trixie-backports
build i386:
extends: .build-package-i386

View File

@ -37,6 +37,7 @@ DIRECTORIES_TO_CREATE := \
STATIC_FILES_DIRECTORY := $(DESTDIR)/usr/share/plinth/static
BIN_DIR := $(DESTDIR)/usr/bin
LIB_DIR := $(DESTDIR)/usr/lib
FIND_ARGS := \
-not -iname "*.log" \
@ -102,7 +103,7 @@ install:
rm -f $(DESTDIR)$${lib_dir}/plinth*.dist-info/COPYING.md && \
rm -f $(DESTDIR)$${lib_dir}/plinth*.dist-info/direct_url.json && \
$(INSTALL) -D -t $(BIN_DIR) bin/plinth
$(INSTALL) -D -t $(BIN_DIR) bin/freedombox-privileged
$(INSTALL) -D -t $(LIB_DIR)/freedombox bin/freedombox-privileged
$(INSTALL) -D -t $(BIN_DIR) bin/freedombox-cmd
# Static web server files

View File

@ -5,10 +5,12 @@ Description=FreedomBox Privileged Service
Documentation=https://wiki.debian.org/FreedomBox/
# Don't hit the start rate limiting.
StartLimitIntervalSec=0
# Stop/restart along with .socket unit (invoked from dpkg scripts).
PartOf=freedombox-privileged.socket
[Service]
Type=notify
ExecStart=/usr/bin/freedombox-privileged
ExecStart=/usr/lib/freedombox/freedombox-privileged
TimeoutSec=300s
User=root
Group=root

69
debian/changelog vendored
View File

@ -1,3 +1,72 @@
freedombox (25.13) unstable; urgency=medium
[ Burak Yavuz ]
* Translated using Weblate (Turkish)
[ 大王叫我来巡山 ]
* Translated using Weblate (Chinese (Simplified Han script))
[ Максим Горпиніч ]
* Translated using Weblate (Ukrainian)
[ 109247019824 ]
* Translated using Weblate (Bulgarian)
[ Jiří Podhorecký ]
* Translated using Weblate (Czech)
[ Sunil Mohan Adapa ]
* glib: Add schedule parameter for setting interval in develop mode
* diagnostics: In development mode, run diagnostics more rarely
* backups: Ignore a typing error with mypy
* Makefile: Move privileged daemon to /usr/lib/freedombox
* action_utils: Handle capture_output argument in run wrapper
* privileged_daemon: Fix showing errors for freedombox-cmd command
* doc: Add manual page for freedombox-cmd
* storage: Fix disk usage checking with disconnected SSH mounts
* actions: Work with older privileged daemon
* privileged_daemon: Implement handling termination signal
* d/rules: Drop a workaround for dh_installsytemd needed for /usr/lib
* actions: Log method arguments in privileged daemon
* backups: Fix robust handling of known errors
* config: Set home page to FreedomBox for invalid values
* actions: Log full exception from privileged daemon on error
* setup: Log full exception traceback when setup fails
* actions: Fix lifetime of thread local storage
* actions_utils: Fix issue with collecting stdout/stderr
* *: Use action_utils.run instead of subprocess.run
* *: Use action_utils.run instead of subprocess.check_call
* *: Use action_utils.run instead of subprocess.call
* *: Use action_utils.run instead of subprocess.check_output
* *: Collect output for all privileged sub-processes
* ci: Switch backports test to trixie-backports
* actions: Raise an exception if privileged server response is empty
* debian: Stop privileged service during upgrade or removal
* backups: Don't show enable/disable button as app can't be disabled
* locale: Fix a string formatting issue in Italian translation
* daemon: When ensuring running state handle not-installed state
* miniflux: Fix DB connection issues during install/uninstall
* zoph: Additional dbconfig configuration keys
[ Dietmar ]
* Translated using Weblate (German)
* Translated using Weblate (Italian)
[ Roman Akimov ]
* Translated using Weblate (Russian)
[ Veiko Aasa ]
* gitweb: Use Git credential helper when cloning URLs with credentials
[ Besnik Bleta ]
* Translated using Weblate (Albanian)
[ James Valleroy ]
* locale: Update translation strings
* doc: Fetch latest manual
-- James Valleroy <jvalleroy@mailbox.org> Mon, 06 Oct 2025 20:30:14 -0400
freedombox (25.12~bpo13+1) trixie-backports; urgency=medium
* Rebuild for trixie-backports.

View File

@ -19,3 +19,8 @@ freedombox binary: web-application-works-only-with-apache
# Not documentation
freedombox: package-contains-documentation-outside-usr-share-doc [usr/share/plinth/static/jslicense.html]
freedombox: package-contains-documentation-outside-usr-share-doc [usr/lib/python3/dist-packages/plinth-*.dist-info/top_level.txt]
# This executable is meant to executed from systemd service file and is not
# meant for user. However, don't install to /usr/libexec and follow systemd
# convention instead.
freedombox: executable-in-usr-lib [usr/lib/freedombox/freedombox-privileged]

View File

@ -1 +1,2 @@
./doc/freedombox-cmd.1
./doc/plinth.1

10
debian/rules vendored
View File

@ -29,10 +29,6 @@ ifneq ($(FBX_VERSION),$(DEB_VERSION))
endif
override_dh_installsystemd:
# Do not enable or start any service other than FreedomBox service. Use
# of --tmpdir is a hack to workaround an issue with dh_installsystemd
# (as of debhelper 13.5.2) that still has hardcoded search path of
# /lib/systemd/system for searching systemd services. See #987989 and
# reversion of its changes.
dh_installsystemd --tmpdir=debian/tmp/usr --package=freedombox \
plinth.service freedombox-privileged.socket
# Do not enable or start any service other than FreedomBox service.
dh_installsystemd --package=freedombox plinth.service \
freedombox-privileged.socket

View File

@ -13,7 +13,7 @@ SCRIPTS_DIR=scripts
manual-pdfs=$(foreach lang,$(MANUAL_LANGUAGES),manual/$(lang)/freedombox-manual.pdf)
manual-xmls=$(patsubst %.pdf,%.xml,$(manual-pdfs))
OUTPUTS=$(manual-pdfs) plinth.1
OUTPUTS=$(manual-pdfs) plinth.1 freedombox-cmd.1
INSTALL_OPTS=-D --mode=644

160
doc/freedombox-cmd.xml Normal file
View File

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.docbook.org/xml/4.4/docbookx.dtd">
<!--
# SPDX-License-Identifier: AGPL-3.0-or-later
-->
<refentry>
<refmeta>
<refentrytitle><application>freedombox-cmd</application></refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo class="manual">FreedomBox Command Line Utility</refmiscinfo>
<refmiscinfo class="version"> </refmiscinfo>
</refmeta>
<refnamediv>
<refname><application>freedombox-cmd</application></refname>
<refpurpose>
command line utility to perform FreedomBox operations
</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>freedombox-cmd</command>
<arg><option>-h, </option><option>--help</option></arg>
<arg choice="req">module</arg>
<arg choice="req">action</arg>
<arg><option>--no-args</option></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
FreedomBox is a community project to develop, design and promote
personal servers running free software for private, personal
communications. It is a networking appliance designed to allow
interfacing with the rest of the Internet under conditions of
protected privacy and data security. It hosts applications such
as blog, wiki, website, social network, email, web proxy and a
Tor relay on a device that can replace a wireless router so that
data stays with the users.
</para>
<para>
freedombox-cmd is a command line interface to some of the operations
performed by FreedomBox. It is typically not needed by the end users who
use FreedomBox's web interface. The command may be used in some cases
while debugging problems, especially where the web interface is not
accessible or when a piece of functionality that is not provided in the
web interface needs to be triggered.
</para>
<para>
The command is simply a client to the FreedomBox's privileged daemon and
relays user's request to it. It waits for the request to complete and
prints the output of the operation or an error message collected form the
daemon. The daemon only allows connections from an pre-allowed list of
user accounts. So, be sure to run the command as 'root' superuser.
</para>
</refsect1>
<refsect1>
<title>Options</title>
<variablelist>
<varlistentry>
<term><option>module</option></term>
<listitem>
<para>
Name of the module from which to execute an action.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>action</option></term>
<listitem>
<para>
Name of the action to execute. It should found in the provided
module.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--no-args</option></term>
<listitem>
<para>
Don't try to read the arguments to the command on the standard
input. Instead, assume that the operation does not have any
arguments and execute the method without arguments.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--help</option></term>
<listitem>
<para>
Show brief help about arguments allowed for this command.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Examples</title>
<example>
<title>Re-run FreedomBox network setup</title>
<synopsis>$ sudo freedombox-cmd networks setup --no-args</synopsis>
<para>
When FreedomBox starts for the first time, it will setup Network Manager
connections suitable for the hardware found. If you wish to re-create
these connections at a later time, you can re-run setup for the Networks
app using the web interface or run this command on a terminal.
</para>
</example>
<example>
<title>Delete a user account from LDAP database</title>
<synopsis>$ echo '{"args": ["USERNAME", "AUTH_USER", "AUTH_PASSWORD"], "kwargs": {}}' | sudo freedombox-cmd users remove_user</synopsis>
<para>
USERNAME is the name of the user account that must be removed. AUTH_USER
is name of the user account that is authorizing this operation.
AUTH_PASSWORD is the password for user account that is authorizing this
operation. This operation may be needed if FreedomBox's sqlite3 database
is wiped, removing the user accounts in the database but the
corresponding entries from LDAP database are not removed. A new user
with that name can't be created until the LDAP account is also removed.
</para>
</example>
<example>
<title>Set the logging mode to persistent</title>
<synopsis>$ echo '{"args": ["persistent"], "kwargs": {}}' | sudo freedombox-cmd config set_logging_mode</synopsis>
<para>
By default, FreedomBox sets up systemd-journald to 'volatile' logging.
This means that logs will not be stored on the disk and will be lost
after a reboot. If you are tackling a problem and wish to store the logs
persistently, you can change the setting in the web interface or run
this command.
</para>
</example>
</refsect1>
<refsect1>
<title>Bugs</title>
<para>
See <ulink
url="https://salsa.debian.org/freedombox-team/freedombox/issues">FreedomBox
issue tracker</ulink> for a full list of known issues and TODO items.
</para>
</refsect1>
<refsect1>
<title>Author</title>
<para>
<author>
<firstname>FreedomBox Developers</firstname>
<contrib>Original author</contrib>
</author>
</para>
</refsect1>
</refentry>

View File

@ -8,6 +8,47 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 25.13 (2025-10-06) ==
=== Highlights ===
* backups: Fix robust handling of known errors
* debian: Stop privileged service during upgrade or removal
* miniflux: Fix DB connection issues during install/uninstall
=== Other Changes ===
* *: Collect output for all privileged sub-processes
* *: Use action_utils.run instead of subprocess.call
* *: Use action_utils.run instead of subprocess.check_call
* *: Use action_utils.run instead of subprocess.check_output
* *: Use action_utils.run instead of subprocess.run
* action_utils: Handle capture_output argument in run wrapper
* actions: Fix lifetime of thread local storage
* actions: Log full exception from privileged daemon on error
* actions: Log method arguments in privileged daemon
* actions: Raise an exception if privileged server response is empty
* actions: Work with older privileged daemon
* actions_utils: Fix issue with collecting stdout/stderr
* backups: Don't show enable/disable button as app can't be disabled
* backups: Ignore a typing error with mypy
* ci: Switch backports test to trixie-backports
* config: Set home page to !FreedomBox for invalid values
* d/rules: Drop a workaround for dh_installsytemd needed for /usr/lib
* daemon: When ensuring running state handle not-installed state
* diagnostics: In development mode, run diagnostics more rarely
* doc: Add manual page for freedombox-cmd
* gitweb: Use Git credential helper when cloning URLs with credentials
* glib: Add schedule parameter for setting interval in develop mode
* locale: Fix a string formatting issue in Italian translation
* locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, German, Italian, Russian, Turkish, Ukrainian
* Makefile: Move privileged daemon to /usr/lib/freedombox
* privileged_daemon: Fix showing errors for freedombox-cmd command
* privileged_daemon: Implement handling termination signal
* setup: Log full exception traceback when setup fails
* storage: Fix disk usage checking with disconnected SSH mounts
* zoph: Additional dbconfig configuration keys
== FreedomBox 25.12 (2025-09-22) ==
=== Highlights ===

View File

@ -8,6 +8,47 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 25.13 (2025-10-06) ==
=== Highlights ===
* backups: Fix robust handling of known errors
* debian: Stop privileged service during upgrade or removal
* miniflux: Fix DB connection issues during install/uninstall
=== Other Changes ===
* *: Collect output for all privileged sub-processes
* *: Use action_utils.run instead of subprocess.call
* *: Use action_utils.run instead of subprocess.check_call
* *: Use action_utils.run instead of subprocess.check_output
* *: Use action_utils.run instead of subprocess.run
* action_utils: Handle capture_output argument in run wrapper
* actions: Fix lifetime of thread local storage
* actions: Log full exception from privileged daemon on error
* actions: Log method arguments in privileged daemon
* actions: Raise an exception if privileged server response is empty
* actions: Work with older privileged daemon
* actions_utils: Fix issue with collecting stdout/stderr
* backups: Don't show enable/disable button as app can't be disabled
* backups: Ignore a typing error with mypy
* ci: Switch backports test to trixie-backports
* config: Set home page to !FreedomBox for invalid values
* d/rules: Drop a workaround for dh_installsytemd needed for /usr/lib
* daemon: When ensuring running state handle not-installed state
* diagnostics: In development mode, run diagnostics more rarely
* doc: Add manual page for freedombox-cmd
* gitweb: Use Git credential helper when cloning URLs with credentials
* glib: Add schedule parameter for setting interval in develop mode
* locale: Fix a string formatting issue in Italian translation
* locale: Update translations for Albanian, Bulgarian, Chinese (Simplified Han script), Czech, German, Italian, Russian, Turkish, Ukrainian
* Makefile: Move privileged daemon to /usr/lib/freedombox
* privileged_daemon: Fix showing errors for freedombox-cmd command
* privileged_daemon: Implement handling termination signal
* setup: Log full exception traceback when setup fails
* storage: Fix disk usage checking with disconnected SSH mounts
* zoph: Additional dbconfig configuration keys
== FreedomBox 25.12 (2025-09-22) ==
=== Highlights ===

View File

@ -3,4 +3,4 @@
Package init file.
"""
__version__ = '25.12'
__version__ = '25.13'

View File

@ -33,20 +33,18 @@ def is_systemd_running():
def systemd_get_default() -> str:
"""Return the default target that systemd will boot into."""
process = subprocess.run(['systemctl', 'get-default'],
stdout=subprocess.PIPE, check=True)
process = run(['systemctl', 'get-default'], check=True)
return process.stdout.decode().strip()
def systemd_set_default(target: str):
"""Set the default target that systemd will boot into."""
subprocess.run(['systemctl', 'set-default', target], check=True)
run(['systemctl', 'set-default', target], check=True)
def service_daemon_reload():
"""Reload systemd to ensure that newer unit files are read."""
subprocess.run(['systemctl', 'daemon-reload'], check=True,
stdout=subprocess.DEVNULL)
run(['systemctl', 'daemon-reload'], check=True)
def service_is_running(servicename):
@ -55,8 +53,7 @@ def service_is_running(servicename):
Does not need to run as root.
"""
try:
subprocess.run(['systemctl', 'status', servicename], check=True,
stdout=subprocess.DEVNULL)
run(['systemctl', 'status', servicename], check=True)
return True
except subprocess.CalledProcessError:
# If a service is not running we get a status code != 0 and
@ -102,9 +99,7 @@ def service_is_enabled(service_name, strict_check=False):
"""
try:
process = subprocess.run(['systemctl', 'is-enabled', service_name],
check=True, stdout=subprocess.PIPE,
stderr=subprocess.DEVNULL)
process = run(['systemctl', 'is-enabled', service_name], check=True)
if not strict_check:
return True
@ -115,13 +110,13 @@ def service_is_enabled(service_name, strict_check=False):
def service_enable(service_name: str, check: bool = False):
"""Enable and start a service in systemd."""
subprocess.run(['systemctl', 'enable', service_name], check=check)
run(['systemctl', 'enable', service_name], check=check)
service_start(service_name, check=check)
def service_disable(service_name: str, check: bool = False):
"""Disable and stop service in systemd."""
subprocess.run(['systemctl', 'disable', service_name], check=check)
run(['systemctl', 'disable', service_name], check=check)
try:
service_stop(service_name, check=check)
except subprocess.CalledProcessError:
@ -130,12 +125,12 @@ def service_disable(service_name: str, check: bool = False):
def service_mask(service_name: str, check: bool = False):
"""Mask a service"""
subprocess.run(['systemctl', 'mask', service_name], check=check)
run(['systemctl', 'mask', service_name], check=check)
def service_unmask(service_name: str, check: bool = False):
"""Unmask a service"""
subprocess.run(['systemctl', 'unmask', service_name], check=check)
run(['systemctl', 'unmask', service_name], check=check)
def service_start(service_name: str, check: bool = False):
@ -181,14 +176,14 @@ def service_get_logs(service_name: str) -> str:
command = [
'journalctl', '--no-pager', '--lines=200', '--unit', service_name
]
process = subprocess.run(command, check=False, stdout=subprocess.PIPE)
process = run(command, check=False)
return process.stdout.decode()
def service_show(service_name: str) -> dict[str, str]:
"""Return the status of the service in dictionary format."""
command = ['systemctl', 'show', service_name]
process = subprocess.run(command, check=False, stdout=subprocess.PIPE)
process = run(command, check=False)
status = {}
for line in process.stdout.decode().splitlines():
parts = line.partition('=')
@ -199,8 +194,7 @@ def service_show(service_name: str) -> dict[str, str]:
def service_action(service_name: str, action: str, check: bool = False):
"""Perform the given action on the service_name."""
subprocess.run(['systemctl', action, service_name],
stdout=subprocess.DEVNULL, check=check)
run(['systemctl', action, service_name], check=check)
def webserver_is_enabled(name, kind='config'):
@ -211,8 +205,7 @@ def webserver_is_enabled(name, kind='config'):
option_map = {'config': '-c', 'site': '-s', 'module': '-m'}
try:
# Don't print anything on the terminal
subprocess.check_output(['a2query', option_map[kind], name],
stderr=subprocess.STDOUT)
run(['a2query', option_map[kind], name], check=True)
return True
except subprocess.CalledProcessError:
return False
@ -234,7 +227,7 @@ def webserver_enable(name, kind='config', apply_changes=True):
'site': 'a2ensite',
'module': 'a2enmod'
}
subprocess.check_output([command_map[kind], name])
run([command_map[kind], name], check=True)
action_required = 'restart' if kind == 'module' else 'reload'
@ -263,7 +256,7 @@ def webserver_disable(name, kind='config', apply_changes=True):
'site': 'a2dissite',
'module': 'a2dismod'
}
subprocess.check_output([command_map[kind], name])
run([command_map[kind], name], check=True)
action_required = 'restart' if kind == 'module' else 'reload'
@ -391,7 +384,7 @@ def get_ip_addresses() -> list[dict[str, str | bool]]:
"""Return a list of IP addresses assigned to the system."""
addresses = []
output = subprocess.check_output(['ip', '-o', 'addr'])
output = run(['ip', '-o', 'addr'], check=True).stdout
for line in output.decode().splitlines():
parts = line.split()
address: dict[str, str | bool] = {
@ -417,7 +410,7 @@ def get_ip_addresses() -> list[dict[str, str | bool]]:
def get_hostname():
"""Return the current hostname."""
return subprocess.check_output(['hostname']).decode().strip()
return run(['hostname'], check=True).stdout.decode().strip()
def dpkg_reconfigure(package, config):
@ -440,7 +433,7 @@ Owners: {package}
env['DEBCONF_DB_OVERRIDE'] = 'File{' + override_file.name + \
' readonly:true}'
env['DEBIAN_FRONTEND'] = 'noninteractive'
subprocess.run(['dpkg-reconfigure', package], env=env, check=False)
run(['dpkg-reconfigure', package], env=env, check=False)
try:
os.remove(override_file.name)
@ -454,12 +447,12 @@ def debconf_set_selections(presets):
# Workaround Debian Bug #487300. In some situations, debconf complains
# it can't find the question being answered even though it is supposed
# to create a dummy question for it.
subprocess.run(['/usr/share/debconf/fix_db.pl'], check=True)
run(['/usr/share/debconf/fix_db.pl'], check=True)
except (FileNotFoundError, PermissionError):
pass
presets = '\n'.join(presets)
subprocess.check_output(['debconf-set-selections'], input=presets.encode())
run(['debconf-set-selections'], input=presets.encode(), check=True)
def is_disk_image():
@ -472,8 +465,7 @@ def is_disk_image():
return os.path.exists('/var/lib/freedombox/is-freedombox-disk-image')
def run_apt_command(arguments, stdout=subprocess.DEVNULL,
enable_triggers: bool = False):
def run_apt_command(arguments, enable_triggers: bool = False):
"""Run apt-get with provided arguments."""
command = ['apt-get', '--assume-yes', '--quiet=2'] + arguments
@ -481,8 +473,7 @@ def run_apt_command(arguments, stdout=subprocess.DEVNULL,
env['DEBIAN_FRONTEND'] = 'noninteractive'
if not enable_triggers:
env['FREEDOMBOX_INVOKED'] = 'true'
process = subprocess.run(command, stdin=subprocess.DEVNULL, stdout=stdout,
env=env, check=False)
process = run(command, stdin=subprocess.DEVNULL, env=env, check=False)
return process.returncode
@ -503,25 +494,24 @@ def apt_hold(packages):
held_packages = []
try:
for package in packages:
current_hold = subprocess.check_output(
['apt-mark', 'showhold', package])
current_hold = run(['apt-mark', 'showhold', package],
check=True).stdout
if not current_hold:
process = subprocess.run(['apt-mark', 'hold', package],
check=False)
process = run(['apt-mark', 'hold', package], check=False)
if process.returncode == 0: # success
held_packages.append(package)
yield held_packages
finally:
for package in held_packages:
subprocess.check_call(['apt-mark', 'unhold', package])
run(['apt-mark', 'unhold', package], check=True)
@contextmanager
def apt_hold_freedombox():
"""Prevent freedombox package from being removed during apt operations."""
current_hold = subprocess.check_output(
['apt-mark', 'showhold', 'freedombox'])
current_hold = run(['apt-mark', 'showhold', 'freedombox'],
check=True).stdout
try:
if current_hold:
# Package is already held, possibly by administrator.
@ -530,7 +520,7 @@ def apt_hold_freedombox():
# Set the flag.
apt_hold_flag.parent.mkdir(mode=0o755, parents=True, exist_ok=True)
apt_hold_flag.touch(mode=0o660)
yield subprocess.check_call(['apt-mark', 'hold', 'freedombox'])
yield run(['apt-mark', 'hold', 'freedombox'], check=True)
finally:
# Was the package held, either in this process or a previous one?
if not current_hold or apt_hold_flag.exists():
@ -539,9 +529,7 @@ def apt_hold_freedombox():
def apt_unhold_freedombox():
"""Remove any hold on freedombox package, and clear flag."""
subprocess.run(['apt-mark', 'unhold', 'freedombox'],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
check=False)
run(['apt-mark', 'unhold', 'freedombox'], check=False)
if apt_hold_flag.exists():
apt_hold_flag.unlink()
@ -552,7 +540,7 @@ def is_package_manager_busy():
is open which indicates that the package manager is busy"""
LOCK_FILE = '/var/lib/dpkg/lock'
try:
subprocess.check_output(['lsof', LOCK_FILE])
run(['lsof', LOCK_FILE], check=True)
return True
except subprocess.CalledProcessError:
return False
@ -568,15 +556,14 @@ def podman_create(container_name: str, image_name: str, volume_name: str,
service_stop(container_name)
# Data is kept
subprocess.run(['podman', 'volume', 'rm', '--force', volume_name],
check=False)
run(['podman', 'volume', 'rm', '--force', volume_name], check=False)
directory = pathlib.Path('/etc/containers/systemd')
directory.mkdir(parents=True, exist_ok=True)
# Fetch the image before creating the container. The systemd service for
# the container won't timeout due to slow internet connectivity.
subprocess.run(['podman', 'image', 'pull', image_name], check=True)
run(['podman', 'image', 'pull', image_name], check=True)
pathlib.Path(volume_path).mkdir(parents=True, exist_ok=True)
# Create storage volume
@ -735,10 +722,8 @@ def podman_disable(container_name: str):
def podman_uninstall(container_name: str, volume_name: str, image_name: str,
volume_path: str):
"""Remove a podman container's components and systemd unit."""
subprocess.run(['podman', 'volume', 'rm', '--force', volume_name],
check=True)
subprocess.run(['podman', 'image', 'rm', '--ignore', image_name],
check=True)
run(['podman', 'volume', 'rm', '--force', volume_name], check=True)
run(['podman', 'image', 'rm', '--ignore', image_name], check=True)
volume_file = pathlib.Path(
'/etc/containers/systemd/') / f'{volume_name}.volume'
volume_file.unlink(missing_ok=True)
@ -825,8 +810,10 @@ def run_as_user(command, username, **kwargs):
def run(command, **kwargs):
"""Run subprocess.run but capture stdout and stderr in thread storage."""
collect_stdout = ('stdout' not in kwargs)
collect_stderr = ('stderr' not in kwargs)
collect_stdout = ('stdout' not in kwargs
and 'capture_output' not in kwargs)
collect_stderr = ('stderr' not in kwargs
and 'capture_output' not in kwargs)
if collect_stdout:
kwargs['stdout'] = subprocess.PIPE
@ -834,11 +821,20 @@ def run(command, **kwargs):
if collect_stderr:
kwargs['stderr'] = subprocess.PIPE
process = subprocess.run(command, **kwargs)
if collect_stdout and actions.thread_storage:
actions.thread_storage.stdout += process.stdout
try:
process = subprocess.run(command, **kwargs)
if collect_stdout and hasattr(actions.thread_storage, 'stdout'):
actions.thread_storage.stdout += process.stdout
if collect_stderr and actions.thread_storage:
actions.thread_storage.stderr += process.stderr
if collect_stderr and hasattr(actions.thread_storage, 'stderr'):
actions.thread_storage.stderr += process.stderr
except subprocess.CalledProcessError as exception:
if exception.stdout and hasattr(actions.thread_storage, 'stdout'):
actions.thread_storage.stdout += exception.stdout
if exception.stderr and hasattr(actions.thread_storage, 'stderr'):
actions.thread_storage.stderr += exception.stderr
raise exception
return process

View File

@ -20,7 +20,7 @@ logger = logging.getLogger(__name__)
socket_path = '/run/freedombox/privileged.socket'
thread_storage = None
thread_storage = threading.local()
# An alias for 'str' to mark some strings as sensitive. Sensitive strings are
@ -88,6 +88,9 @@ def _read_from_server(client_socket: socket.socket) -> bytes:
response += chunk
if not response:
raise ConnectionError('Server returned empty response')
return json.loads(response)
@ -170,8 +173,8 @@ def _wait_for_server_response(func, module_name, action_name, args, kwargs,
module = importlib.import_module(return_value['exception']['module'])
exception_class = getattr(module, return_value['exception']['name'])
exception = exception_class(*return_value['exception']['args'])
exception.stdout = return_value['exception']['stdout'].encode()
exception.stderr = return_value['exception']['stderr'].encode()
exception.stdout = return_value['exception'].get('stdout', b'').encode()
exception.stderr = return_value['exception'].get('stderr', b'').encode()
def _get_html_message():
"""Return an HTML format error that can be shown in messages."""
@ -364,7 +367,6 @@ class JSONEncoder(json.JSONEncoder):
def _setup_thread_storage():
"""Setup collection of stdout/stderr from any process in this thread."""
global thread_storage
thread_storage = threading.local()
thread_storage.stdout = b''
thread_storage.stderr = b''
@ -376,14 +378,13 @@ def _clear_thread_storage():
cleaned up after a thread terminates.
"""
global thread_storage
if thread_storage:
thread_storage.stdout = None
thread_storage.stderr = None
thread_storage = None
thread_storage.stdout = None
thread_storage.stderr = None
def get_return_value_from_exception(exception):
"""Return the value to return from server when an exception is raised."""
global thread_storage
return_value = {
'result': 'exception',
'exception': {
@ -391,14 +392,10 @@ def get_return_value_from_exception(exception):
'name': type(exception).__name__,
'args': exception.args,
'traceback': traceback.format_tb(exception.__traceback__),
'stdout': '',
'stderr': ''
'stdout': getattr(thread_storage, 'stdout', b'').decode(),
'stderr': getattr(thread_storage, 'stderr', b'').decode(),
}
}
if thread_storage:
return_value['exception']['stdout'] = thread_storage.stdout.decode()
return_value['exception']['stderr'] = thread_storage.stderr.decode()
return return_value
@ -431,8 +428,6 @@ def privileged_handle_json_request(
try:
request = _parse_request()
logger.info('Received request for %s..%s(..)', request['module'],
request['action'])
arguments = {'args': request['args'], 'kwargs': request['kwargs']}
_setup_thread_storage()
return_value = _privileged_call(request['module'], request['action'],
@ -495,6 +490,8 @@ def _privileged_call(module_name, action_name, arguments):
_privileged_assert_valid_arguments(func, arguments)
_log_action(func, module_name, action_name, arguments['args'],
arguments['kwargs'], run_in_background=False)
try:
return_values = func(*arguments['args'], **arguments['kwargs'])
if isinstance(return_values, io.BufferedReader):
@ -503,6 +500,11 @@ def _privileged_call(module_name, action_name, arguments):
return_value = {'result': 'success', 'return': return_values}
except Exception as exception:
return_value = get_return_value_from_exception(exception)
logger.exception(
'Error running action: %s..%s(..): %s\nstdout:\n%s\nstderr:\n%s\n',
module_name, action_name, exception,
return_value['exception']['stdout'],
return_value['exception']['stderr'])
return return_value

View File

@ -6,7 +6,6 @@ pytest configuration for all tests.
import importlib
import os
import pathlib
import subprocess
from unittest.mock import patch
import pytest
@ -188,7 +187,8 @@ def fixture_mock_run_as_user():
"""A fixture to override action_utils.run_as_user."""
def _bypass_runuser(*args, username, **kwargs):
return subprocess.run(*args, **kwargs)
from plinth import action_utils
return action_utils.run(*args, **kwargs)
with patch('plinth.action_utils.run_as_user') as mock:
mock.side_effect = _bypass_runuser

View File

@ -91,6 +91,13 @@ class Daemon(app.LeaderComponent, log.LogEmitter):
def ensure_running(self):
"""Ensure a service is running and return to previous state."""
from plinth.privileged import service as service_privileged
if action_utils.service_show(self.unit)['LoadState'] == 'not-found':
# The service's package not installed yet, don't try to start it
# and later stop it after it is installed.
yield False # Not running
return
starting_state = self.is_running()
if not starting_state:
service_privileged.enable(self.unit)

View File

@ -6,12 +6,14 @@ Uses utilities from 'mysql-client' package such as 'mysql' and 'mysqldump'.
import subprocess
from .. import action_utils
def run_query(database_name: str, query: str) -> subprocess.CompletedProcess:
"""Run a database query using 'root' user.
Does not ensure that the database server is running.
"""
return subprocess.run(
return action_utils.run(
['mysql', '--user=root', '--database', database_name],
input=query.encode('utf-8'), check=True)

View File

@ -6,7 +6,6 @@ Uses utilities from 'postgres' package such as 'psql' and 'pg_dump'.
import os
import pathlib
import subprocess
from plinth import action_utils
@ -14,7 +13,7 @@ from plinth import action_utils
def _run_as(command, **kwargs):
"""Run a command as 'postgres' user."""
command = ['sudo', '--user', 'postgres'] + command
return subprocess.run(command, check=True, **kwargs)
return action_utils.run(command, check=True, **kwargs)
def run_query(query):

View File

@ -51,8 +51,13 @@ def _run():
def schedule(interval, method, data=None, in_thread=True, repeat=True,
add_jitter=True):
"""Schedule a recurring call to a method with fixed interval."""
add_jitter=True, develop_interval=None):
"""Schedule a recurring call to a method with fixed interval.
develop_interval is number of seconds to schedule the task after when
running in development mode. A value of 180 seconds assumed if the value is
set to None or 0.
"""
def _runner():
"""Run the target method and log and exceptions."""
@ -74,8 +79,8 @@ def schedule(interval, method, data=None, in_thread=True, repeat=True,
# When running in development mode, reduce the interval for tasks so that
# they are triggered quickly and frequently to facilitate debugging.
if cfg.develop and interval > 180:
interval = 180
if cfg.develop:
interval = min(interval, develop_interval or 180)
if add_jitter:
# Add or subtract 5% random jitter to given interval to avoid many

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-04-16 02:28+0000\n"
"Last-Translator: MohammedSaalif <2300031323@kluniversity.in>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/freedombox/"
@ -36,27 +36,27 @@ msgstr "الخدمة {service_name} نشِطة"
msgid "FreedomBox"
msgstr "صندوق الحرية"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "الخدمة {service_name} نشِطة"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "يستمع لمنفذ {kind} {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "يستمع لمنفذ {kind} {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "اتصل بـ {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "يتعذر الاتصال بـ {host}:{port}"
@ -220,12 +220,12 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr "تسمح النسخ الاحتياطية بإنشاء وإدارة أرشيفات النسخ الاحتياطي."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "النسخ الاحتياطية"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -233,19 +233,19 @@ msgstr ""
"تمكين جدول النسخ الاحتياطي التلقائي لسلامة البيانات. تفضل موقع النسخ "
"الاحتياطي عن بعد المشفر أو قرص إضافي متصل."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "تمكين جدول النسخ الاحتياطي"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "انتقل إلى {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -254,7 +254,7 @@ msgstr ""
"فشلت عملية النسخ الاحتياطي المجدولة. لم تنجح المحاولات السابقة للنسخ "
"الاحتياطي البالغ عددها {error_count}. الخطأ الأخير هو: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "خطأ أثناء النسخ الاحتياطي"
@ -1548,76 +1548,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -8033,7 +8033,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8376,14 +8376,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8391,25 +8391,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\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/"
@ -34,27 +34,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -211,37 +211,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1528,76 +1528,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -8037,7 +8037,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8380,14 +8380,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8395,25 +8395,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -30,27 +30,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -205,37 +205,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1518,76 +1518,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -7986,7 +7986,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8329,14 +8329,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8344,25 +8344,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"PO-Revision-Date: 2025-09-01 17:02+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-09-24 03:02+0000\n"
"Last-Translator: 109247019824 "
"<109247019824@users.noreply.hosted.weblate.org>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/freedombox/"
@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.13.1-dev\n"
"X-Generator: Weblate 5.14-dev\n"
#: plinth/config.py:103
#, python-brace-format
@ -34,27 +34,27 @@ msgstr "Контейнерът {container_name} работи"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Услугата {service_name} работи"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Слушане на {kind} порт {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Слушане на {kind} порт {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Свързване с {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Не може да се свърже с {host}:{port}"
@ -218,12 +218,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Създаване и управление на архиви с резервни копия."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Резервни копия"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -232,19 +232,19 @@ msgstr ""
"Предпочетете шифровано местоположение за отдалечено архивиране или "
"допълнително свързан диск."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Включване на резервни копия по график"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Към {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -254,7 +254,7 @@ msgstr ""
"опита за създаване на резервно копие са безуспешни. Последната грешка е: "
"{error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Грешка при създаване на резервно копие"
@ -705,24 +705,14 @@ msgid "Restore data from"
msgstr "Възстановяване на данни от"
#: 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 its\n"
#| " contents. You can choose the apps you wish to restore after "
#| "uploading a\n"
#| " backup file.\n"
#| " "
#, python-format
msgid ""
"Upload a backup file downloaded from another %(box_name)s to restore its "
"contents. You can choose the apps you wish to restore after uploading a "
"backup file."
msgstr ""
"\n"
" Качете резервно копие от %(box_name)s, за да го възстановите. Ще "
"можете да изберете приложенията, които да бъдат възстановени.\n"
" "
"Качете резервно копие от %(box_name)s, за да го възстановите. Ще можете да "
"изберете приложенията, които да бъдат възстановени."
#: plinth/modules/backups/templates/backups_upload.html:31
#, python-format
@ -1620,53 +1610,53 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Диагностика"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "пропусната"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "преминала"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "неуспех"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "грешка"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "предупреждение"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "МБ"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "ГБ"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"За да намалее използваната памет, трябва да изключите някои приложения."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Не трябва да инсталирате нови приложения."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1675,25 +1665,25 @@ msgstr ""
"Системата разполага с малко памет: използвана {percent_used}%, свободна "
"{memory_available}{memory_available_unit}. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Паметта е малко"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Диагностициране"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
"По време на обичайната проверка са намерени {issue_count} неизправности."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Резултати от диагностиката"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Резултати от диагностиката"
@ -8417,7 +8407,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Обновяване на дистрибуцията"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Проверка за задържани от обновяване пакети"
@ -8457,15 +8447,7 @@ msgstr "Нови възможности"
#: plinth/modules/upgrades/templates/backports-firstboot.html:14
#: plinth/modules/upgrades/templates/upgrades_configure.html:69
#, fuzzy, python-format
#| msgid ""
#| "Frequent feature updates allow the %(box_name)s Service, plus a very "
#| "limited set of software, to receive new features more frequently (from "
#| "the backports repository). This results in receiving some new features "
#| "within weeks, instead of only once every 2 years or so. Note that "
#| "software with frequent feature updates does not have support from the "
#| "Debian Security Team. Instead, they are maintained by contributors to "
#| "Debian and the %(box_name)s community."
#, python-format
msgid ""
"Frequent feature updates allow the %(box_name)s Service, plus a very limited "
"set of software, to receive new features more frequently (from the backports "
@ -8477,11 +8459,11 @@ msgid ""
msgstr ""
"Честото обновяване на възможности помага на услугата на %(box_name)s, както "
"и на много ограничен набор от софтуер да получават по-често нови възможности "
"(от хранилището backports). Това води до получаване на някои нови "
"възможности в рамките на седмици вместо веднъж на около 2 години. Обърнете "
"внимание, че софтуерът с често обновяване на възможностите не се ползва от "
"подкрепата на екипа по сигурността на Дебиан. Вместо това той се поддържа от "
"сътрудници на Дебиан и общността на %(box_name)s."
"(от хранилището backports или unstable). Това води до получаване на някои "
"нови възможности в рамките на седмици вместо веднъж на около 2 години. "
"Обърнете внимание, че софтуерът с често обновяване на възможностите не се "
"ползва от подкрепата на екипа по сигурността на Дебиан. Вместо това той се "
"поддържа от сътрудници на Дебиан и общността на %(box_name)s."
#: plinth/modules/upgrades/templates/backports-firstboot.html:26
msgid ""
@ -8846,7 +8828,7 @@ msgstr "Грешка при започване на обновяване."
msgid "Frequent feature updates activated."
msgstr "Честото обновяване на пакети е включено."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -8857,7 +8839,7 @@ msgstr ""
"получи достъп, някои приложения още имат изискване потребителският профил да "
"бъде част от определена група."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8869,25 +8851,25 @@ msgstr ""
"<em>администратори</em> могат да променят приложенията и настройките на "
"системата."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Потребители и групи"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Достъп до всички услуги и системни настройки"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Проверете записа на LDAP „{search_item}“"
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Проверете настройката на nslcd „{key} {value}“"
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Проверете настройката на nsswitch „{database}“"
@ -9068,13 +9050,7 @@ msgid "The following administrator accounts exist in the system."
msgstr "В системата съществуват следните администраторски профили."
#: plinth/modules/users/templates/users_firstboot.html:56
#, fuzzy, python-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 '{\"args\": [\"USERNAME\", \"PASSWORD\"], \"kwargs\": {}}' "
#| "| sudo /usr/share/plinth/actions/actions users remove_user\". If an "
#| "account is already usable with %(box_name)s, skip this step."
#, python-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 "
@ -9085,7 +9061,7 @@ msgstr ""
"За да създадете профил, който може да бъде използван с %(box_name)s, "
"премахнете тези профили от командния ред и презаредете страницата. От "
"команднен ред изпълнете командата „echo '{\"args\": [\"USERNAME\", "
"\"PASSWORD\"], \"kwargs\": {}}' | sudo /usr/share/plinth/actions/actions "
"\"AUTH_USER\", \"AUTH_PASSWORD\"], \"kwargs\": {}}' | sudo freedombox-cmd "
"users remove_user“. Ако профилът вече може да се използва с %(box_name)s, "
"прескочете тази стъпка."
@ -10016,10 +9992,8 @@ msgid "Clear all tags"
msgstr "Изчистване на всички етикети"
#: plinth/templates/toolbar.html:39 plinth/templates/toolbar.html:40
#, fuzzy
#| msgid "Logs"
msgid "View Logs"
msgstr "Дневник"
msgstr "Преглед на дневника"
#: plinth/templates/toolbar.html:46 plinth/templates/toolbar.html:47
msgid "Backup"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-04-01 03:02+0000\n"
"Last-Translator: MURALA SAI GANESH <saiganeshmurala@gmail.com>\n"
"Language-Team: Bengali <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "সেবা {service_name} চলছে"
msgid "FreedomBox"
msgstr "ফ্রিডমবক্স"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "সেবা {service_name} চলছে"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} পোর্টে শ্রবণ {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} পোর্টে শোনা {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host} এর সাথে সংযুক্ত: {port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host} এ সংযুক্ত হতে পারে না: {port}"
@ -211,37 +211,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1524,80 +1524,80 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "কারণ নির্ণয়"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Diagnostics"
msgid "Running diagnostics"
msgstr "কারণ নির্ণয়"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostics"
msgid "Diagnostics results"
msgstr "কারণ নির্ণয়"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -8057,7 +8057,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8402,14 +8402,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8417,25 +8417,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-06-25 22:04+0000\n"
"Last-Translator: kosagi <marti.torra@natana.cat>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "El servei {service_name} està en marxa"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "El servei {service_name} està en marxa"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Escoltant a {kind} port {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Escoltant a {kind} port {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Connecta't a {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "No s'ha pogut connectar a {host}:{port}"
@ -223,12 +223,12 @@ msgid "Backups allows creating and managing backup archives."
msgstr ""
"Còpies de Seguretat permet crear i gestionar arxius de còpia de seguretat."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Còpies de Seguretat"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -237,19 +237,19 @@ msgstr ""
"seguretat de les dades. Prefereix una ubicació de còpia de seguretat remota "
"xifrada o un disc addicional connectat."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Activa una programació de Còpies de Seguretat"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Ves a {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -259,7 +259,7 @@ msgstr ""
"intents de còpia de seguretat no han tingut èxit. Lúltim error és: "
"{error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Error al fer la Còpia de Seguretat"
@ -1685,52 +1685,52 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnòstics"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "omès"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "passat"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "fallat"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "error"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "avís"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "Hauries de desactivar algunes aplicacions per reduir l'ús de memòria."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "No hauries dinstal·lar cap aplicació nova en aquest sistema."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1739,24 +1739,24 @@ msgstr ""
"El sistema té poca memòria: {percent_used}% utilitzada, {memory_available} "
"{memory_available_unit} lliures. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Memòria Baixa"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Executant diagnòstics"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "S'han trobat {issue_count} problemes durant les proves rutinàries."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Resultats del diagnòstic"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Ves als resultats del diagnòstic"
@ -8417,7 +8417,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8760,14 +8760,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8775,25 +8775,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"PO-Revision-Date: 2025-09-20 19:02+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-09-28 07:02+0000\n"
"Last-Translator: Jiří Podhorecký <j.podhorecky@volny.cz>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/freedombox/"
"freedombox/cs/>\n"
@ -33,27 +33,27 @@ msgstr "Kontejner {container_name} je spuštěn"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Služba {service_name} je spuštěná"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Spojení očekáváno na {kind} portu {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Spojení očekáváno na {kind} portu {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Připojit k {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Nedaří se připojit k {host}:{port}"
@ -215,12 +215,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Zálohy umožňují vytváření a správu zálohových archivů."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Zálohy"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -228,19 +228,19 @@ msgstr ""
"Povolit automatický plán zálohování pro bezpečnost dat. Upřednostněte "
"šifrované vzdálené umístění zálohování nebo další připojený disk."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Povolení plánu zálohování"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Jít na {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -249,7 +249,7 @@ msgstr ""
"Naplánované zálohování se nezdařilo. Minulé pokusy o zálohování s počtem "
"chyb {error_count} nebyly úspěšné. Poslední chyba je: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Chyba při zálohování"
@ -1640,54 +1640,56 @@ msgid ""
"This app also shows the <a href=\"{logs_url}\">logs</a> for {box_name} "
"services."
msgstr ""
"Tato aplikace také zobrazuje <a href=\"{logs_url}\">protokoly</a> pro služby "
"{box_name}."
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnostika"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "přeskočeno"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "prošlo"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "selhalo"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "chyba"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "varování"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "Měli byste zakázat některé aplikace, abyste snížili využití paměti."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Do tohoto systému byste neměli instalovat žádné nové aplikace."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1696,24 +1698,24 @@ msgstr ""
"Systém má málo paměti: {percent_used}% využité, {memory_available} "
"{memory_available_unit} volné. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Málo paměti"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Spuštění diagnostiky"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "Při rutinních testech bylo nalezeno {issue_count} problémů."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Výsledky diagnostiky"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Přejít na výsledky diagnostiky"
@ -9067,7 +9069,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Aktualizace distribuce"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Kontrola zadržení balíčku"
@ -9478,7 +9480,7 @@ msgstr "Spouštění přechodu na novější verzi se nezdařilo."
msgid "Frequent feature updates activated."
msgstr "Aktivovány časté aktualizace funkcí."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9489,7 +9491,7 @@ msgstr ""
"aby uživatelský účet byl součástí skupiny, která uživatele opravňuje k "
"přístupu k aplikaci."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9501,25 +9503,25 @@ msgstr ""
"nebo nastavení systému však mohou měnit pouze uživatelé skupiny <em>admin</"
"em>."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Uživatelé a skupiny"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Přístup ke všem službám a nastavení systému"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Zkontrolujte LDAP položku „{search_item}“"
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Zkontrolujte konfiguraci nslcd \"{key} {value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Zkontrolujte konfiguraci nsswitch \" {database}\""
@ -10437,13 +10439,7 @@ msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
#, fuzzy, python-format
#| msgid ""
#| "This is an internal error and not something you caused or can fix. Please "
#| "report the error on the <a href=\"https://salsa.debian.org/freedombox-"
#| "team/freedombox/issues\">bug tracker</a> so we can fix it. Also, please "
#| "attach the <a href=\"%(status_log_url)s\">status log</a> to the bug "
#| "report."
#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the <a href=\"https://salsa.debian.org/freedombox-team/"
@ -10453,29 +10449,23 @@ msgstr ""
"Jedná se o interní chybu, kterou jste nezpůsobili ani ji nemůžete opravit. "
"Nahlaste prosím chybu na <a href=\"https://salsa.debian.org/freedombox-team/"
"freedombox/issues\">sledovači chyb</a>, abychom ji mohli opravit. K hlášení "
"chyby prosím připojte také <a href=\"%(status_log_url)s\">status log</a>."
"chyby prosím připojte také <a href=\"%(logs_url)s\">protokoly</a>."
#: plinth/templates/app-header.html:26
msgid "Installation"
msgstr "Instalace"
#: plinth/templates/app-logs.html:12
#, fuzzy
#| msgid ""
#| "These are the last %(num_lines)s lines of the status log for this web "
#| "interface. If you want to report a bug, please use the <a href=\"https://"
#| "salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> and "
#| "attach this status log to the bug report."
msgid ""
"These are the last lines of the logs for services involved in this app. If "
"you want to report a bug, please use the <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">bug tracker</a> and attach this log to "
"the bug report."
msgstr ""
"Toto je posledních %(num_lines)s řádků stavového protokolu pro toto webové "
"rozhraní. Pokud chcete nahlásit chybu, použijte prosím <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\">prohlížeč chyb</a> a "
"připojte tento stavový protokol k hlášení chyby."
"Toto jsou poslední řádky protokolů služeb souvisejících s touto aplikací. "
"Pokud chcete nahlásit chybu, použijte prosím <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> a "
"připojte tento protokol k hlášení o chybě."
#: plinth/templates/app-logs.html:26
msgid ""
@ -10736,10 +10726,8 @@ msgid "Clear all tags"
msgstr "Vymazat všechny štítky"
#: plinth/templates/toolbar.html:39 plinth/templates/toolbar.html:40
#, fuzzy
#| msgid "Logs"
msgid "View Logs"
msgstr "Protokoly"
msgstr "Zobrazit Protokoly"
#: plinth/templates/toolbar.html:46 plinth/templates/toolbar.html:47
msgid "Backup"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Danish <https://hosted.weblate.org/projects/freedombox/"
@ -36,27 +36,27 @@ msgstr "Tjenesten {service_name} er aktiv"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Tjenesten {service_name} er aktiv"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Lytter på {kind} port {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Lytter på {kind} port {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Forbind til {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Kan ikke forbinde til {host}:{port}"
@ -234,23 +234,23 @@ msgid "Backups allows creating and managing backup archives."
msgstr ""
"Sikkerhedskopiering lader dig oprette og administrere sikkerhedskopier."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Sikkerhedskopiering"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, fuzzy, python-brace-format
@ -258,14 +258,14 @@ msgstr ""
msgid "Go to {app_name}"
msgstr "Om {box_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
#, fuzzy
#| msgid "Existing Backups"
msgid "Error During Backup"
@ -1724,52 +1724,52 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnosticering"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "lykkedes"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "mislykkedes"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "fejl"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "Du bør deaktivere nogle applikationer for at frigøre hukommelse."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Du bør ikke installere flere applikationer på dette system."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1779,28 +1779,28 @@ msgstr ""
"{memory_available} {memory_available_unit} fri{percent_used}{percent_used}. "
"{advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Lav hukommelse"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "Kør Diagnostik"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "Diagnostiske Resultater"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -9269,7 +9269,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Automatisk opdatering deaktiveret"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9658,14 +9658,14 @@ msgstr "Kunne ikke starte opdatering."
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9673,25 +9673,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Brugere og Grupper"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Kontrol af LDAP-konfiguration \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"PO-Revision-Date: 2025-09-11 18:01+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-09-29 19:01+0000\n"
"Last-Translator: Dietmar <sagen@permondes.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/freedombox/"
"freedombox/de/>\n"
@ -35,27 +35,27 @@ msgstr "Container {container_name} wird ausgeführt"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Der Dienst {service_name} wird ausgeführt"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Gebunden auf {kind} Port {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Gebunden an {kind} Port {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Verbinden mit {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Verbindung mit {host}:{port} fehlgeschlagen"
@ -221,12 +221,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Erstellen und Verwalten von Sicherungs-Archiven."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Sicherungen"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -235,19 +235,19 @@ msgstr ""
"Bevorzugen Sie einen verschlüsselten Remote-Backup-Speicherort oder einen "
"zusätzlich angeschlossenen Datenträger."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Aktivieren eines Sicherungszeitplans"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Gehe zu {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -257,7 +257,7 @@ msgstr ""
"Versuche zur Sicherung waren nicht erfolgreich. Der letzte Fehler ist: "
"{error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Fehler beim Sichern"
@ -1680,56 +1680,58 @@ msgid ""
"This app also shows the <a href=\"{logs_url}\">logs</a> for {box_name} "
"services."
msgstr ""
"Diese App zeigt auch die <a href=\"{logs_url}\">Protokolle</a> für "
"{box_name} Dienste an."
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnose"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "übersprungen"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "bestanden"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "gescheitert"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "Fehler"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "Warnung"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Sie sollten einige Anwendungen deaktivieren, um den Speicherverbrauch zu "
"reduzieren."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Sie sollten auf diesem System keine neuen Anwendungen installieren."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1738,24 +1740,24 @@ msgstr ""
"Das System hat wenig Speicherplatz: {percent_used}% verwendet, "
"{memory_available}·{memory_available_unit}frei. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Wenig Speicher"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Laufende Diagnosen"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "Bei Routinetests wurden {issue_count} Probleme gefunden."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Diagnose-Ergebnisse"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Zu Diagnose-Ergebnisse gehen"
@ -9263,7 +9265,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Distributionsaktualisierung"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Auf Paket-Sperren überprüfen"
@ -9693,7 +9695,7 @@ msgstr "Starten der Aktualisierung fehlgeschlagen."
msgid "Frequent feature updates activated."
msgstr "Häufige Funktions-Updates aktiviert."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9704,7 +9706,7 @@ msgstr ""
"muss ein Benutzerkonto Teil einer Gruppe sein, damit ein Benutzer auf die "
"App zugreifen kann."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9716,25 +9718,25 @@ msgstr ""
"dürfen nur Mitglieder der Gruppe <em>admin</em> Apps oder "
"Systemeinstellungen ändern."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Benutzer und Gruppen"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Zugriff auf alle Anwendungen und Systemeinstellungen"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "LDAP-Eintrag „{search_item}“ prüfen"
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Prüfen Sie die nslcd-Konfiguration \"{key} {value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Prüfen Sie die nsswitch-Konfiguration \"{database}\""
@ -10687,46 +10689,35 @@ msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
#, fuzzy, python-format
#| msgid ""
#| "This is an internal error and not something you caused or can fix. Please "
#| "report the error on the <a href=\"https://salsa.debian.org/freedombox-"
#| "team/freedombox/issues\">bug tracker</a> so we can fix it. Also, please "
#| "attach the <a href=\"%(status_log_url)s\">status log</a> to the bug "
#| "report."
#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the <a href=\"https://salsa.debian.org/freedombox-team/"
"freedombox/issues\">bug tracker</a> so we can fix it. Also, please attach "
"the <a href=\"%(logs_url)s\">logs</a> to the bug report."
msgstr ""
"Dies ist ein interner Fehler und nicht etwas, das Sie verursacht haben oder "
"beheben können. Bitte melden Sie den Fehler im <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\">online Fehlermelder</"
"a>, so dass wir ihn beheben können. Fügen Sie auch das <a "
"href=\"%(status_log_url)s\">Statusprotokoll</a> dem Fehlerbericht bei."
"Dies ist ein interner Fehler, den Sie weder verursacht haben noch beheben "
"können. Bitte melden Sie den Fehler im <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">Bug-Tracker</a>, damit wir ihn beheben "
"können. Fügen Sie dem Fehlerbericht bitte auch die <a "
"href=\"%(logs_url)s\">Protokolle</a> bei."
#: plinth/templates/app-header.html:26
msgid "Installation"
msgstr "Installation"
#: plinth/templates/app-logs.html:12
#, fuzzy
#| msgid ""
#| "These are the last %(num_lines)s lines of the status log for this web "
#| "interface. If you want to report a bug, please use the <a href=\"https://"
#| "salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> and "
#| "attach this status log to the bug report."
msgid ""
"These are the last lines of the logs for services involved in this app. If "
"you want to report a bug, please use the <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">bug tracker</a> and attach this log to "
"the bug report."
msgstr ""
"Dies sind die letzten %(num_lines)s Zeilen des Statusprotokolls der "
"Weboberfläche. Bitte melden Sie den Fehler im <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\">online Fehlerverfolger</"
"a> und fügen diese Ausgabe hinzu."
"Dies sind die letzten Zeilen der Protokolle für Dienste, die an dieser App "
"beteiligt sind. Wenn Sie einen Fehler melden möchten, verwenden Sie bitte "
"den <a href=\"https://salsa.debian.org/freedombox-team/freedombox/"
"issues\">Bug-Tracker</a> und fügen Sie dieses Protokoll dem Fehlerbericht "
"bei."
#: plinth/templates/app-logs.html:26
msgid ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\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"
@ -31,27 +31,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -206,37 +206,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1519,76 +1519,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -7987,7 +7987,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8330,14 +8330,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8345,25 +8345,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2022-09-14 17:20+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/freedombox/"
@ -34,29 +34,29 @@ msgstr "Το πρόγραμμα {service_name} είναι ενεργοποιημ
msgid "FreedomBox"
msgstr "Freedombox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Το πρόγραμμα {service_name} είναι ενεργοποιημένο"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
"Το πρόγραμμα είναι προσβάσιμο στο πρωτόκολλο {kind} στη διεύθυνση "
"{listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Το πρόγραμμα είναι προσβάσιμο στο πρωτόκολλο {kind} στη θύρα {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Συνδεθείτε στη διεύθυνση {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Δεν είναι δυνατή η σύνδεση στη διεύθυνση {host}:{port}"
@ -238,23 +238,23 @@ msgstr ""
"Τα αντίγραφα ασφαλείας επιτρέπουν τη δημιουργία και τη διαχείριση εφεδρικών "
"αρχείων (backups)."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Αντίγραφα ασφαλείας"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, fuzzy, python-brace-format
@ -262,14 +262,14 @@ msgstr ""
msgid "Go to {app_name}"
msgstr "Σχετικά με το {box_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
#, fuzzy
#| msgid "Existing Backups"
msgid "Error During Backup"
@ -1752,86 +1752,86 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Διαγνωστικά"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
#, fuzzy
#| msgid "Quassel"
msgid "passed"
msgstr "Quassel"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
#, fuzzy
#| msgid "Setup failed."
msgid "failed"
msgstr "Η εγκατάσταση απέτυχε."
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
#, fuzzy
#| msgid "Git"
msgid "GiB"
msgstr "Git"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "Εκτέλεση διαγνωστικών"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "Αποτελέσματα διαγνωστικών τεστ"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -9503,7 +9503,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Oι αυτόματες ενημερώσεις απενεργοποιήθηκαν"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9892,7 +9892,7 @@ msgstr "Η εκκίνηση της αναβάθμισης απέτυχε."
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
#, fuzzy
#| msgid ""
#| "Create and managed user accounts. These accounts serve as centralized "
@ -9909,7 +9909,7 @@ msgstr ""
"είναι μέρος μιας ομάδας για να εξουσιοδοτήσουν το χρήστη να αποκτήσει "
"πρόσβαση στην εφαρμογή."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9921,25 +9921,25 @@ msgstr ""
"σελίδα. Ωστόσο, μόνο οι χρήστες της ομάδας <em>admin</em> μπορούν να "
"τροποποιήσουν τις εφαρμογές ή τις ρυθμίσεις του συστήματος."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Χρήστες και ομάδες"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Πρόσβαση σε όλες τις υπηρεσίες και τις ρυθμίσεις συστήματος"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Ελέγξτε την καταχώρηση LDAP \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2024-11-01 17:00+0000\n"
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "{service_name} se está ejecutando"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "{service_name} se está ejecutando"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Escuchando en el puerto {kind} {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Escuchando en el puerto {port} {kind}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Conectar a {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "No se pudo conectar a {host}:{port}"
@ -230,12 +230,12 @@ msgstr ""
"Copias de seguridad le permite crear y gestionar archivos de copia de "
"seguridad."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Copias de seguridad"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -243,19 +243,19 @@ msgstr ""
"Por la seguridad de sus datos habilite un respaldo agendado. Preferíblemente "
"uno remoto o en un disco externo."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Habilitar un respaldo agendado"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Ir a {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -264,7 +264,7 @@ msgstr ""
"Falló un respaldo agendado. Los últimos {error_count} intentos no lo "
"lograron. El último fallo es: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Error al respaldar"
@ -1715,53 +1715,53 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnósticos"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "omitido"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "ok."
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "Falló"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "error"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "aviso"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Habría que deshabilitar algunas apps para reducir el consumo de memoria."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Hay que evitar instalar más apps en este sistema."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1770,25 +1770,25 @@ msgstr ""
"El sistema va justo de memoria: {percent_used}% usada, {memory_available} "
"{memory_available_unit} libres. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Poca memoria libre"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Ejecutando los diagnósticos"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
"Se han encontrado {issue_count} problemas durante las pruebas rutinarias."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Resultados de los diagnósticos"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Ir a los resultados de los diagnósticos"
@ -9333,7 +9333,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Iniciada la actualización de la distribución"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Comprobar si hay paquetes retenidos"
@ -9740,7 +9740,7 @@ msgstr "No se ha podido iniciar la actualización."
msgid "Frequent feature updates activated."
msgstr "Las actualizaciones funcionales frecuentes están activadas."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9751,7 +9751,7 @@ msgstr ""
"requieren que además la cuenta de usuario conste en un grupo para "
"autorizarles a acceder."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9763,25 +9763,25 @@ msgstr ""
"sólo los usuarios del grupo <em>admin</em> pueden cambiar configuraciones de "
"apps o del sistema."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Usuarias/os y grupos"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Acceso a todos los servicios y configuraciones del sistema"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Comprobar la entrada LDAP \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Comprobar la configuración de nslcd \"{key} {value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Comprueba la configuración del nsswitch \"{database}\""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-07-20 18:01+0000\n"
"Last-Translator: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>\n"
"Language-Team: Estonian <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "{service_name} teenus töötab"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "{service_name} teenus töötab"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -209,37 +209,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Viga varundamisel"
@ -1524,76 +1524,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -7992,7 +7992,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8335,14 +8335,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8350,25 +8350,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Persian <https://hosted.weblate.org/projects/freedombox/"
@ -35,27 +35,27 @@ msgstr "سرویس {service_name} در حال اجراست"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "سرویس {service_name} در حال اجراست"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, fuzzy, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "در حال گوش دادن به پورت {kind} در {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, fuzzy, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "در حال گوش دادن به پورت {kind} یعنی {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, fuzzy, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "اتصال به {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, fuzzy, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "نمی‌توان به {host}:{port} وصل شد"
@ -231,37 +231,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "رفتن به {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "خظا هنگام پشتیبان‌گیری"
@ -1698,80 +1698,80 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "عیب‌یابی"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "اجرای عیب‌یابی"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "نتیجهٔ عیب‌یابی"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -8851,7 +8851,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "برنامه نصب شد."
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9213,14 +9213,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9228,25 +9228,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Plinth 0.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\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-"
@ -33,29 +33,29 @@ msgstr "SERVICE DISCOVERY SERVER IS RUNNING"
msgid "FreedomBox"
msgstr "FREEDOMBOX"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, fuzzy, python-brace-format
#| msgid "Service discovery server is running"
msgid "Service {service_name} is running"
msgstr "SERVICE DISCOVERY SERVER IS RUNNING"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "LISTENING ON {kind} PORT {listen_address}:{port}"
# LISTENING ON {kind} PORT {port}
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "LISTENING ON {kind} PORT {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "CONNECT TO {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "CANNOT CONNECT TO {host}:{port}"
@ -241,23 +241,23 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, fuzzy, python-brace-format
@ -265,14 +265,14 @@ msgstr ""
msgid "Go to {app_name}"
msgstr "ABOUT {box_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
#, fuzzy
#| msgid "Existing custom services"
msgid "Error During Backup"
@ -1756,82 +1756,82 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "DIAGNOSTICS"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
#, fuzzy
#| msgid "Setup failed."
msgid "failed"
msgstr "SETUP FAILED."
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "RUN DIAGNOSTICS"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "DIAGNOSTIC RESULTS"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -9297,7 +9297,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "AUTOMATIC UPGRADES DISABLED"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9684,14 +9684,14 @@ msgstr "STARTING UPGRADE FAILED."
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9699,25 +9699,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "USERS AND GROUPS"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "CHECK LDAP ENTRY \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-08-21 09:02+0000\n"
"Last-Translator: Coucouf <coucouf@coucouf.fr>\n"
"Language-Team: French <https://hosted.weblate.org/projects/freedombox/"
@ -33,27 +33,27 @@ msgstr "Le conteneur {container_name} est actif"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Le service {service_name} est actif"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Écoute sur le port {kind} {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Écoute sur le port {kind} {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Connexion à {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Impossible de se connecter à {host}:{port}"
@ -219,12 +219,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Sauvegardes permet de créer et de gérer des archives de sauvegarde."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Sauvegardes"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -233,19 +233,19 @@ msgstr ""
"données. Il est préférable dutiliser un emplacement de sauvegarde distant "
"et chiffré, ou un disque externe additionnel."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Activer la planification des sauvegardes"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Aller à {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -254,7 +254,7 @@ msgstr ""
"Une sauvegarde régulière a échoué après {error_count} tentatives. Le dernier "
"message derreur était : {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Erreur pendant la sauvegarde"
@ -1700,54 +1700,54 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnostics"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "ignoré"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "réussi"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "échoué"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "erreur"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "avertissement"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "Mio"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "Gio"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Vous devriez désactiver certaines application pour libérer de la mémoire."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
"Il est déconseillé dinstaller de nouvelles applications sur ce système."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1756,24 +1756,24 @@ msgstr ""
"Le système est bientôt à court de mémoire : {percent_used}% utilisés, "
"{memory_available} {memory_available_unit} libres. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Mémoire disponible faible"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Diagnostics en cours"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "{issue_count} problèmes trouvés lors des tests de routine."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Résultats des diagnostics"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Aller aux résultats des diagnostics"
@ -9314,7 +9314,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Mise à jour de la distribution"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Vérifier la mise en attente des paquets"
@ -9760,7 +9760,7 @@ msgstr "Le lancement de la mise à niveau a échoué."
msgid "Frequent feature updates activated."
msgstr "Mise à jour régulière des fonctionnalités activée."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9771,7 +9771,7 @@ msgstr ""
"Certaines applis demandent en outre que les comptes soient membres dun "
"groupe particulier pour pouvoir accéder à lapplication."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9783,25 +9783,25 @@ msgstr ""
"principale. En revanche, seuls les utilisateurs membres du groupe <em>admin</"
"em> peuvent modifier les applications ou changer les paramètres système."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Utilisateurs et groupes"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Accès à tous les services et à la configuration du système"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Vérification de lentrée LDAP « {search_item} »"
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Vérifier la configuration nslcd \"{key} {value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Vérifier la configuration nsswitch \"{database}\""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2022-12-30 10:51+0000\n"
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
"Language-Team: Galician <https://hosted.weblate.org/projects/freedombox/"
@ -33,27 +33,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Escoitando no porto {kind} {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Escoitando no porto {kind} {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Conectar a {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Non é posíbel conectar con {host}:{port}"
@ -214,37 +214,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1531,76 +1531,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -8042,7 +8042,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8389,14 +8389,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8404,25 +8404,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2021-01-18 12:32+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Gujarati <https://hosted.weblate.org/projects/freedombox/"
@ -33,27 +33,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "ફ્રિડમબોક્ષ"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "સાંભળે છે {kind} પોર્ટ {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "સાંભળે છે {kind} પોર્ટ {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} ને સંપર્ક કરો"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} નો સંપર્ક નથી સાધી શકતા"
@ -222,37 +222,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1630,80 +1630,80 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "તપાસ"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "તપાસ કરો"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "તપાસના પરિણામો"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -8456,7 +8456,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "વપરાશકર્તા રજીસ્ટ્રેશન અક્ષમ છે"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8829,14 +8829,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8844,25 +8844,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-04-29 16:30+0000\n"
"Last-Translator: Thulasi Edhala <thulasiedhala@gmail.com>\n"
"Language-Team: Hindi <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "सेवा {service_name} चल रहा है"
msgid "FreedomBox"
msgstr "स्वतंत्रता बॉक्स"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "सेवा {service_name} चल रहा है"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, fuzzy, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} में सुन कर पोर्ट {listen_address} :{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} में सुन कर पोर्ट{port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} से जुड़े"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} से नहीं जोड़ सखता"
@ -219,12 +219,12 @@ msgstr "एमडीएनएस"
msgid "Backups allows creating and managing backup archives."
msgstr "बैकअपस पुरालेखागार बनाने और प्रबंधित करने की अनुमति देता है।"
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "बैकअप"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -232,19 +232,19 @@ msgstr ""
"डेटा सुरक्षा के लिए स्वचालित बैकअप शेड्यूल सक्षम करें। एन्क्रिप्टेड रिमोट बैकअप स्थान या "
"अतिरिक्त संलग्न डिस्क को प्राथमिकता दें।"
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "बैकअप शेड्यूल सक्षम करें"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "{app_name} पर जाएं"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -253,7 +253,7 @@ msgstr ""
"शेड्यूल किया गया बैकअप विफल रहा। बैकअप के लिए पिछले {error_count} प्रयास सफल नहीं हुए। "
"नवीनतम त्रुटि यह है: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "बैकअप के दौरान त्रुटि"
@ -1729,56 +1729,56 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "निदानिकी"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
#, fuzzy
#| msgid "Quassel"
msgid "passed"
msgstr "क्वासेल"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
#, fuzzy
#| msgid "Setup failed."
msgid "failed"
msgstr "सेटअप विफल."
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "आपको इस सिस्टम पर कोई नया ऐप इंस्टॉल नहीं करना चाहिए।"
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1787,28 +1787,28 @@ msgstr ""
"सिस्टम में मेमोरी कम है: {percent_used}% उपयोग हो चुकी है, {memory_available} "
"{memory_available_unit} खाली है। {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "कम मेमोरी"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "निदानिकी चलिये"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "निदानिकी का परिणाम"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -9298,7 +9298,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "ऑटोमेटिक अपग्रेडस अक्षम किया गया"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9686,14 +9686,14 @@ msgstr "अपग्रेड प्रारंभ करना विफल
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9701,25 +9701,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "यूसरस और समूह"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "सब सर्विसस और सिस्टम सेटिंग्स तक पहुंच"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "एलडीएपी प्रविष्टि चेक करें \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-06-04 15:01+0000\n"
"Last-Translator: András Szűcs "
"<andrascc86288f63c44cb5@users.noreply.hosted.weblate.org>\n"
@ -35,27 +35,27 @@ msgstr "A szolgáltatás fut: {service_name}"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "A szolgáltatás fut: {service_name}"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Figyelés a {kind} porton: {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Figyelés {kind} porton: {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Csatlakozás ide: {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Nem lehet ide csatlakozni: {host}:{port}"
@ -225,12 +225,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Lehetővé teszi a biztonsági mentés létrehozását és kezelését."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Biztonsági mentések"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -238,19 +238,19 @@ msgstr ""
"Automatikus biztonsági mentések ütemezésének engedélyezése. Ha lehet, "
"használj egy titkosított távoli helyet, vagy egy extra külső lemezt."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Ütemezett biztonsági mentés engedélyezése"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Ugrás ide: {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -260,7 +260,7 @@ msgstr ""
"mentésre tett próbálkozás nem sikerült. A legutóbbi hibaüzenet: "
"{error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Hiba történt a biztonsági mentés közben"
@ -1724,52 +1724,52 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Hibaellenőrzés"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "sikerült"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "sikertelen"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "hiba"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "figyelmeztetés"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "A memóriahasználat csökkentése érdekében tilts le néhány alkalmazást."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Ne telepíts további alkalmazásokat erre a rendszerre."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1778,28 +1778,28 @@ msgstr ""
"A rendszerben kevés a memória: {percent_used}% használt, "
"{memory_available} {memory_available_unit} szabad. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Kevés a memória"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "Ellenőrzés indítása"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "Az ellenőrzés eredménye"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -9442,7 +9442,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "A disztribúció frissítése elindult"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9851,7 +9851,7 @@ msgstr "A frissítést nem sikerült elindítani."
msgid "Frequent feature updates activated."
msgstr "Gyakori funkciófrissítések aktiválva."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9862,7 +9862,7 @@ msgstr ""
"alkalmazások megkövetelik továbbá, hogy a felhasználói fiók egy csoport "
"tagja legyen, hogy a felhasználó hozzáférhessen az alkalmazáshoz."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9874,25 +9874,25 @@ msgstr ""
"az <em>admin</em> csoport felhasználói módosíthatják az alkalmazásokat vagy "
"a rendszerbeállításokat."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Felhasználók és csoportok"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Hozzáférés az összes szolgáltatáshoz és rendszerbeállításhoz"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "LDAP-bejegyzés ellenőrzése: \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Indonesian (FreedomBox)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/freedombox/"
@ -29,27 +29,27 @@ msgstr "Layanan {service_name} sedang berjalan"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Layanan {service_name} sedang berjalan"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Mendengarkan pada {kind} port {listen_address}: {port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Mendengarkan {kind} port {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Terhubung ke {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Tidak dapat terhubung ke {host}:{port}"
@ -224,12 +224,12 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr "Cadangan memungkinkan membuat dan mengelola arsip cadangan."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Cadangan"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -237,19 +237,19 @@ msgstr ""
"Aktifkan jadwal cadangan otomatis untuk keamanan data. Lebih disukai lokasi "
"cadangan jarak jauh terenkripsi atau disk terlampir tambahan."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Aktifkan jadwal cadangan"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Pergi ke {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -258,7 +258,7 @@ msgstr ""
"Cadangan yang dijadwalkan gagal. Masalah {error_count} untuk cadangan tidak "
"berhasil. Kesalahan terbaru adalah: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Kesalahan saat cadangan"
@ -1699,54 +1699,54 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnosa"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "LULUS"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "gagal"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "kesalahan"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "peringatan"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MIB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GIB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Anda harus menonaktifkan beberapa aplikasi untuk mengurangi penggunaan "
"memori."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Kamu seharusnya tidak menginstal aplikasi baru di sistem ini."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1755,28 +1755,28 @@ msgstr ""
"Sistem rendah pada memori: {percent_used}% digunakan, {memory_available} "
"{memory_available_unit} gratis. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Memori rendah"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "Jalankan Diagnosa"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "Hasil Diagnosa"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -8788,7 +8788,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Pembaruan distribusi dimulai"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9161,14 +9161,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9176,25 +9176,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"PO-Revision-Date: 2025-09-11 18:02+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-09-29 19:02+0000\n"
"Last-Translator: Dietmar <sagen@permondes.de>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/freedombox/"
"freedombox/it/>\n"
@ -33,27 +33,27 @@ msgstr "Il contenitore {container_name} è in esecuzione"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Il servizio {service_name} è in esecuzione"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "In ascolto sulla porta {kind}{listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "In ascolto sulla porta{port}:{kind}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Connessione a {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Impossibile connettersi a {host}:{port}"
@ -217,37 +217,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr "Backups consente di creare e gestire archivi di backup."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Backup"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Abilita una schedulazione del Backup"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Vai a {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Errore durante il backup"
@ -1617,78 +1617,80 @@ msgid ""
"This app also shows the <a href=\"{logs_url}\">logs</a> for {box_name} "
"services."
msgstr ""
"Questa app mostra anche i <a href=\"{logs_url}\">log</a> per i servizi "
"{box_name}."
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnostica"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "superato"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "fallito"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Esecuzione Diagnostica"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Risultati Diagnostica"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Vai ai risultati diagnostici"
@ -8521,7 +8523,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Aggiornamento della distribuzione"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8872,14 +8874,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8887,25 +8889,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""
@ -9739,13 +9741,7 @@ msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
#, fuzzy, python-format
#| msgid ""
#| "This is an internal error and not something you caused or can fix. Please "
#| "report the error on the <a href=\"https://salsa.debian.org/freedombox-"
#| "team/freedombox/issues\">bug tracker</a> so we can fix it. Also, please "
#| "attach the <a href=\"%(status_log_url)s\">status log</a> to the bug "
#| "report."
#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the <a href=\"https://salsa.debian.org/freedombox-team/"
@ -9755,30 +9751,24 @@ msgstr ""
"Si tratta di un errore interno e non di qualcosa che hai causato o che puoi "
"correggere. Si prega di segnalare l'errore sul <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> in modo "
"da poterlo correggere. Inoltre, si prega di allegare il <a "
"href=\"%(status_log_url)s\">status log</a> alla segnalazione del bug."
"da poterlo correggere. Inoltre, si prega di allegare i <a "
"href=\"%(logs_url)s\">status log</a> alla segnalazione del bug."
#: plinth/templates/app-header.html:26
msgid "Installation"
msgstr ""
#: plinth/templates/app-logs.html:12
#, fuzzy
#| msgid ""
#| "These are the last %(num_lines)s lines of the status log for this web "
#| "interface. If you want to report a bug, please use the <a href=\"https://"
#| "salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> and "
#| "attach this status log to the bug report."
msgid ""
"These are the last lines of the logs for services involved in this app. If "
"you want to report a bug, please use the <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">bug tracker</a> and attach this log to "
"the bug report."
msgstr ""
"Queste sono le ultime %(num_lines)s del status log di questa interfaccia "
"web. Se vuoi riportare un bug, prego usa il <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> e "
"allega questo status log report del bug."
"Queste sono le ultime righe dei status log di questa app. Se vuoi riportare "
"un bug, prego usa il <a href=\"https://salsa.debian.org/freedombox-team/"
"freedombox/issues\">bug tracker</a> e allega questo status log report del "
"bug."
#: plinth/templates/app-logs.html:26
msgid ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2023-05-07 23:50+0000\n"
"Last-Translator: Nobuhiro Iwamatsu <iwamatsu@gmail.com>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "サービス {service_name} は動作中です"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "サービス {service_name} は動作中です"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} port {listen_address}:{port} を 待受中"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} port {port} を待ち受け中"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} に接続する"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} に接続できません"
@ -209,37 +209,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1524,76 +1524,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -7994,7 +7994,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8337,14 +8337,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8352,25 +8352,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\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/"
@ -33,27 +33,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "ಫ್ರೀಡಂಬಾಕ್ಸ್"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -208,37 +208,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1521,76 +1521,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -7991,7 +7991,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8334,14 +8334,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8349,25 +8349,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/freedombox/"
@ -35,27 +35,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -210,37 +210,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1527,76 +1527,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -8015,7 +8015,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8358,14 +8358,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8373,25 +8373,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2022-09-14 17:20+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Latvian <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -209,37 +209,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1526,76 +1526,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -8014,7 +8014,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8357,14 +8357,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8372,25 +8372,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2024-10-27 23:30+0000\n"
"Last-Translator: Sunil Mohan Adapa <sunil@medhas.org>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/"
@ -42,27 +42,27 @@ msgstr "Tjenesten {service_name} kjører"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Tjenesten {service_name} kjører"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Lytter på {kind} port {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Lytter på {kind} port {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Koble til {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Klarer ikke koble til {host}:{port}"
@ -233,12 +233,12 @@ msgid "Backups allows creating and managing backup archives."
msgstr ""
"Sikkerhetskopier tillater opprettelse og behandling av sikkerhetskopiarkiver."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Sikkerhetskopier"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -247,19 +247,19 @@ msgstr ""
"Bruke helst et kryptert fjernlager eller en ekstern ekstradisk som "
"sikkerhetslager."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Aktiver sikkerhetskopitidsplan"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Gå til {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -268,7 +268,7 @@ msgstr ""
"En sikkerhetskopi på tidsplanen feilet. De {error_count} foregående "
"forsøkene lyktes heller ikke. Den siste feilen er: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Feil under sikkerhetskopiering"
@ -1713,84 +1713,84 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnostikk"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
#, fuzzy
#| msgid "Quassel"
msgid "passed"
msgstr "Quassel"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "feilet"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "feil"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
#, fuzzy
#| msgid "Git"
msgid "GiB"
msgstr "Git"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "Du bør skru av noen programmer for å redusere minnebruken."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Du bør ikke installere noen nye programmer på dette systemet."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Lite minne"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "Kjør diagnostikk"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "Diagnostikkresultater"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -9380,7 +9380,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Automatiske oppgraderinger avslått (deaktivert)"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9770,7 +9770,7 @@ msgstr "Å starte oppgradering (upgrade) mislyktes."
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9781,7 +9781,7 @@ msgstr ""
"kan kreve at en brukerkonto er medlem av en gruppe for å gi brukeren tilgang "
"til programmet."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9792,25 +9792,25 @@ msgstr ""
"liste over programmer som er relevante for dem på hjemmesiden. Dog kan kun "
"brukere av <em>admin</em>-gruppen endre programmer eller systeminnstillinger."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Brukere og grupper"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Tilgang til alle tjenester og systeminnstillinger"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Sjekk LDAP-oppføring «{search_item}»"
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-09-17 09:01+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/freedombox/"
@ -35,27 +35,27 @@ msgstr "Container {container_name} wordt uitgevoerd"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Service {service_name} wordt uitgevoerd"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Luistert op {kind} poort {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Luistert op {kind} poort {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Verbind met {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Kan niet verbinden met {host}:{port}"
@ -219,12 +219,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Met back-ups kun je back-uparchieven maken en beheren."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Back-ups"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -233,19 +233,19 @@ msgstr ""
"verhogen. Gebruik bij voorkeur een versleutelde externe back-uplocatie of "
"een extra aangesloten schijf."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Een back-upschema inschakelen"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Ga naar {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -254,7 +254,7 @@ msgstr ""
"Een geplande back-up is mislukt. De vorige {error_count} back-up pogingen "
"zijn ook niet gelukt. De laatste fout was: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Fout tijdens back-up"
@ -1661,53 +1661,53 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnose"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "overgeslagen"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "geslaagd"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "mislukt"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "fout"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "waarschuwing"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Door toepassingen uit te schakelen kan het geheugengebruik worden verminderd."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Extra toepassingen installeren wordt afgeraden."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1716,24 +1716,24 @@ msgstr ""
"Systeem heeft weinig geheugen beschikbaar: {percent_used}% gebruikt, "
"{memory_available} {memory_available_unit} vrij. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Geheugengebrek"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Voer diagnose uit"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "{issue_count} problemen gevonden tijdens routinetests."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Resultaten van diagnose"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Ga naar resultaten van diagnose"
@ -9041,7 +9041,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Distributie-update"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Controleer op blokkerende pakketten"
@ -9420,7 +9420,7 @@ msgstr "Starten van de upgrade is mislukt."
msgid "Frequent feature updates activated."
msgstr "Tussentijdse Software Updates zijn ingeschakeld."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9431,7 +9431,7 @@ msgstr ""
"apps moet een gebruikersaccount deel uitmaken van een groep om de gebruiker "
"toegang te geven tot de toepassing."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9443,25 +9443,25 @@ msgstr ""
"die lid zijn van de <em>admin</em> -groep mogen toepassings- of "
"systeeminstellingen wijzigen."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Gebruikers en Groepen"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Toegang tot alle diensten en systeeminstellingen"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Zoek LDAP item \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Controleer nslcd configuratie \"{key} {value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Controleer nsswitch config \"{database}\""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2024-07-13 12:09+0000\n"
"Last-Translator: Monika <adamdomenek@protonmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/freedombox/"
@ -35,27 +35,27 @@ msgstr "Usługa {service_name} jest uruchomiona"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Usługa {service_name} jest uruchomiona"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Nasłuchuje na {kind} port {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Nasłuchuje na {kind} port {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Podłączony do {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Nie mogę się podłączyć do {host}:{port}"
@ -225,37 +225,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr "Tworzenie i zarządzanie archiwami kopii zapasowych."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Kopie zapasowe"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Idź do {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
#, fuzzy
#| msgid "Existing Backups"
msgid "Error During Backup"
@ -1706,80 +1706,80 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnostyka"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "udało się"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "nie udało się"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "błąd"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "ostrzeżenie"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Powinieneś nie instalować żadnych nowych aplikacji na tym systemie."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "Uruchom diagnostykę"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "Wynik diagnostyki"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -8763,7 +8763,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Rejestracja użytkowników wyłączona"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9135,14 +9135,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9150,25 +9150,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-04-09 22:41+0000\n"
"Last-Translator: tuliogit <wikigeolog@gmx.com>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "O serviço {service_name} está em execução"
msgid "FreedomBox"
msgstr "Freedombox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "O serviço {service_name} está em execução"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Escutando á porta {kind} {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "À escuta de {kind} na porta {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Ligar a {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Não é possível ligar a {host}:{port}"
@ -222,12 +222,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Backups permite criar e gerenciar arquivos de backup."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Cópia de segurança"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -236,19 +236,19 @@ msgstr ""
"segurança dos dados. De preferência, escolha uma localização remota e "
"encriptada ou um disco externo."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Ative o agendamento de cópias de segurança"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Ir para {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -258,7 +258,7 @@ msgstr ""
"anteriores de realizar uma cópia de segurança, nenhuma foi bem sucedida. O "
"erro mais recente é: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Erro durante a cópia de segurança"
@ -1677,53 +1677,53 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnóstico"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "pulou"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "passou"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "fracassado"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "erro"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "aviso"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Você deve desabilitar alguns aplicativos para reduzir o uso de memória."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Você não deve instalar nenhum aplicativo novo neste sistema."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1732,24 +1732,24 @@ msgstr ""
"O sistema está com pouca memória: {percent_used}% usada, {memory_available} "
"{memory_available_unit} livre. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Pouca memória"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Diagnóstico em execução"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "Foram encontrados {issue_count} problemas durante testes de rotina."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Resultados de diagnóstico"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Ir para resultados de diagnóstico"
@ -9162,7 +9162,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Atualização de distribuição"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Verifique se há pacotes retidos"
@ -9597,7 +9597,7 @@ msgstr "Falha ao iniciar a atualização."
msgid "Frequent feature updates activated."
msgstr "Atualizações frequentes de recursos ativadas."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9608,7 +9608,7 @@ msgstr ""
"exigem ainda que uma conta de usuário faça parte de um grupo para autorizar "
"o acesso ao aplicativo."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9620,25 +9620,25 @@ msgstr ""
"usuários do grupo &lt;em&gt;admin&lt;/em&gt; podem alterar aplicativos ou "
"configurações do sistema."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Usuários e Grupos"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Acesso a todos os serviços e configurações do sistema"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Verifique a entrada LDAP \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Verifique a configuração do nslcd \"{key} {value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Verifique a configuração do nsswitch \"{database}\""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"PO-Revision-Date: 2025-09-18 10:01+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-09-29 19:02+0000\n"
"Last-Translator: Roman Akimov <zoompyc@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/freedombox/"
"freedombox/ru/>\n"
@ -34,27 +34,27 @@ msgstr "Контейнер {container_name} запущен"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Выполняется служба {service_name}"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Слушать на {kind} порт {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Слушать порт {port} на {kind}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Подключение к {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Невозможно подключиться к {host}:{port}"
@ -213,19 +213,19 @@ msgstr "Местный"
#: plinth/modules/avahi/manifest.py:14
msgid "mDNS"
msgstr "mDNS"
msgstr ""
#: plinth/modules/backups/__init__.py:24
msgid "Backups allows creating and managing backup archives."
msgstr ""
"Резервное копирование позволяет создавать и управлять резервными архивами."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Резервные копии"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -234,19 +234,19 @@ msgstr ""
"данных. Предпочтительно зашифрованное удаленное место резервного копирования "
"или дополнительный подключенный диск."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Включить расписание резервного копирования"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Перейти в {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -256,7 +256,7 @@ msgstr ""
"попытки резервного копирования не увенчались успехом. Последняя ошибка: "
"{error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Ошибка во время резервного копирования"
@ -503,7 +503,7 @@ msgstr "Конфигурация"
#: plinth/modules/backups/manifest.py:21
msgid "Borg"
msgstr "Borg"
msgstr ""
#: plinth/modules/backups/privileged.py:34
msgid ""
@ -935,7 +935,7 @@ msgstr "Список и чтение всех файлов"
#: plinth/modules/bepasty/__init__.py:57 plinth/modules/bepasty/manifest.py:6
msgid "bepasty"
msgstr "bepasty"
msgstr ""
#: plinth/modules/bepasty/forms.py:17
msgid "Public Access (default permissions)"
@ -977,7 +977,7 @@ msgstr "Обмен файлами"
#: plinth/modules/bepasty/manifest.py:23
msgid "Pastebin"
msgstr "Pastebin"
msgstr ""
#: plinth/modules/bepasty/templates/bepasty.html:12
msgid "Manage Passwords"
@ -1658,56 +1658,58 @@ msgid ""
"This app also shows the <a href=\"{logs_url}\">logs</a> for {box_name} "
"services."
msgstr ""
"Это приложение также показывает <a href=\"{logs_url}\">журналы</a> для "
"{box_name} ."
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Диагностика"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "пропустить"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "успешно"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "сбой"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "ошибка"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "предупреждение"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "МБ"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "ГБ"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Вы должны отключить некоторые приложения, чтобы уменьшить использование "
"памяти."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Вы не должны устанавливать никаких новых приложений в этой системе."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1716,24 +1718,24 @@ msgstr ""
"В системе мало памяти: использовано {percent_used}%, свободно "
"{memory_available} {memory_available_unit}. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Мало памяти"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Выполнение диагностики"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "Найдены {issue_count} проблем во время обычных проверок."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Результаты диагностики"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Перейдите к результатам диагностики"
@ -2455,7 +2457,7 @@ msgstr "Thunderbird"
#: plinth/modules/email/manifest.py:37
msgid "Thunderbird Mobile"
msgstr "Thunderbird Mobile"
msgstr ""
#: plinth/modules/email/manifest.py:52
msgid "FairEmail"
@ -2531,8 +2533,6 @@ msgid "Host/Target/Value"
msgstr "Хост/Цель/Значение"
#: plinth/modules/email/templates/email-dns.html:50
#, fuzzy
#| msgid "Server hostname or IP address"
msgid "Reverse DNS Records for IP Addresses"
msgstr "Обратные записи DNS для IP-адресов"
@ -2566,8 +2566,6 @@ msgstr ""
"разделе. Это можно настроить в приложении конфиденциальности."
#: plinth/modules/email/templates/email-dns.html:76
#, fuzzy
#| msgid "Hostname"
msgid "Host"
msgstr "Хост"
@ -2584,8 +2582,7 @@ msgstr ""
"записей DNS домена."
#: plinth/modules/email/templates/email.html:35
#, fuzzy, python-format
#| msgid "Resolve domain name: {domain}"
#, python-format
msgid "View domain: %(domain)s"
msgstr "Просмотр домена: %(domain)s"
@ -2705,9 +2702,8 @@ msgstr "Веб-сайт"
#: plinth/modules/featherwiki/manifest.py:18
#: plinth/modules/tiddlywiki/manifest.py:25
#, fuzzy
msgid "Quine"
msgstr "Quine"
msgstr ""
#: plinth/modules/featherwiki/manifest.py:18
#: plinth/modules/nextcloud/manifest.py:56
@ -3247,8 +3243,6 @@ msgstr ""
"силу."
#: plinth/modules/gnome/__init__.py:48
#, fuzzy
#| msgid "GNOME Files"
msgid "GNOME"
msgstr "GNOME"
@ -3257,8 +3251,6 @@ msgid "Desktop"
msgstr "Десктоп"
#: plinth/modules/gnome/manifest.py:10
#, fuzzy
#| msgid "Tor Browser"
msgid "Browser"
msgstr "Браузер"
@ -3267,8 +3259,6 @@ msgid "Office suite"
msgstr "Офисный пакет"
#: plinth/modules/gnome/manifest.py:12
#, fuzzy
#| msgid "Software Update"
msgid "Software store"
msgstr "Магазин программного обеспечения"
@ -3658,12 +3648,6 @@ msgid "{box_name} Manual"
msgstr "Руководство {box_name}"
#: plinth/modules/homeassistant/__init__.py:31
#, fuzzy
#| msgid ""
#| "Home Assistant is a home automation hub with emphasis on local control "
#| "and privacy. It integrates with thousands of devices including smart "
#| "bulbs, alarms, presense sensors, door bells, thermostats, irrigation "
#| "timers, energy monitors, etc."
msgid ""
"Home Assistant is a home automation hub with emphasis on local control and "
"privacy. It integrates with thousands of devices including smart bulbs, "
@ -3727,9 +3711,8 @@ msgid "Home Automation"
msgstr "Домашняя автоматизация"
#: plinth/modules/homeassistant/manifest.py:63
#, fuzzy
msgid "IoT"
msgstr "IoT"
msgstr ""
#: plinth/modules/homeassistant/manifest.py:64
#: plinth/modules/networks/manifest.py:8
@ -3742,11 +3725,11 @@ msgstr "Wi-Fi"
#: plinth/modules/homeassistant/manifest.py:65
msgid "ZigBee"
msgstr "ZigBee"
msgstr ""
#: plinth/modules/homeassistant/manifest.py:66
msgid "Z-Wave"
msgstr "Z-Wave"
msgstr ""
#: plinth/modules/homeassistant/manifest.py:67
msgid "Thread"
@ -3955,7 +3938,7 @@ msgstr "Видеокомната Janus"
#: plinth/modules/janus/manifest.py:16
msgid "WebRTC"
msgstr "WebRTC"
msgstr ""
#: plinth/modules/janus/manifest.py:16
msgid "Web conference"
@ -4038,7 +4021,7 @@ msgstr "Управление сервером контента Kiwix"
#: plinth/modules/kiwix/__init__.py:56 plinth/modules/kiwix/manifest.py:8
msgid "Kiwix"
msgstr "Kiwix"
msgstr ""
#: plinth/modules/kiwix/forms.py:23
msgid "Content packages have to be in .zim format"
@ -4302,6 +4285,10 @@ msgid ""
"only be installed if frequent feature updates is enabled in the <a "
"href=\"{upgrades_url}\">Software Update</a> app."
msgstr ""
"<strong>Примечание:</strong> Это приложение часто получает обновления. Оно "
"может быть установлено только в том случае, если в системе включено частое "
"обновление функций. <a href=\"{upgrades_url}\">Обновление программного "
"обеспечения</a> ."
#: plinth/modules/matrixsynapse/__init__.py:59
msgid "Matrix Synapse"
@ -4775,8 +4762,6 @@ msgid "UPnP"
msgstr "UPnP"
#: plinth/modules/minidlna/manifest.py:116
#, fuzzy
#| msgid "MiniDLNA"
msgid "DLNA"
msgstr "DLNA"
@ -4814,9 +4799,8 @@ msgstr ""
#: plinth/modules/miniflux/__init__.py:42
#: plinth/modules/miniflux/manifest.py:10
#, fuzzy
msgid "Miniflux"
msgstr "Miniflux"
msgstr ""
#: plinth/modules/miniflux/forms.py:12
msgid "Enter a username for the user."
@ -4839,28 +4823,24 @@ msgid "Passwords do not match."
msgstr "Пароли не совпадают."
#: plinth/modules/miniflux/manifest.py:18
#, fuzzy
msgid "Fluent Reader Lite"
msgstr "Fluent Reader Lite"
msgstr ""
#: plinth/modules/miniflux/manifest.py:33
msgid "Fluent Reader"
msgstr "Беглое чтение"
#: plinth/modules/miniflux/manifest.py:46
#, fuzzy
msgid "FluxNews"
msgstr "FluxNews"
msgstr ""
#: plinth/modules/miniflux/manifest.py:61
#, fuzzy
msgid "MiniFlutt"
msgstr "MiniFlutt"
msgstr ""
#: plinth/modules/miniflux/manifest.py:71
#, fuzzy
msgid "NetNewsWire"
msgstr "NetNewsWire"
msgstr ""
#: plinth/modules/miniflux/manifest.py:86
msgid "Newsflash"
@ -4884,14 +4864,11 @@ msgstr "Агрегация новостей"
#: plinth/modules/miniflux/manifest.py:138
#: plinth/modules/rssbridge/manifest.py:16 plinth/modules/ttrss/manifest.py:55
#, fuzzy
#| msgid "SSH"
msgid "RSS"
msgstr "RSS"
#: plinth/modules/miniflux/manifest.py:138
#: plinth/modules/rssbridge/manifest.py:16 plinth/modules/ttrss/manifest.py:55
#, fuzzy
msgid "ATOM"
msgstr "ATOM"
@ -5201,7 +5178,7 @@ msgstr "Ссылка"
#: plinth/modules/names/templates/names.html:104
#: plinth/modules/networks/templates/connection_show.html:268
msgid "DNS-over-TLS"
msgstr "DNS-over-TLS"
msgstr ""
#: plinth/modules/names/templates/names.html:108
msgid "DNSSEC"
@ -6249,7 +6226,7 @@ msgstr "локальная ссылка"
#: plinth/modules/networks/views.py:32
msgid "dhcp"
msgstr "dhcp"
msgstr ""
#: plinth/modules/networks/views.py:33
msgid "ignore"
@ -6509,7 +6486,7 @@ msgstr ""
#: plinth/modules/nextcloud/manifest.py:11
#: plinth/modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr "Nextcloud"
msgstr ""
#: plinth/modules/nextcloud/forms.py:19
msgid "Not set"
@ -7233,11 +7210,11 @@ msgstr "Контакты"
#: plinth/modules/radicale/manifest.py:91 plinth/modules/sogo/manifest.py:75
msgid "CalDAV"
msgstr "CalDAV"
msgstr ""
#: plinth/modules/radicale/manifest.py:91 plinth/modules/sogo/manifest.py:76
msgid "CardDAV"
msgstr "CardDAV"
msgstr ""
#: plinth/modules/radicale/views.py:32
msgid "Access rights configuration updated"
@ -7833,7 +7810,7 @@ msgstr "Точка входа"
#: plinth/modules/shadowsocks/manifest.py:22
#: plinth/modules/shadowsocksserver/manifest.py:21
msgid "Shadowsocks"
msgstr "Shadowsocks"
msgstr ""
#: plinth/modules/shadowsocksserver/__init__.py:26
#, python-brace-format
@ -8102,7 +8079,7 @@ msgstr "Заведомо исправное состояние"
#: plinth/modules/snapshot/manifest.py:14
msgid "Btrfs"
msgstr "Btrfs"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12
msgid "Delete the following snapshots permanently?"
@ -8730,7 +8707,7 @@ msgstr ""
#: plinth/modules/tiddlywiki/__init__.py:64
#: plinth/modules/tiddlywiki/manifest.py:9
msgid "TiddlyWiki"
msgstr "TiddlyWiki"
msgstr ""
#: plinth/modules/tiddlywiki/forms.py:39
msgid "A TiddlyWiki file with .html file extension"
@ -9103,7 +9080,7 @@ msgstr "TTRSS-читатель"
#: plinth/modules/ttrss/manifest.py:25
msgid "Geekttrss"
msgstr "Geekttrss"
msgstr ""
#: plinth/modules/upgrades/__init__.py:34
msgid "Check for and apply the latest software and security updates."
@ -9153,7 +9130,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Обновление дистрибутива"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Проверьте, не задерживается ли посылка"
@ -9367,7 +9344,7 @@ msgstr "Автоматическое обновление отключено."
#: plinth/modules/upgrades/templates/upgrades-dist-upgrade.html:54
msgid "Distribution upgrades are disabled."
msgstr "Обновления дистрибутива отключены"
msgstr "Обновления дистрибутива отключены."
#: plinth/modules/upgrades/templates/upgrades-dist-upgrade.html:58
msgid ""
@ -9573,7 +9550,7 @@ msgstr "Не удалось запустить обновление."
msgid "Frequent feature updates activated."
msgstr "Активированы частые обновления функций."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9585,7 +9562,7 @@ msgstr ""
"запись пользователя была частью группы, чтобы разрешить пользователю доступ "
"к приложению."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9597,25 +9574,25 @@ msgstr ""
"пользователи группы <em>admin</em> могут изменять приложения или системные "
"настройки."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Пользователи и группы"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Доступ ко всем сервисам и настройкам системы"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Проверьте запись LDAP \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Проверьте конфигурацию nslcd \"{key} {value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Проверьте конфигурацию nsswitch \"{database}\""
@ -10543,13 +10520,7 @@ msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
#, fuzzy, python-format
#| msgid ""
#| "This is an internal error and not something you caused or can fix. Please "
#| "report the error on the <a href=\"https://salsa.debian.org/freedombox-"
#| "team/freedombox/issues\">bug tracker</a> so we can fix it. Also, please "
#| "attach the <a href=\"%(status_log_url)s\">status log</a> to the bug "
#| "report."
#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the <a href=\"https://salsa.debian.org/freedombox-team/"
@ -10557,32 +10528,26 @@ msgid ""
"the <a href=\"%(logs_url)s\">logs</a> to the bug report."
msgstr ""
"Это внутренняя ошибка, а не то, что вы вызвали или можете исправить. "
"Сообщите об ошибке в <a href=\"https://salsa.debian.org/freedombox-team/"
"freedombox/issues\">трекере ошибок</a>, чтобы мы могли ее исправить. Также "
"приложите <a href=\"%(status_log_url)s\">журнал состояния</a> к отчету об "
"ошибке."
"Пожалуйста, сообщите об ошибке на <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">трекере ошибок</a> чтобы мы могли это "
"исправить. Кроме того, пожалуйста, приложите <a href=\"%(logs_url)s\">файлы "
"журналов</a> к сообщению об ошибке."
#: plinth/templates/app-header.html:26
msgid "Installation"
msgstr "Установка"
#: plinth/templates/app-logs.html:12
#, fuzzy
#| msgid ""
#| "These are the last %(num_lines)s lines of the status log for this web "
#| "interface. If you want to report a bug, please use the <a href=\"https://"
#| "salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> and "
#| "attach this status log to the bug report."
msgid ""
"These are the last lines of the logs for services involved in this app. If "
"you want to report a bug, please use the <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">bug tracker</a> and attach this log to "
"the bug report."
msgstr ""
"Это последние %(num_lines)s строк журнала состояния для этого веб-"
"интерфейса. Если вы хотите сообщить об ошибке, используйте <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\">трекер ошибок</a> и "
"прикрепите этот журнал состояния к отчету об ошибке."
"Это последние строки журналов для служб, задействованных в этом приложении. "
"Если вы хотите сообщить об ошибке, пожалуйста, воспользуйтесь <a "
"href=\"https://salsa.debian.org/freedombox-team/freedombox/"
"issues\">отслеживаним ошибок</a> и приложите этот журнал к отчету об ошибке."
#: plinth/templates/app-logs.html:26
msgid ""
@ -10844,10 +10809,8 @@ msgid "Clear all tags"
msgstr "Очистить все теги"
#: plinth/templates/toolbar.html:39 plinth/templates/toolbar.html:40
#, fuzzy
#| msgid "Logs"
msgid "View Logs"
msgstr "Журналы"
msgstr "Просмотр журналов"
#: plinth/templates/toolbar.html:46 plinth/templates/toolbar.html:47
msgid "Backup"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2021-04-27 13:32+0000\n"
"Last-Translator: HelaBasa <R45XvezA@protonmail.ch>\n"
"Language-Team: Sinhala <https://hosted.weblate.org/projects/freedombox/"
@ -33,27 +33,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "ෆ්‍රීඩම්බොක්ස්"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -208,37 +208,37 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr ""
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr ""
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr ""
@ -1521,76 +1521,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -7989,7 +7989,7 @@ msgstr ""
msgid "Distribution Update"
msgstr ""
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8332,14 +8332,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8347,25 +8347,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Slovenian <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Poslušam na {kind} vratih {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Poslušam na {kind} vratih {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Povezava na {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Ne uspem se povezati na {host}:{port}"
@ -226,37 +226,37 @@ msgid "Backups allows creating and managing backup archives."
msgstr ""
"Rezervne kopije omogočajo ustvarjanje in upravljanje arhivov rezervnih kopij."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Rezervne kopije"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
#, fuzzy
#| msgid "Existing backups"
msgid "Error During Backup"
@ -1693,76 +1693,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -8416,7 +8416,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Konfiguracija je posodobljena"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8769,14 +8769,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8784,25 +8784,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"PO-Revision-Date: 2025-06-25 22:04+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-10-05 18:02+0000\n"
"Last-Translator: Besnik Bleta <besnik@programeshqip.org>\n"
"Language-Team: Albanian <https://hosted.weblate.org/projects/freedombox/"
"freedombox/sq/>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.13-dev\n"
"X-Generator: Weblate 5.14-dev\n"
#: plinth/config.py:103
#, python-brace-format
@ -25,36 +25,35 @@ msgid "Static configuration {etc_path} is setup properly"
msgstr "Formësimi statik {etc_path} është ujdisur si duhet"
#: plinth/container.py:140
#, fuzzy, python-brace-format
#| msgid "Service {service_name} is running"
#, python-brace-format
msgid "Container {container_name} is running"
msgstr "Shërbimi {service_name} po xhiron"
msgstr "Kontejneri {container_name} po xhiron"
#: plinth/context_processors.py:21 plinth/views.py:175
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Shërbimi {service_name} po xhiron"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Po përgjohet në portë {kind} {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Po përgjohet në portë {kind} {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Lidhu me {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Slidhet dot me {host}:{port}"
@ -72,10 +71,8 @@ msgid "Repository to backup to"
msgstr "Depo për kopjeruajtje"
#: plinth/forms.py:62
#, fuzzy
#| msgid "None"
msgid "(None)"
msgstr "Asnjë"
msgstr "(Asnjë)"
#: plinth/forms.py:68
msgid "Select a domain name to be used with this application"
@ -220,12 +217,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Kopjeruajtjet lejojnë krijim dhe administrim arkivash kopjeruajtjeje."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Kopjeruajtje"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -234,19 +231,19 @@ msgstr ""
"Parapëlqeni një vendndodhje të largët kopjeruajtjesh të fshehtëzuara ose një "
"disk ekstra bashkëngjitur."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Aktivizoni një Plan Kopjeruajtjesh"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Kalo te {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -255,7 +252,7 @@ msgstr ""
"Dështoi një kopjeruajtje e planifikuar. {error_count} përpjekjet e mëparshme "
"spatën sukses. Gabimi i fundit qe: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Gabim Gjatë Kopjeruajtjes"
@ -707,27 +704,15 @@ msgid "Restore data from"
msgstr "Riktheje të dhëna prej"
#: 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 its\n"
#| " contents. You can choose the apps you wish to restore after "
#| "uploading a\n"
#| " backup file.\n"
#| " "
#, python-format
msgid ""
"Upload a backup file downloaded from another %(box_name)s to restore its "
"contents. You can choose the apps you wish to restore after uploading a "
"backup file."
msgstr ""
"\n"
" Ngarkoni një kartel kopjeruajtje të shkarkuar prej një tjetër "
"%(box_name)s për\n"
" të rikthyer lëndën e tij. Pas ngarkimit të kartelës kopjeruajtje, mund "
"të zgjidhni\n"
" aplikacionet që doni të rikthehen.\n"
" "
"Ngarkoni një kartelë kopjeruajtje të shkarkuar prej një tjetër %(box_name)s "
"për të rikthyer lëndën e tij. Pas ngarkimit të kartelës kopjeruajtje, mund "
"të zgjidhni aplikacionet që doni të rikthehen."
#: plinth/modules/backups/templates/backups_upload.html:31
#, python-format
@ -1673,55 +1658,57 @@ msgid ""
"This app also shows the <a href=\"{logs_url}\">logs</a> for {box_name} "
"services."
msgstr ""
"Ky aplikacion shfaq gjithashtu <a href=\"{logs_url}\">regjistrat</a> për "
"shërbimet {box_name}."
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnostikime"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "anashkaluar"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "kaloi"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "dështoi"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "gabim"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "kujdes"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Duhet të çaktivizoni disa aplikacione, për të zvogëluar përdorim kujtese."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Sduhet të instaloni çfarëdo aplikacioni të ri në këtë sistem."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1730,24 +1717,24 @@ msgstr ""
"Ka pak kujtesë për sistemin: {percent_used}% të përdorur, {memory_available} "
"{memory_available_unit} të lirë. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Kujtesë e Pakët"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Xhirim diagnostikimesh"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "U gjetën {issue_count} probleme gjatë testimeve rutinë."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Përfundime diagnostikimesh"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Kaloni te përfundime diagnostikimi"
@ -1828,31 +1815,31 @@ msgstr "Përfundime"
#: plinth/modules/diagnostics/templates/diagnostics_full.html:53
#, python-format
msgid "%(number)s passed"
msgstr ""
msgstr "%(number)s të kaluar"
#: plinth/modules/diagnostics/templates/diagnostics_full.html:57
#, python-format
msgid "%(number)s failed"
msgstr ""
msgstr "%(number)s me dështim"
#: plinth/modules/diagnostics/templates/diagnostics_full.html:61
#, python-format
msgid "%(number)s warnings"
msgstr ""
msgstr "%(number)s sinjalizime"
#: plinth/modules/diagnostics/templates/diagnostics_full.html:65
#, python-format
msgid "%(number)s errors"
msgstr ""
msgstr "%(number)s gabime"
#: plinth/modules/diagnostics/templates/diagnostics_full.html:69
#, python-format
msgid "%(number)s skipped"
msgstr ""
msgstr "%(number)s të anashkaluar"
#: plinth/modules/diagnostics/templates/diagnostics_full.html:111
msgid "Running..."
msgstr ""
msgstr "Po xhirohet…"
#: plinth/modules/diagnostics/templates/diagnostics_results.html:11
msgid "Test"
@ -1903,13 +1890,6 @@ msgstr ""
"tuaj DNS, do të marrë një përgjigje me adresën tuaj aktuale IP."
#: plinth/modules/dynamicdns/__init__.py:41
#, fuzzy
#| msgid ""
#| "If you are looking for a free dynamic DNS account, you may find a free "
#| "GnuDIP service at <a href='https://ddns.freedombox.org' "
#| "target='_blank'>ddns.freedombox.org</a> or you may find free update URL "
#| "based services at <a href='http://freedns.afraid.org/' "
#| "target='_blank'>freedns.afraid.org</a>."
msgid ""
"If you are looking for a free dynamic DNS account, you may find a free "
"GnuDIP service at <a href='https://ddns.freedombox.org' "
@ -1919,27 +1899,19 @@ msgid ""
msgstr ""
"Nëse po kërkoni për një llogari falas DNS-je dinamike, mund të gjeni një "
"shërbim GnuDIP të lirë, te <a href=\"https://ddns.freedombox.org\" "
"target=\"_blank\">ddns.freedombox.org</a>, ose mund të gjeni shërbime të "
"lira me bazë përditësim URL-je, te <a href=\"http://freedns.afraid.org/\" "
"target=\"_blank\">freedns.afraid.org</a>."
"target=\"_blank\">ddns.freedombox.org</a>. Me këtë shërbim, përfitoni "
"nënpërkatësi të pakufizuara (me mundësinë e shenjës së gjithëpushtetshme të "
"aktivizuar te rregullimet e llogarisë). Që të përdorni një nënpërkatësi, "
"shtojeni si një përkatësi statike te aplikacioni Emra."
#: plinth/modules/dynamicdns/__init__.py:47
#, fuzzy
#| msgid ""
#| "If you are looking for a free dynamic DNS account, you may find a free "
#| "GnuDIP service at <a href='https://ddns.freedombox.org' "
#| "target='_blank'>ddns.freedombox.org</a> or you may find free update URL "
#| "based services at <a href='http://freedns.afraid.org/' "
#| "target='_blank'>freedns.afraid.org</a>."
msgid ""
"Alternatively, you may find a free update URL based service at <a "
"href='http://freedns.afraid.org/' target='_blank'>freedns.afraid.org</a>."
msgstr ""
"Nëse po kërkoni për një llogari falas DNS-je dinamike, mund të gjeni një "
"shërbim GnuDIP të lirë, te <a href=\"https://ddns.freedombox.org\" "
"target=\"_blank\">ddns.freedombox.org</a>, ose mund të gjeni shërbime të "
"lira me bazë përditësim URL-je, te <a href=\"http://freedns.afraid.org/\" "
"target=\"_blank\">freedns.afraid.org</a>."
"Ndryshe, mund të gjeni një shërbim falas të bazuar në përditësim URL-sh, te "
"<a href=\"http://freedns.afraid.org/\" target=\"_blank\">freedns.afraid.org</"
"a>."
#: plinth/modules/dynamicdns/__init__.py:50
msgid ""
@ -2088,7 +2060,7 @@ msgstr "Përkatësi"
#: plinth/modules/dynamicdns/manifest.py:17
msgid "Free"
msgstr ""
msgstr "I lirë"
#: plinth/modules/dynamicdns/manifest.py:17
msgid "Needs public IP"
@ -2680,7 +2652,7 @@ msgstr "Feather Wiki"
#: plinth/modules/featherwiki/forms.py:13 plinth/modules/tiddlywiki/forms.py:13
msgid "Wiki files cannot be named \"index.html\"."
msgstr ""
msgstr "Kartelat Wiki smund të emërtohen “index.html”."
#: plinth/modules/featherwiki/forms.py:20 plinth/modules/tiddlywiki/forms.py:20
msgid "Name of the wiki file, with file extension \".html\""
@ -9172,7 +9144,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Përditësim Shpërndarjeje"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Kontrolloni për mbajtje paketash"
@ -9603,7 +9575,7 @@ msgstr "Nisja e përmirësimi dështoi."
msgid "Frequent feature updates activated."
msgstr "Përditësime të shpeshta veçorish të aktivizuara."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9614,7 +9586,7 @@ msgstr ""
"aplikacione kërkojnë doemos një llogari përdoruesi, për të qenë pjesë e një "
"grupi që autorizon përdoruesin të përdorë aplikacionin."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9626,25 +9598,25 @@ msgstr ""
"vetëm përdoruesit e grupit <em>përgjegjës</em> mund të ndryshojnë "
"aplikacionet, apo rregullimet e sistemit."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Përdorues dhe Grupe"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Hyrje te krejt shërbimet dhe rregullime të sistemit"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Kontrolloni zërin LDAP \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Kontrolloni “{key} {value}” formësimi nslcd-je"
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Kontrolloni “{database}” formësimi nsswitch"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2022-09-14 17:20+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Serbian <https://hosted.weblate.org/projects/freedombox/"
@ -35,27 +35,27 @@ msgstr "Servis {service_name} je pokrenut"
msgid "FreedomBox"
msgstr "KutijaSlobode"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Servis {service_name} je pokrenut"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Slušam na {kind} portu {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Slušam na {kind} portu {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Poveži se na {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Nije moguće povezati se na {host}:{port}"
@ -226,37 +226,37 @@ msgstr ""
"Izrada sigurnosnih kopija omogućava kreiranje i upravljanje arhivima "
"sigurnosnih kopija."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Sigurnosne kopije"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr ""
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr ""
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
"succeed. The latest error is: {error_message}"
msgstr ""
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
#, fuzzy
#| msgid "Existing Backups"
msgid "Error During Backup"
@ -1642,76 +1642,76 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr ""
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr ""
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr ""
@ -8287,7 +8287,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Konfiguracija sačuvana"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8638,14 +8638,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8653,25 +8653,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2024-07-30 01:31+0000\n"
"Last-Translator: bittin1ddc447d824349b2 <bittin@reimu.nl>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "Tjänsten {service_name} körs"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Tjänsten {service_name} körs"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Lyssnar på {kind} port {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Lyssnar på {kind} port {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Anslut till {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Kan inte ansluta till {host}:{port}"
@ -224,12 +224,12 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr "Säkerhetskopior gör det möjligt att skapa och hantera säkerhetsarkiv."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Säkerhetskopiering"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -237,19 +237,19 @@ msgstr ""
"Aktivera ett automatiskt reservschema för datasäkerhet. Föredra en krypterad "
"plats för fjärrbackup eller en extra ansluten disk."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Aktivera ett schema för säkerhetskopiering"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Gå till {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -258,7 +258,7 @@ msgstr ""
"En schemalagd säkerhetskopiering misslyckades. Tidigare {error_count} försök "
"för säkerhetskopiering lyckades inte. Det senaste felet är: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Fel under säkerhetskopiering"
@ -1713,52 +1713,52 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Diagnostik"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "passerade"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "misslyckades"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "fel"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "varning"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "Du bör inaktivera vissa appar för att minska minnesanvändningen."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Du bör inte installera några nya appar på det här systemet."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1767,24 +1767,24 @@ msgstr ""
"Systemet är ont om minne: {percent_used}% används, {memory_available}"
"·{memory_available_unit} ledig. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Låg minne"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Kör diagnostik"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "Hittade {issue_count} problem under rutintester."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Diagnostikresultat"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Gå till Diagnostikresultat"
@ -9338,7 +9338,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Distributionsuppdateringen har startats"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -9744,7 +9744,7 @@ msgstr "Det gick inte att starta uppgraderingen."
msgid "Frequent feature updates activated."
msgstr "Frekventa funktionsuppdateringar aktiverade."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9755,7 +9755,7 @@ msgstr ""
"ett användarkonto för att vara en del av en grupp för att auktorisera "
"användaren att komma åt appen."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9766,25 +9766,25 @@ msgstr ""
"över appar som är relevanta för dem på startsidan. Endast användare av "
"gruppen <em>admin</em> kan dock ändra appar eller Systeminställningar."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Användare och grupper"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Tillgång till alla tjänster och systeminställningar"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Kontrollera LDAP-posten \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Kontrollera nslcd-konfigurationen \"{key}{value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Kontrollera nsswitch-konfigurationen \"{database}\""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-08-17 08:02+0000\n"
"Last-Translator: தமிழ்நேரம் <anishprabu.t@gmail.com>\n"
"Language-Team: Tamil <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "பணி {service_name} இயங்குகிறது"
msgid "FreedomBox"
msgstr "கட்டற்றபெட்டி"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "பணி {service_name} இயங்குகிறது"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} துறைமுகம் {listen_address}: {port} இல் கேட்பது"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} துறைமுகம் {port} இல் கேட்பது"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}: {port} உடன் இணைக்கவும்"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}: {port} உடன் இணைக்க முடியாது"
@ -219,12 +219,12 @@ msgid "Backups allows creating and managing backup archives."
msgstr ""
"காப்புப்பிரதி காப்பகங்களை உருவாக்க மற்றும் நிர்வகிக்க காப்புப்பிரதிகள் அனுமதிக்கிறது."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "காப்புப்பிரதிகள்"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -233,19 +233,19 @@ msgstr ""
"தொலைநிலை காப்புப்பிரதி இருப்பிடம் அல்லது கூடுதல் இணைக்கப்பட்ட வட்டு ஆகியவற்றை "
"விரும்புங்கள்."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "காப்புப்பிரதி அட்டவணையை இயக்கவும்"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "{app_name} க்குச் செல்லவும்"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -254,7 +254,7 @@ msgstr ""
"திட்டமிடப்பட்ட காப்புப்பிரதி தோல்வியடைந்தது. கடந்த {error_count} காப்புப்பிரதிக்கான "
"முயற்சிகள் வெற்றிபெறவில்லை. அண்மைக் கால பிழை: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "காப்புப்பிரதியின் போது பிழை"
@ -1654,52 +1654,52 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "கண்டறிதல்"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "தவிர்க்கப்பட்டது"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "கடந்து சென்றது"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "தோல்வியுற்றது"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "பிழை"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "எச்சரிக்கை"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "Mib"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "கிப்"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "நினைவக பயன்பாட்டைக் குறைக்க சில பயன்பாடுகளை முடக்க வேண்டும்."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "இந்த கணினியில் நீங்கள் எந்த புதிய பயன்பாடுகளையும் நிறுவக்கூடாது."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1708,24 +1708,24 @@ msgstr ""
"கணினி நினைவகத்தில் குறைவாக உள்ளது: {percent_used}% பயன்படுத்தப்படுகிறது, "
"{memory_available} {memory_available_unit} இலவசம். {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "குறைந்த நினைவகம்"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "கண்டறியும் இயங்கும்"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "வழக்கமான சோதனைகளின் போது {issue_count} சிக்கல்கள் கிடைத்தன."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "கண்டறியும் முடிவுகள்"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "கண்டறியும் முடிவுகளுக்குச் செல்லுங்கள்"
@ -9018,7 +9018,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "விநியோக புதுப்பிப்பு"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "தொகுப்பு வைத்திருக்கும் சரிபார்க்கவும்"
@ -9437,7 +9437,7 @@ msgstr "தொடக்க மேம்படுத்தல் தோல்வ
msgid "Frequent feature updates activated."
msgstr "அடிக்கடி அம்ச புதுப்பிப்புகள் செயல்படுத்தப்படுகின்றன."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9447,7 +9447,7 @@ msgstr ""
"மையப்படுத்தப்பட்ட அங்கீகார பொறிமுறையாக செயல்படுகின்றன. பயன்பாட்டை அணுக பயனருக்கு ஏற்பு "
"வழங்க சில பயன்பாடுகள் ஒரு குழுவின் ஒரு பகுதியாக இருக்க வேண்டும்."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9458,25 +9458,25 @@ msgstr ""
"வலை இடைமுகத்தில் உள்நுழையலாம். இருப்பினும், <em> நிர்வாகம் </em> குழுவின் பயனர்கள் "
"மட்டுமே பயன்பாடுகள் அல்லது கணினி அமைப்புகளை மாற்றலாம்."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "பயனர்கள் மற்றும் குழுக்கள்"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "அனைத்து சேவைகள் மற்றும் கணினி அமைப்புகளுக்கான அணுகல்"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "LDAP உள்ளீட்டை சரிபார்க்கவும் \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "NSLCD கட்டமைப்பைச் சரிபார்க்கவும் \"{key} {value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "NSSWITCH கட்டமைப்பு \"{database}\""

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-05-14 17:03+0000\n"
"Last-Translator: Sripath Roy Koganti <sripathroy@swecha.net>\n"
"Language-Team: Telugu <https://hosted.weblate.org/projects/freedombox/"
@ -36,27 +36,27 @@ msgstr "{service_name} సేవ అమలులో ఉంది"
msgid "FreedomBox"
msgstr "ఫ్రీడమ్‌బాక్స్"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "{service_name} సేవ అమలులో ఉంది"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} పోర్ట్ {listen_address}:{port} లో వింటున్నాను"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} port {port} లో వింటున్నాను"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} కి కనెక్ట్ అవ్వండి"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host} కి కనెక్ట్ అవ్వండి:{port}"
@ -220,12 +220,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "బ్యాకప్‌లు బ్యాకప్ ఆర్కైవ్‌లను సృష్టించడానికి మరియు నిర్వహించడానికి అనుమతిస్తాయి."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "బ్యాకప్స్"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -233,19 +233,19 @@ msgstr ""
"డేటా భద్రత కోసం ఆటోమేటిక్ బ్యాకప్ షెడ్యూల్‌ను ప్రారంభించండి. ఎన్‌క్రిప్ట్ చేసిన రిమోట్ బ్యాకప్ లొకేషన్ లేదా అదనపు "
"అటాచ్డ్ డిస్క్‌ను ఇష్టపడండి."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "బ్యాకప్ షెడ్యూల్‌ను ప్రారంభించండి"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "{app_name} కు వెళ్ళండి"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -254,7 +254,7 @@ msgstr ""
"షెడ్యూల్ చేయబడిన బ్యాకప్ విఫలమైంది. బ్యాకప్ కోసం గతంలో చేసిన {error_count} ప్రయత్నాలు విజయవంతం "
"కాలేదు. తాజా లోపం: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "బ్యాకప్ సమయంలో లోపం"
@ -1630,52 +1630,52 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "లక్షణాలు"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "దాటివేయబడినవి"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "ఉత్తీర్ణులయ్యారు"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "విఫలమయ్యారు"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "లోపం"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "హెచ్చరిక"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "నిర్వహణ సమాచార ఆధారం"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "గిబ్"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "మెమరీ వినియోగాన్ని తగ్గించడానికి మీరు కొన్ని యాప్‌లను నిలిపివేయాలి."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "మీరు ఈ సిస్టమ్‌లో ఏ కొత్త యాప్‌లను ఇన్‌స్టాల్ చేయకూడదు."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1684,24 +1684,24 @@ msgstr ""
"సిస్టమ్ మెమరీ తక్కువగా ఉంది: {percent_used}% ఉపయోగించబడింది, {memory_available} "
"{memory_available_unit} ఉచితం. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "తక్కువ మెమరీ"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "రన్నింగ్ డయాగ్నస్టిక్స్"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "సాధారణ పరీక్షల సమయంలో {issue_count} సమస్యలు కనుగొనబడ్డాయి."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "డయాగ్నోస్టిక్స్ ఫలితాలు"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "పంది"
@ -8823,7 +8823,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "పంపిణీ నవీకరణ"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "ప్యాకేజీ హోల్డ్‌ల కోసం తనిఖీ చేయండి"
@ -9226,7 +9226,7 @@ msgstr "నవీకరణ ప్రారంభం విఫలమైంద
msgid "Frequent feature updates activated."
msgstr "తరచుగా ఫీచర్ అప్‌డేట్‌లు యాక్టివేట్ చేయబడ్డాయి."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9236,7 +9236,7 @@ msgstr ""
"విధానంగా పనిచేస్తాయి. కొన్ని యాప్‌లకు యాప్‌ను యాక్సెస్ చేయడానికి వినియోగదారుని ప్రామాణీకరించడానికి సమూహంలో భాగంగా "
"వినియోగదారు ఖాతా అవసరం."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9247,25 +9247,25 @@ msgstr ""
"చేయవచ్చు. అయినప్పటికీ, <em>అడ్మిన్</em> సమూహం యొక్క వినియోగదారులు మాత్రమే యాప్‌లు లేదా సిస్టమ్ "
"సెట్టింగ్‌లను మార్చవచ్చు."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "వినియోగదారులు మరియు సమూహాలు"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "అన్ని సేవలకు మరియు సిస్టమ్ అమరికలకు ప్రాప్యత"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "LDAP నమోదు \"{search_item}\" తనిఖీ"
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "nslcd config \"{key} {value}\"ని తనిఖీ చేయండి"
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "nsswitch config \"{database}\"ని తనిఖీ చేయండి"

View File

@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"PO-Revision-Date: 2025-09-10 04:01+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-09-24 03:01+0000\n"
"Last-Translator: Burak Yavuz <hitowerdigit@hotmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/freedombox/"
"freedombox/tr/>\n"
@ -32,28 +32,28 @@ msgstr "{container_name} kapsayıcısı çalışıyor"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "{service_name} hizmeti çalışıyor"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
"{kind} üzerinde {listen_address}:{port} nolu bağlantı noktasını dinleme"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} üzerinde {port} nolu bağlantı noktasını dinleme"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} adresine bağlı"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} adresine bağlanamıyor"
@ -216,12 +216,12 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Yedeklemeler, yedekleme arşivleri oluşturmayı ve yönetmeyi sağlar."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Yedeklemeler"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -229,19 +229,19 @@ msgstr ""
"Veri güvenliği için otomatik bir yedekleme planı etkinleştirin. Şifrelenmiş "
"bir uzak yedekleme konumu veya fazladan eklenmiş bir disk tercih edin."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Bir Yedekleme Planı etkinleştirin"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "{app_name} için git"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -250,7 +250,7 @@ msgstr ""
"Planlanmış bir yedekleme başarısız oldu. Geçen {error_count} yedekleme "
"denemesi başarılı olmadı. En son hata: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Yedekleme Sırasında Hata"
@ -1642,55 +1642,57 @@ msgid ""
"This app also shows the <a href=\"{logs_url}\">logs</a> for {box_name} "
"services."
msgstr ""
"Bu uygulama ayrıca {box_name} hizmetleri için <a href=\"{logs_url}"
"\">günlükleri</a> gösterir."
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Tanılama"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "atlandı"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "geçti"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "başarısız"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "hata"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "uyarı"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Bellek kullanımını azaltmak için bazı uygulamaları etkisizleştirmelisiniz."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Bu sisteme herhangi bir yeni uygulama yüklememelisiniz."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1699,24 +1701,24 @@ msgstr ""
"Sistem belleği düşük: %{percent_used} kullanılıyor, {memory_available}."
"{memory_available_unit} boş. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Düşük Bellek"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Tanılama çalıştırılıyor"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "Sıradan denemeler sırasında {issue_count} sorun bulundu."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Tanı sonuçları"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Tanı sonuçlarına git"
@ -9112,7 +9114,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Dağıtım Güncellemesi"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Paket bekletmelerini denetle"
@ -9527,7 +9529,7 @@ msgstr "Yükseltmeyi başlatma başarısız oldu."
msgid "Frequent feature updates activated."
msgstr "Sık yapılan özellik güncellemeleri etkinleştirildi."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9538,7 +9540,7 @@ msgstr ""
"kullanıcıya, uygulamaya erişme yetkisi vermek için bir kullanıcı hesabının "
"bir grubun parçası olmasını gerektirir."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9550,25 +9552,25 @@ msgstr ""
"sadece <em>admin</em> grubunun kullanıcıları uygulamaları veya sistem "
"ayarlarını değiştirebilir."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Kullanıcılar ve Gruplar"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Tüm hizmetlere ve sistem ayarlarına erişim"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "LDAP \"{search_item}\" girişini denetleme"
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "\"{key} {value}\" nslcd yapılandırmasını denetleme"
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "\"{database}\" nsswitch yapılandırmasını denetleme"
@ -10492,13 +10494,7 @@ msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
#, fuzzy, python-format
#| msgid ""
#| "This is an internal error and not something you caused or can fix. Please "
#| "report the error on the <a href=\"https://salsa.debian.org/freedombox-"
#| "team/freedombox/issues\">bug tracker</a> so we can fix it. Also, please "
#| "attach the <a href=\"%(status_log_url)s\">status log</a> to the bug "
#| "report."
#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the <a href=\"https://salsa.debian.org/freedombox-team/"
@ -10508,30 +10504,23 @@ msgstr ""
"Bu bir iç hatadır ve sizin neden olduğunuz veya düzeltebileceğiniz bir şey "
"değildir. Lütfen düzeltebilmemiz için <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">hata izleyicide</a> hatayı bildirin. "
"Ayrıca, lütfen hata raporuna <a href=\"%(status_log_url)s\">durum günlüğünü</"
"a> ekleyin."
"Ayrıca, lütfen hata raporuna <a href=\"%(logs_url)s\">günlükleri</a> ekleyin."
#: plinth/templates/app-header.html:26
msgid "Installation"
msgstr "Kurulum"
#: plinth/templates/app-logs.html:12
#, fuzzy
#| msgid ""
#| "These are the last %(num_lines)s lines of the status log for this web "
#| "interface. If you want to report a bug, please use the <a href=\"https://"
#| "salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> and "
#| "attach this status log to the bug report."
msgid ""
"These are the last lines of the logs for services involved in this app. If "
"you want to report a bug, please use the <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">bug tracker</a> and attach this log to "
"the bug report."
msgstr ""
"Bunlar, bu web arayüzü için durum günlüğünün son %(num_lines)s satırıdır. "
"Bunlar, bu uygulamada yer alan hizmetler için günlüklerin son satırlarıdır. "
"Eğer bir hata bildirmek istiyorsanız, lütfen <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\">hata izleyiciyi</a> "
"kullanın ve bu durum günlüğünü hata raporuna ekleyin."
"kullanın ve bu günlüğü hata raporuna ekleyin."
#: plinth/templates/app-logs.html:26
msgid ""
@ -10792,10 +10781,8 @@ msgid "Clear all tags"
msgstr "Tüm etiketleri temizle"
#: plinth/templates/toolbar.html:39 plinth/templates/toolbar.html:40
#, fuzzy
#| msgid "Logs"
msgid "View Logs"
msgstr "Günlükler"
msgstr "Günlükleri görüntüle"
#: plinth/templates/toolbar.html:46 plinth/templates/toolbar.html:47
msgid "Backup"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"PO-Revision-Date: 2025-09-10 04:01+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-09-24 03:02+0000\n"
"Last-Translator: Максим Горпиніч <gorpinicmaksim0@gmail.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/freedombox/"
"freedombox/uk/>\n"
@ -34,27 +34,27 @@ msgstr "Контейнер {container_name} працює"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Сервіс {service_name} запущено"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Слухати на {kind} порт {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Слухати на {kind} порт {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Під'єднання до {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Неможливо підключитись до {host}:{port}"
@ -219,12 +219,12 @@ msgid "Backups allows creating and managing backup archives."
msgstr ""
"Резервне копіювання дозволяє створювати та керувати резервними архівами."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Резервні копії"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -233,19 +233,19 @@ msgstr ""
"Для резервних копій надається перевага віддаленому зашифрованому "
"розташуванню або зовнішньому знімному диску."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Дозволити планування резервних копій"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Перейти в {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -254,7 +254,7 @@ msgstr ""
"Невдале заплановане резервне копіювання. Минулі {error_count} спроб не були "
"успішними. Остання помилка: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Помилка під час резервного копіювання"
@ -1651,55 +1651,57 @@ msgid ""
"This app also shows the <a href=\"{logs_url}\">logs</a> for {box_name} "
"services."
msgstr ""
"Ця програма також показує <a href=\"{logs_url}\">журнали</a> для сервісів "
"{box_name}."
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Діагностика"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr "пропущено"
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "пройдено"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "невдало"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "помилка"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "попередження"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "МіБ"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "ҐіБ"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr ""
"Ви повинні вимкнути деякі застосунки, щоб зменшити використання памʼяті."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Не слід встановлювати нові застосунки в цій системі."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1708,24 +1710,24 @@ msgstr ""
"У системі бракує памʼяті: {percent_used}% використано, {memory_available} "
"{memory_available_unit} вільно. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Мало памʼяті"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "Виконується діагностика"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "Знайдено {issue_count} проблеми під час звичайних перевірок."
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "Результати діагностики"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "Перейти до результатів діагностики"
@ -9107,7 +9109,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Оновлення розповсюдження"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr "Перевірте наявність пакетів"
@ -9522,7 +9524,7 @@ msgstr "Не вдалося розпочати оновлення."
msgid "Frequent feature updates activated."
msgstr "Оновлення частих можливостей активовано."
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
@ -9533,7 +9535,7 @@ msgstr ""
"застосунки також вимагають, щоб обліковий запис був частиною групи, щоб "
"отримати авторизований доступ до застосунку."
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -9545,25 +9547,25 @@ msgstr ""
"користувачі з групи <em>admin</em> можуть змінювати застосунки або системні "
"налаштування."
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "Користувачі і групи"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr "Доступ до всіх сервісів і налаштувань системи"
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "Перевірка запису LDAP \"{search_item}\""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr "Перевірте nslcd конфігурацію \"{key} {value}\""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr "Перевірте nsswitch конфігурацію \"{database}\""
@ -10483,47 +10485,34 @@ msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
#, fuzzy, python-format
#| msgid ""
#| "This is an internal error and not something you caused or can fix. Please "
#| "report the error on the <a href=\"https://salsa.debian.org/freedombox-"
#| "team/freedombox/issues\">bug tracker</a> so we can fix it. Also, please "
#| "attach the <a href=\"%(status_log_url)s\">status log</a> to the bug "
#| "report."
#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the <a href=\"https://salsa.debian.org/freedombox-team/"
"freedombox/issues\">bug tracker</a> so we can fix it. Also, please attach "
"the <a href=\"%(logs_url)s\">logs</a> to the bug report."
msgstr ""
"Це внутрішня помилка і не те, що Ви спричинили чи можете виправити. Будь "
"ласка, повідомте про помилку на сторінці <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">відстеження недоліків</a>, щоб ми могли "
"виправити її. Також, будь ласка, прикріпіть до звіту про недолік <a "
"href=\"%(status_log_url)s\">журнал стану</a>."
"Це внутрішня помилка, яку ви не спричинили і не можете виправити. Будь "
"ласка, повідомте про помилку на <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">bug tracker</a>, щоб ми могли її "
"виправити. Також, будь ласка, додайте <a href=\"%(logs_url)s\">журнали</a> "
"до звіту про помилку."
#: plinth/templates/app-header.html:26
msgid "Installation"
msgstr "Встановлення"
#: plinth/templates/app-logs.html:12
#, fuzzy
#| msgid ""
#| "These are the last %(num_lines)s lines of the status log for this web "
#| "interface. If you want to report a bug, please use the <a href=\"https://"
#| "salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> and "
#| "attach this status log to the bug report."
msgid ""
"These are the last lines of the logs for services involved in this app. If "
"you want to report a bug, please use the <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">bug tracker</a> and attach this log to "
"the bug report."
msgstr ""
"Це останні %(num_lines)s рядків із журналу стану для цього вебінтерфейсу. "
"Якщо Ви бажаєте повідомити про недолік, будь ласка використовуйте сторінку "
"<a href=\"https://salsa.debian.org/freedombox-team/freedombox/"
"issues\">відстеження недоліків</a> і прикріпіть цей журнал стану до звіту "
"про недолік."
"Це останні рядки журналів для служб, пов'язаних із цією програмою. Якщо ви "
"хочете повідомити про помилку, скористайтеся <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\">системою відстеження "
"помилок</a> і додайте цей журнал до звіту про помилку."
#: plinth/templates/app-logs.html:26
msgid ""
@ -10783,10 +10772,8 @@ msgid "Clear all tags"
msgstr "Очистити всі теги"
#: plinth/templates/toolbar.html:39 plinth/templates/toolbar.html:40
#, fuzzy
#| msgid "Logs"
msgid "View Logs"
msgstr "Журнали"
msgstr "Переглянути журнали"
#: plinth/templates/toolbar.html:46 plinth/templates/toolbar.html:47
msgid "Backup"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2021-07-28 08:34+0000\n"
"Last-Translator: bruh <quangtrung02hn16@gmail.com>\n"
"Language-Team: Vietnamese <https://hosted.weblate.org/projects/freedombox/"
@ -34,27 +34,27 @@ msgstr "Dịch vụ {service_name} đang chạy"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Dịch vụ {service_name} đang chạy"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Đang lắng nghe ở cổng {kind} {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Đang lắng nghe ở cổng {kind} {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Kết nối đến {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Không thể kết nối đến {host}:{port}"
@ -227,12 +227,12 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr "Sao lưu cho phép bạn tạo và quản lý các tệp sao lưu."
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Sao lưu"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
@ -240,19 +240,19 @@ msgstr ""
"Bật một lịch trình sao lưu tự động để dữ liệu được an toàn. Ưu tiên một vị "
"trí sao lưu trên mạng được mã hoá hoặc một ổ đĩa bổ sung được gắn vào."
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "Bật một lịch trình sao lưu"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "Đi đến {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -261,7 +261,7 @@ msgstr ""
"Sao lưu được lên lịch thất bại. {error_count} lần thử sao lưu trước đó không "
"thành công. Lỗi mới nhất là: {error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "Lỗi trong khi sao lưu"
@ -1705,52 +1705,52 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "Chẩn đoán"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "đã qua"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "đã trượt"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "lỗi"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "cảnh báo"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "Bạn nên tắt một số ứng dụng để sử dụng ít bộ nhớ hơn."
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "Bạn không nên cài đặt bất kỳ ứng dụng mới nào trên hệ thống này."
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1759,28 +1759,28 @@ msgstr ""
"Hệ thống còn ít bộ nhớ: đã sử dụng {percent_used}%, còn trống "
"{memory_available} {memory_available_unit}. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "Ít bộ nhớ"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Running diagnostics"
msgstr "Chạy chẩn đoán"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Diagnostics results"
msgstr "Kết quả chẩn đoán"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
#, fuzzy
#| msgid "Diagnostic Results"
msgid "Go to diagnostics results"
@ -8442,7 +8442,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "Đã cập nhật thiết lập"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8793,14 +8793,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8808,25 +8808,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Plinth\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"PO-Revision-Date: 2025-09-10 04:01+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-09-24 03:02+0000\n"
"Last-Translator: 大王叫我来巡山 "
"<hamburger2048@users.noreply.hosted.weblate.org>\n"
"Language-Team: Chinese (Simplified Han script) <https://hosted.weblate.org/"
@ -34,27 +34,27 @@ msgstr "{container_name} 容器正在运行"
msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "服务{service_name}正在运行"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "正在侦听 {kind} 端口 {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "正在侦听 {kind} 端口 {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "连接到主机 {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "不能连接到主机 {host}:{port}"
@ -213,30 +213,30 @@ msgstr ""
msgid "Backups allows creating and managing backup archives."
msgstr "备份允许创建和管理备份存档。"
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "备份"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr "为数据安全启用自动备份计划,最好使用加密的远程备份位置或附加的磁盘。"
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "启用备份计划"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "转到 {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -244,7 +244,7 @@ msgid ""
msgstr ""
"定时备份失败,尝试{error_count}次备份未成功。最后的错误是:{error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "备份时出错"
@ -1579,52 +1579,52 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "诊断程序"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "通过了"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "失败"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "错误"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "警告"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "你应该禁用一些应用程序以减少内存的使用。"
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "你不应该在这个系统上安装任何新的应用程序。"
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1633,24 +1633,24 @@ msgstr ""
"系统内存不足:已使用 {percent_used}{memory_available} "
"{memory_available_unit}可用。{advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "低内存"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "运行诊断程序"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr ""
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "诊断结果"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "转到诊断结果"
@ -8232,7 +8232,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "更新分发"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8577,14 +8577,14 @@ msgstr "开始升级失败。"
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8592,25 +8592,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr "用户和组"
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr "请检查 LDAP 条目“{search_item}”"
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""
@ -9447,44 +9447,31 @@ msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
#, fuzzy, python-format
#| msgid ""
#| "This is an internal error and not something you caused or can fix. Please "
#| "report the error on the <a href=\"https://salsa.debian.org/freedombox-"
#| "team/freedombox/issues\">bug tracker</a> so we can fix it. Also, please "
#| "attach the <a href=\"%(status_log_url)s\">status log</a> to the bug "
#| "report."
#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the <a href=\"https://salsa.debian.org/freedombox-team/"
"freedombox/issues\">bug tracker</a> so we can fix it. Also, please attach "
"the <a href=\"%(logs_url)s\">logs</a> to the bug report."
msgstr ""
"这是一个内部错误,不是你造成的或可以修复。 请报告到 <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\"> bug 追踪器</a> 上这样我"
"们就可以修复该错误。同时请附加<a href=\"%(status_log_url)s\">状态日志</a>到 "
"Bug 报告里。"
"这是一个内部错误,不是你造成的或可以修复的。 请报告到 <a href=\"https://"
"salsa.debian.org/freedombox-team/freedombox/issues\"> bug 追踪器</a> 上,让我"
"们可以修复该错误。同时请附加 <a href=\"%(logs_url)s\">日志</a>到 Bug 报告里。"
#: plinth/templates/app-header.html:26
msgid "Installation"
msgstr "安装"
#: plinth/templates/app-logs.html:12
#, fuzzy
#| msgid ""
#| "These are the last %(num_lines)s lines of the status log for this web "
#| "interface. If you want to report a bug, please use the <a href=\"https://"
#| "salsa.debian.org/freedombox-team/freedombox/issues\">bug tracker</a> and "
#| "attach this status log to the bug report."
msgid ""
"These are the last lines of the logs for services involved in this app. If "
"you want to report a bug, please use the <a href=\"https://salsa.debian.org/"
"freedombox-team/freedombox/issues\">bug tracker</a> and attach this log to "
"the bug report."
msgstr ""
"这些是此 Web 界面状态日志的最后 %(num_lines)s 行。如果想报 Bug请通过 <a "
"这些是本应用涉及到的服务的日志的最后几行。如果想报 Bug请通过 <a "
"href=\"salsa.debian.org/freedombox-team/freedombox/issues\"> bug 追踪器</a> "
"并附上此状态日志。"
"并附上此日志。"
#: plinth/templates/app-logs.html:26
msgid ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 00:05+0000\n"
"POT-Creation-Date: 2025-10-07 00:04+0000\n"
"PO-Revision-Date: 2025-02-07 12:01+0000\n"
"Last-Translator: pesder <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Traditional Han script) <https://hosted.weblate.org/"
@ -34,27 +34,27 @@ msgstr "{service_name} 服務執行中"
msgid "FreedomBox"
msgstr "自由盒子"
#: plinth/daemon.py:124
#: plinth/daemon.py:131
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "{service_name} 服務執行中"
#: plinth/daemon.py:221
#: plinth/daemon.py:228
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "正在聆聽 {kind} 埠 {listen_address}:{port}"
#: plinth/daemon.py:224
#: plinth/daemon.py:231
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "正在聆聽 {kind} 埠 {port}"
#: plinth/daemon.py:295
#: plinth/daemon.py:302
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "正在連線 {host}:{port}"
#: plinth/daemon.py:303
#: plinth/daemon.py:310
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "無法連線到 {host}:{port}"
@ -214,31 +214,31 @@ msgstr "mDNS"
msgid "Backups allows creating and managing backup archives."
msgstr "Backups 能提供建立和管理備份檔。"
#: plinth/modules/backups/__init__.py:44 plinth/modules/backups/__init__.py:174
#: plinth/modules/backups/__init__.py:219
#: plinth/modules/backups/__init__.py:46 plinth/modules/backups/__init__.py:176
#: plinth/modules/backups/__init__.py:221
msgid "Backups"
msgstr "Backups 模組"
#: plinth/modules/backups/__init__.py:171
#: plinth/modules/backups/__init__.py:173
msgid ""
"Enable an automatic backup schedule for data safety. Prefer an encrypted "
"remote backup location or an extra attached disk."
msgstr ""
"啟用自動排程的備份以策資料安全。請優先使用加密的遠端備份位置或外接式磁碟。"
#: plinth/modules/backups/__init__.py:177
#: plinth/modules/backups/__init__.py:179
msgid "Enable a Backup Schedule"
msgstr "啟用備份排程"
#: plinth/modules/backups/__init__.py:181
#: plinth/modules/backups/__init__.py:228 plinth/modules/privacy/__init__.py:84
#: plinth/modules/backups/__init__.py:183
#: plinth/modules/backups/__init__.py:230 plinth/modules/privacy/__init__.py:84
#: plinth/modules/storage/__init__.py:326
#: plinth/modules/upgrades/__init__.py:152
#, python-brace-format
msgid "Go to {app_name}"
msgstr "移至 {app_name}"
#: plinth/modules/backups/__init__.py:216
#: plinth/modules/backups/__init__.py:218
#, python-brace-format
msgid ""
"A scheduled backup failed. Past {error_count} attempts for backup did not "
@ -247,7 +247,7 @@ msgstr ""
"排程備份已失敗。總共 {error_count} 次備份嘗試沒有成功。最新的錯誤是︰"
"{error_message}"
#: plinth/modules/backups/__init__.py:224
#: plinth/modules/backups/__init__.py:226
msgid "Error During Backup"
msgstr "備份時發生錯誤"
@ -1621,52 +1621,52 @@ msgid ""
msgstr ""
#: plinth/modules/diagnostics/__init__.py:60
#: plinth/modules/diagnostics/__init__.py:254
#: plinth/modules/diagnostics/__init__.py:255
msgid "Diagnostics"
msgstr "診斷"
#: plinth/modules/diagnostics/__init__.py:114
#: plinth/modules/diagnostics/__init__.py:115
msgid "skipped"
msgstr ""
#: plinth/modules/diagnostics/__init__.py:115
#: plinth/modules/diagnostics/__init__.py:116
msgid "passed"
msgstr "通過"
#: plinth/modules/diagnostics/__init__.py:116
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/networks/views.py:51
msgid "failed"
msgstr "失敗"
#: plinth/modules/diagnostics/__init__.py:117
#: plinth/modules/diagnostics/__init__.py:118
msgid "error"
msgstr "錯誤"
#: plinth/modules/diagnostics/__init__.py:118
#: plinth/modules/diagnostics/__init__.py:119
msgid "warning"
msgstr "警告"
#. Translators: This is the unit of computer storage Mebibyte similar to
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:220
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "MiB"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:225
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "GiB"
#: plinth/modules/diagnostics/__init__.py:232
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
msgstr "您應該停用一些應用程式以減少記憶體使用量。"
#: plinth/modules/diagnostics/__init__.py:237
#: plinth/modules/diagnostics/__init__.py:238
msgid "You should not install any new apps on this system."
msgstr "您不應該在這個系統上安裝任何新的應用程式。"
#: plinth/modules/diagnostics/__init__.py:249
#: plinth/modules/diagnostics/__init__.py:250
#, no-python-format, python-brace-format
msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
@ -1675,24 +1675,24 @@ msgstr ""
"系統記憶體不足: 使用了{percent_used}%,剩 {memory_available}"
"{memory_available_unit} 可用。{advice_message}"
#: plinth/modules/diagnostics/__init__.py:251
#: plinth/modules/diagnostics/__init__.py:252
msgid "Low Memory"
msgstr "記憶體不足"
#: plinth/modules/diagnostics/__init__.py:282
#: plinth/modules/diagnostics/__init__.py:283
msgid "Running diagnostics"
msgstr "正在進行診斷"
#: plinth/modules/diagnostics/__init__.py:328
#: plinth/modules/diagnostics/__init__.py:329
#, no-python-format, python-brace-format
msgid "Found {issue_count} issues during routine tests."
msgstr "在例行測試中發現{issue_count}個問題。"
#: plinth/modules/diagnostics/__init__.py:329
#: plinth/modules/diagnostics/__init__.py:330
msgid "Diagnostics results"
msgstr "診斷結果"
#: plinth/modules/diagnostics/__init__.py:334
#: plinth/modules/diagnostics/__init__.py:335
msgid "Go to diagnostics results"
msgstr "前往診斷結果頁面"
@ -8339,7 +8339,7 @@ msgstr ""
msgid "Distribution Update"
msgstr "配置已更新"
#: plinth/modules/upgrades/__init__.py:385
#: plinth/modules/upgrades/__init__.py:394
msgid "Check for package holds"
msgstr ""
@ -8690,14 +8690,14 @@ msgstr ""
msgid "Frequent feature updates activated."
msgstr ""
#: plinth/modules/users/__init__.py:33
#: plinth/modules/users/__init__.py:34
msgid ""
"Create and manage user accounts. These accounts serve as centralized "
"authentication mechanism for most apps. Some apps further require a user "
"account to be part of a group to authorize the user to access the app."
msgstr ""
#: plinth/modules/users/__init__.py:38
#: plinth/modules/users/__init__.py:39
#, python-brace-format
msgid ""
"Any user may login to {box_name} web interface to see a list of apps "
@ -8705,25 +8705,25 @@ msgid ""
"group may alter apps or system settings."
msgstr ""
#: plinth/modules/users/__init__.py:59
#: plinth/modules/users/__init__.py:60
msgid "Users and Groups"
msgstr ""
#: plinth/modules/users/__init__.py:85
#: plinth/modules/users/__init__.py:86
msgid "Access to all services and system settings"
msgstr ""
#: plinth/modules/users/__init__.py:137
#: plinth/modules/users/__init__.py:139
#, python-brace-format
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
#: plinth/modules/users/__init__.py:152
#: plinth/modules/users/__init__.py:154
#, python-brace-format
msgid "Check nslcd config \"{key} {value}\""
msgstr ""
#: plinth/modules/users/__init__.py:182
#: plinth/modules/users/__init__.py:184
#, python-brace-format
msgid "Check nsswitch config \"{database}\""
msgstr ""

View File

@ -90,13 +90,16 @@ def _capture_warnings():
warnings.filterwarnings('default', '', ImportWarning)
def action_init():
def action_init(console: bool = False):
"""Initialize logging for action scripts."""
_capture_warnings()
configuration = get_configuration()
# Don't log to console
configuration['root']['handlers'] = ['journal']
if console:
configuration['root']['handlers'] = ['console']
else:
configuration['root']['handlers'] = ['journal']
logging.config.dictConfig(configuration)

View File

@ -5,7 +5,6 @@ import glob
import os
import pathlib
import re
import subprocess
from plinth import action_utils
from plinth.actions import privileged
@ -62,14 +61,14 @@ def setup(old_version: int):
# version of Apache FreedomBox app and setting up for the first time don't
# regenerate.
if action_utils.is_disk_image() and old_version == 0:
subprocess.run([
action_utils.run([
'make-ssl-cert', 'generate-default-snakeoil', '--force-overwrite'
], check=True)
# In case the certificate has been removed after ssl-cert is installed
# on a fresh Debian machine.
elif not os.path.exists('/etc/ssl/certs/ssl-cert-snakeoil.pem'):
subprocess.run(['make-ssl-cert', 'generate-default-snakeoil'],
check=True)
action_utils.run(['make-ssl-cert', 'generate-default-snakeoil'],
check=True)
with action_utils.WebserverChange() as webserver:
# Disable mod_php as we have switched to mod_fcgi + php-fpm. Disable

View File

@ -35,6 +35,8 @@ class BackupsApp(app_module.App):
_version = 3
can_be_disabled = False
def __init__(self) -> None:
"""Create components for the app."""
super().__init__()

View File

@ -118,8 +118,8 @@ def reraise_known_errors(privileged_func):
def _reraise_known_errors(err):
"""Look whether the caught error is known and reraise it accordingly"""
stdout = (getattr(err, 'stdout') or b'').decode()
stderr = (getattr(err, 'stderr') or b'').decode()
stdout = (getattr(err, 'stdout', b'') or b'').decode()
stderr = (getattr(err, 'stderr', b'') or b'').decode()
caught_error = str((err, err.args, stdout, stderr))
for known_error in KNOWN_ERRORS:
for error in known_error['errors']:
@ -194,7 +194,7 @@ def _is_mounted(mountpoint):
cmd = ['mountpoint', '-q', mountpoint]
# mountpoint exits with status non-zero if it didn't find a mountpoint
try:
subprocess.run(cmd, check=True)
action_utils.run(cmd, check=True)
return True
except subprocess.CalledProcessError:
return False
@ -244,8 +244,7 @@ def init(path: str, encryption: str,
@privileged
def info(path: str, encryption_passphrase: secret_str | None = None) -> dict:
"""Show repository information."""
process = _run(['borg', 'info', '--json', path], encryption_passphrase,
stdout=subprocess.PIPE)
process = _run(['borg', 'info', '--json', path], encryption_passphrase)
return json.loads(process.stdout.decode())
@ -255,7 +254,7 @@ def list_repo(path: str,
encryption_passphrase: secret_str | None = None) -> dict:
"""List repository contents."""
process = _run(['borg', 'list', '--json', '--format="{comment}"', path],
encryption_passphrase, stdout=subprocess.PIPE)
encryption_passphrase)
return json.loads(process.stdout.decode())
@ -281,7 +280,7 @@ def remove_uploaded_archive(file_path: str):
def _get_borg_version():
"""Return the version of borgbackup."""
process = _run(['borg', '--version'], stdout=subprocess.PIPE)
process = _run(['borg', '--version'])
return process.stdout.decode().split()[1] # Example: "borg 1.1.9"
@ -322,10 +321,7 @@ def _extract(archive_path, destination, encryption_passphrase, locations=None):
try:
os.chdir(os.path.expanduser(destination))
# TODO: with python 3.7 use subprocess.run with the 'capture_output'
# argument
process = _run(borg_call, encryption_passphrase, check=False,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
process = _run(borg_call, encryption_passphrase, check=False)
if process.returncode != 0:
error = process.stderr.decode()
# Don't fail on the borg error when no files were matched
@ -350,8 +346,7 @@ def export_tar(path: str, encryption_passphrase: secret_str | None = None):
def _read_archive_file(archive, filepath, encryption_passphrase):
"""Read the content of a file inside an archive."""
borg_call = ['borg', 'extract', archive, filepath, '--stdout']
return _run(borg_call, encryption_passphrase,
stdout=subprocess.PIPE).stdout.decode()
return _run(borg_call, encryption_passphrase).stdout.decode()
@reraise_known_errors
@ -365,8 +360,7 @@ def get_archive_apps(
'borg', 'list', path, manifest_folder, '--format', '{path}{NEWLINE}'
]
try:
borg_process = _run(borg_call, encryption_passphrase,
stdout=subprocess.PIPE)
borg_process = _run(borg_call, encryption_passphrase)
manifest_path = borg_process.stdout.decode().strip()
except subprocess.CalledProcessError:
raise RuntimeError('Borg exited unsuccessfully')

View File

@ -237,7 +237,7 @@ class RootBorgRepository(BaseBorgRepository):
UUID = 'root'
PATH = '/var/lib/freedombox/borgbackup'
storage_type = 'root'
storage_type = 'root' # type: ignore
name = format_lazy(_('{box_name} storage'), box_name=_(cfg.box_name))
borg_path = PATH
sort_order = 10
@ -252,7 +252,7 @@ class RootBorgRepository(BaseBorgRepository):
class BorgRepository(BaseBorgRepository):
"""General Borg repository implementation."""
known_credentials = ['encryption_passphrase']
storage_type = 'disk'
storage_type = 'disk' # type: ignore
sort_order = 20
flags = {'removable': True}
@ -273,7 +273,7 @@ class SshBorgRepository(BaseBorgRepository):
known_credentials = [
'ssh_keyfile', 'ssh_password', 'encryption_passphrase'
]
storage_type = 'ssh'
storage_type = 'ssh' # type: ignore
sort_order = 30
flags = {'removable': True, 'mountable': True}

View File

@ -10,7 +10,6 @@ import pwd
import secrets
import shutil
import string
import subprocess
import augeas
@ -71,13 +70,13 @@ def setup(domain_name: str):
try:
grp.getgrnam('bepasty')
except KeyError:
subprocess.run(['addgroup', '--system', 'bepasty'], check=True)
action_utils.run(['addgroup', '--system', 'bepasty'], check=True)
# Create bepasty user if needed.
try:
pwd.getpwnam('bepasty')
except KeyError:
subprocess.run([
action_utils.run([
'adduser', '--system', '--ingroup', 'bepasty', '--home',
'/var/lib/bepasty', '--gecos', 'bepasty file sharing', 'bepasty'
], check=True)
@ -174,5 +173,5 @@ def uninstall():
"""Remove bepasty user, group and data."""
shutil.rmtree(DATA_DIR, ignore_errors=True)
CONF_FILE.unlink(missing_ok=True)
subprocess.run(['deluser', 'bepasty'], check=False)
subprocess.run(['delgroup', 'bepasty'], check=False)
action_utils.run(['deluser', 'bepasty'], check=False)
action_utils.run(['delgroup', 'bepasty'], check=False)

View File

@ -3,7 +3,6 @@
import pathlib
import shutil
import subprocess
from plinth import action_utils
from plinth.actions import privileged
@ -28,9 +27,9 @@ def create_library(name: str):
calibre.validate_library_name(name)
library = LIBRARIES_PATH / name
library.mkdir(mode=0o755) # Raise exception if already exists
subprocess.call(
action_utils.run(
['calibredb', '--with-library', library, 'list_categories'],
stdout=subprocess.DEVNULL)
check=False)
# Force systemd StateDirectory= logic to assign proper ownership to the
# DynamicUser=

View File

@ -29,9 +29,8 @@ def fixture_patch():
path = pathlib.Path(args[0][2]) / 'metadata.db'
path.touch()
with patch('subprocess.call') as subprocess_call, \
patch('subprocess.run'), patch('shutil.chown'):
subprocess_call.side_effect = side_effect
with patch('subprocess.run') as subprocess_run, patch('shutil.chown'):
subprocess_run.side_effect = side_effect
yield

View File

@ -109,23 +109,23 @@ def home_page_url2scid(url: str | None):
def _home_page_scid2url(shortcut_id: str) -> str | None:
"""Return the url for the given home page shortcut ID."""
url: str | None = '/plinth/'
if shortcut_id == 'plinth':
url = '/plinth/'
pass
elif shortcut_id == 'apache-default':
url = None
elif shortcut_id.startswith('uws-'):
user = shortcut_id[4:]
if user in get_users_with_website():
url = uws_url_of_user(user)
else:
url = None
else:
shortcuts = frontpage.Shortcut.list()
aux = [
shortcut.url for shortcut in shortcuts
if shortcut_id == shortcut.component_id
]
url = aux[0] if 1 == len(aux) else None
if 1 == len(aux):
url = aux[0]
return url

View File

@ -4,11 +4,13 @@ Tests for config module.
"""
import os
from unittest.mock import MagicMock, patch
import pathlib
from unittest.mock import Mock, patch
import pytest
from plinth import __main__ as plinth_main
from plinth import utils
from plinth.modules.apache import uws_directory_of_user, uws_url_of_user
from plinth.modules.config import (_home_page_scid2url, change_home_page,
get_home_page, home_page_url2scid)
@ -61,23 +63,14 @@ def test_homepage_mapping_skip_ci():
# AC: Return None if it doesn't:
os.rmdir(uws_directory)
assert _home_page_scid2url(uws_scid) is None
assert _home_page_scid2url(uws_scid) == '/plinth/'
class Dict2Obj:
"""Mock object made out of any dict."""
def __init__(self, a_dict):
self.__dict__ = a_dict
@patch('plinth.frontpage.Shortcut.list',
MagicMock(return_value=[
Dict2Obj({
'url': 'url/for/' + id,
'component_id': id
}) for id in ('a', 'b')
]))
@patch(
'plinth.frontpage.Shortcut.list',
Mock(return_value=[
Mock(url='url/for/' + id, component_id=id) for id in ('a', 'b')
]))
@pytest.mark.usefixtures('needs_root')
def test_homepage_field():
"""Test homepage changes.
@ -104,23 +97,14 @@ def test_homepage_field():
Currently they share the same test case.
- Search for another valid user apart from fbx.
"""
user = 'fbx'
user = 'test_' + utils.random_string(size=12)
uws_directory = uws_directory_of_user(user)
uws_url = uws_url_of_user(user)
uws_scid = home_page_url2scid(uws_url)
default_home_page = 'plinth'
original_home_page = get_home_page() or default_home_page
# Check test's preconditions:
if original_home_page not in (default_home_page, None):
reason = "Unexpected home page {}.".format(original_home_page)
pytest.skip(reason)
if os.path.exists(uws_directory):
# Don't blindly remove a pre-existing directory. Just skip the test.
reason = "UWS directory {} exists already.".format(uws_directory)
pytest.skip(reason)
change_home_page(default_home_page) # Set to known value explicitly
# AC: invalid changes fall back to default:
for scid in ('uws-unexisting', uws_scid, 'missing_app'):
@ -128,12 +112,7 @@ def test_homepage_field():
assert get_home_page() == default_home_page
# AC: valid changes actually happen:
try:
os.mkdir(uws_directory)
except Exception:
reason = "Needs access to ~/ directory. " \
+ "CI sandboxed workspace doesn't provide it."
pytest.skip(reason)
pathlib.Path(uws_directory).mkdir(parents=True)
for scid in ('b', 'a', uws_scid, 'apache-default', 'plinth'):
change_home_page(scid)
assert get_home_page() == scid

View File

@ -1,8 +1,7 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Set time zone with timedatectl."""
import subprocess
from plinth import action_utils
from plinth.actions import privileged
@ -10,4 +9,4 @@ from plinth.actions import privileged
def set_timezone(timezone: str):
"""Set time zone with timedatectl."""
command = ['timedatectl', 'set-timezone', timezone]
subprocess.run(command, stdout=subprocess.DEVNULL, check=True)
action_utils.run(command, check=True)

View File

@ -86,8 +86,9 @@ class DiagnosticsApp(app_module.App):
# Check periodically for low RAM space
glib.schedule(3600, _warn_about_low_ram_space)
# Run diagnostics once a day
glib.schedule(24 * 3600, _daily_diagnostics_run, in_thread=False)
# Run diagnostics once a day or every 30 minutes in development mode.
glib.schedule(24 * 3600, _daily_diagnostics_run, in_thread=False,
develop_interval=1800)
def setup(self, old_version):
"""Install and configure the app."""

View File

@ -89,7 +89,7 @@ def setup(domain_name: str):
_upgrade_config(domain_name)
try:
subprocess.check_output(['ejabberdctl', 'restart'])
action_utils.run(['ejabberdctl', 'restart'], check=True)
except subprocess.CalledProcessError as err:
logger.warn('Failed to restart ejabberd with new configuration: %s',
err)
@ -145,11 +145,11 @@ def pre_change_hostname(old_hostname: str, new_hostname: str):
logger.info('ejabberdctl not found')
return
subprocess.call(['ejabberdctl', 'backup', EJABBERD_BACKUP])
subprocess.check_output([
action_utils.run(['ejabberdctl', 'backup', EJABBERD_BACKUP], check=False)
action_utils.run([
'ejabberdctl', 'mnesia-change-nodename', 'ejabberd@' + old_hostname,
'ejabberd@' + new_hostname, EJABBERD_BACKUP, EJABBERD_BACKUP_NEW
])
], check=True)
os.remove(EJABBERD_BACKUP)
@ -160,20 +160,20 @@ def change_hostname():
return
action_utils.service_stop('ejabberd')
subprocess.call(['pkill', '-u', 'ejabberd'])
action_utils.run(['pkill', '-u', 'ejabberd'], check=False)
# Make sure there aren't files in the Mnesia spool dir
os.makedirs('/var/lib/ejabberd/oldfiles', exist_ok=True)
subprocess.call('mv /var/lib/ejabberd/*.* /var/lib/ejabberd/oldfiles/',
shell=True)
action_utils.run('mv /var/lib/ejabberd/*.* /var/lib/ejabberd/oldfiles/',
shell=True, check=False)
action_utils.service_start('ejabberd')
# restore backup database
if os.path.exists(EJABBERD_BACKUP_NEW):
try:
subprocess.check_output(
['ejabberdctl', 'restore', EJABBERD_BACKUP_NEW])
action_utils.run(['ejabberdctl', 'restore', EJABBERD_BACKUP_NEW],
check=True)
os.remove(EJABBERD_BACKUP_NEW)
except subprocess.CalledProcessError as err:
logger.error('Failed to restore ejabberd backup database: %s', err)
@ -278,7 +278,7 @@ def mam(command: str) -> bool | None:
yaml.dump(conf, file_handle)
if action_utils.service_is_running('ejabberd'):
subprocess.call(['ejabberdctl', 'reload_config'])
action_utils.run(['ejabberdctl', 'reload_config'], check=False)
return None
@ -359,14 +359,14 @@ def configure_turn(turn_server_config: dict[str, Any], managed: bool):
Path(EJABBERD_MANAGED_COTURN).unlink(missing_ok=True)
if action_utils.service_is_running('ejabberd'):
subprocess.call(['ejabberdctl', 'reload_config'])
action_utils.run(['ejabberdctl', 'reload_config'], check=False)
def _get_version():
"""Get the current ejabberd version."""
try:
output = subprocess.check_output(['ejabberdctl',
'status']).decode('utf-8')
output = action_utils.run(['ejabberdctl', 'status'],
check=True).stdout.decode('utf-8')
except subprocess.CalledProcessError:
return None

View File

@ -11,6 +11,8 @@ import re
import subprocess
from dataclasses import dataclass
from plinth import action_utils
@dataclass
class Service: # NOQA, pylint: disable=too-many-instance-attributes
@ -109,7 +111,7 @@ def _run(args):
Raise a RuntimeError on non-zero exit codes.
"""
try:
result = subprocess.run(args, check=True, capture_output=True)
result = action_utils.run(args, check=True)
return result.stdout.decode()
except subprocess.SubprocessError as subprocess_error:
raise RuntimeError('Subprocess failed') from subprocess_error

View File

@ -7,8 +7,8 @@ See: https://rspamd.com/doc/modules/dkim_signing.html
import pathlib
import re
import shutil
import subprocess
from plinth import action_utils
from plinth.actions import privileged
from plinth.privileged import service as service_privileged
@ -30,9 +30,9 @@ def get_dkim_public_key(domain: str) -> str:
"""Privileged action to get the public key from DKIM key."""
_validate_domain_name(domain)
key_file = _keys_dir / f'{domain}.dkim.key'
output = subprocess.check_output(
output = action_utils.run(
['openssl', 'rsa', '-in',
str(key_file), '-pubout'], stderr=subprocess.DEVNULL)
str(key_file), '-pubout'], check=True).stdout
return ''.join(output.decode().splitlines()[1:-1])
@ -54,7 +54,7 @@ def setup_dkim(domain: str):
# Ed25519 is widely *not* accepted as of 2022-01. See:
# https://serverfault.com/questions/1023674
subprocess.run([
action_utils.run([
'rspamadm', 'dkim_keygen', '-t', 'rsa', '-b', '2048', '-s', 'dkim',
'-d', domain, '-k', (str(key_file))
], check=True)

View File

@ -6,8 +6,7 @@ See:
https://doc.dovecot.org/configuration_manual/authentication/user_databases_userdb/
"""
import subprocess
from plinth import action_utils
from plinth.actions import privileged
@ -19,4 +18,4 @@ def setup_home():
Dovecot creates new directories with the same permissions as the parent
directory. Ensure that 'others' can't access /var/mail/.
"""
subprocess.run(['chmod', 'o-rwx', '/var/mail'], check=True)
action_utils.run(['chmod', 'o-rwx', '/var/mail'], check=True)

View File

@ -10,8 +10,8 @@ For testing DKIM signatures: https://www.mail-tester.com/
import pathlib
import re
import subprocess
from plinth import action_utils
from plinth.actions import privileged
from plinth.modules.email import postfix
@ -31,10 +31,11 @@ def setup_spam():
def _compile_sieve():
"""Compile all .sieve script to binary format for performance."""
sieve_dirs = ['/etc/dovecot/freedombox-sieve-after/',
'/etc/dovecot/freedombox-sieve']
sieve_dirs = [
'/etc/dovecot/freedombox-sieve-after/', '/etc/dovecot/freedombox-sieve'
]
for sieve_dir in sieve_dirs:
subprocess.run(['sievec', sieve_dir], check=True)
action_utils.run(['sievec', sieve_dir], check=True)
def _setup_rspamd():

View File

@ -36,10 +36,10 @@ def _flush_iptables_rules():
iptables_rules += rule_template.format(table=table)
ip6tables_rules += rule_template.format(table=table)
subprocess.run(['iptables-restore'], input=iptables_rules.encode(),
check=True)
subprocess.run(['ip6tables-restore'], input=iptables_rules.encode(),
check=True)
action_utils.run(['iptables-restore'], input=iptables_rules.encode(),
check=True)
action_utils.run(['ip6tables-restore'], input=iptables_rules.encode(),
check=True)
def set_firewall_backend(backend):
@ -67,8 +67,7 @@ def set_firewall_backend(backend):
def _run_firewall_cmd(args):
"""Run firewall-cmd command, discard output and check return value."""
subprocess.run(['firewall-cmd'] + args, stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL, check=True)
action_utils.run(['firewall-cmd'] + args, check=True)
def _setup_local_service_protection():
@ -160,9 +159,8 @@ def _setup_inter_zone_forwarding():
def setup():
"""Perform basic firewalld setup."""
action_utils.service_enable('firewalld')
subprocess.run(['firewall-cmd', '--set-default-zone=external'],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
check=True)
action_utils.run(['firewall-cmd', '--set-default-zone=external'],
check=True)
set_firewall_backend('nftables')
_setup_local_service_protection()
@ -176,7 +174,8 @@ def get_config() -> FirewallConfig:
config: FirewallConfig = {}
# Get the default zone.
output = subprocess.check_output(['firewall-cmd', '--get-default-zone'])
output = action_utils.run(['firewall-cmd', '--get-default-zone'],
check=True).stdout
config['default_zone'] = output.decode().strip()
# Load Augeas lens.
@ -191,8 +190,9 @@ def get_config() -> FirewallConfig:
config['backend'] = aug.get('FirewallBackend')
# Get the list of direct passthroughs.
output = subprocess.check_output(
['firewall-cmd', '--direct', '--get-all-passthroughs'])
output = action_utils.run(
['firewall-cmd', '--direct', '--get-all-passthroughs'],
check=True).stdout
config['passthroughs'] = output.decode().strip().split('\n')
return config

View File

@ -34,7 +34,7 @@ class GitwebApp(app_module.App):
app_id = 'gitweb'
_version = 3
_version = 4
def __init__(self) -> None:
"""Create components for the app."""

View File

@ -4,14 +4,16 @@
import configparser
import logging
import os
import pathlib
import re
import shutil
import subprocess
import time
from typing import Any
from urllib import parse
from plinth import action_utils
from plinth.actions import privileged
from plinth.actions import privileged, secret_str
from plinth.modules.gitweb.forms import RepositoryValidator, get_name_from_url
from plinth.modules.gitweb.manifest import GIT_REPO_PATH, REPO_DIR_OWNER
@ -27,7 +29,7 @@ def validate_repo_name(name: str) -> str:
return name
def validate_repo_url(url: str) -> str:
def validate_repo_url(url: secret_str) -> secret_str:
"""Validate a repository URL."""
RepositoryValidator(input_should_be='url')(url)
return url
@ -35,33 +37,58 @@ def validate_repo_url(url: str) -> str:
@privileged
def setup():
"""Disable default Apache2 Gitweb configuration."""
"""Configure Gitweb module."""
# Disable default Apache2 Gitweb configuration.
action_utils.webserver_disable('gitweb')
if not _get_global_default_branch():
_set_global_default_branch('main')
# Configure Git client.
if not _get_git_global_config('init.defaultBranch'):
_set_git_global_config('init.defaultBranch', 'main')
if not _get_git_global_config('credential.helper'):
_set_git_global_config('credential.helper', 'cache')
def _get_global_default_branch():
"""Get globally configured default branch name."""
def _get_git_global_config(key: str) -> str | None:
"""Return a value from Git global configuration."""
try:
default_branch = subprocess.check_output(
['git', 'config', '--global', '--get',
'init.defaultBranch']).decode().strip()
value = action_utils.run(['git', 'config', '--global', '--get', key],
check=True).stdout.decode().strip()
except subprocess.CalledProcessError as exception:
if exception.returncode == 1: # Default branch not configured
if exception.returncode == 1: # Configuration option doesn't exist
return None
raise
return default_branch
return value
def _set_global_default_branch(name):
"""Configure default branch name globally."""
subprocess.check_call(
['git', 'config', '--global', 'init.defaultBranch', name])
def _set_git_global_config(key: str, value: str) -> None:
"""Set a Git global configuration value."""
action_utils.run(['git', 'config', '--global', key, value], check=True)
def _clone_with_progress_report(url, repo_dir):
def _setup_git_credentials(url: secret_str) -> str:
"""Set up git credential helper and return URL without credentials."""
url_parts = parse.urlsplit(url)
safe_netloc = url_parts.netloc.split('@')[-1]
safe_url = url_parts._replace(netloc=safe_netloc).geturl()
username = url_parts.username or ''
password = url_parts.password or ''
if username or password:
# Feed credentials to Git credential helper
input = (f'protocol={url_parts.scheme}\n'
f'host={safe_netloc}\n'
f'username={username}\n'
f'password={password}\n\n')
env = dict(os.environ, GIT_TERMINAL_PROMPT='0')
action_utils.run(['git', 'credential', 'approve'],
input=input.encode(), stdout=subprocess.DEVNULL,
check=True, env=env)
return safe_url
def _clone_with_progress_report(url: secret_str, repo_dir: pathlib.Path):
"""Clone a repository and write progress info to the file."""
starttime = time.time()
status_file = repo_dir / 'clone_progress'
@ -70,9 +97,12 @@ def _clone_with_progress_report(url, repo_dir):
env = dict(os.environ, GIT_TERMINAL_PROMPT='0', LC_ALL='C',
GIT_HTTP_LOW_SPEED_LIMIT='100', GIT_HTTP_LOW_SPEED_TIME='60')
safe_url = _setup_git_credentials(url)
logger.info(f'Cloning Git repository {safe_url} ...')
proc = subprocess.Popen(
['git', 'clone', '--bare', '--progress', url,
['git', 'clone', '--bare', '--progress', safe_url,
str(repo_temp_dir)], stderr=subprocess.PIPE, text=True, env=env)
assert proc.stderr is not None
# write clone progress to the file
errors = []
@ -108,7 +138,7 @@ def _clone_with_progress_report(url, repo_dir):
raise RuntimeError('Git repository cloning failed.', errors)
def _prepare_clone_repo(url: str, is_private: bool):
def _prepare_clone_repo(url: secret_str, is_private: bool):
"""Prepare cloning a repository."""
repo_name = get_name_from_url(url)
if not repo_name.endswith('.git'):
@ -150,7 +180,8 @@ def _clone_status_line_to_percent(line):
return None
def _clone_repo(url: str, description: str, owner: str, keep_ownership: bool):
def _clone_repo(url: secret_str, description: str, owner: str,
keep_ownership: bool):
"""Clone a repository."""
repo = get_name_from_url(url)
if not repo.endswith('.git'):
@ -166,9 +197,9 @@ def _clone_repo(url: str, description: str, owner: str, keep_ownership: bool):
shutil.rmtree(repo_temp_path)
if not keep_ownership:
subprocess.check_call(
action_utils.run(
['chown', '-R', f'{REPO_DIR_OWNER}:{REPO_DIR_OWNER}', repo],
cwd=GIT_REPO_PATH)
cwd=GIT_REPO_PATH, check=True)
_set_repo_description(repo, description)
_set_repo_owner(repo, owner)
@ -178,12 +209,12 @@ def _create_repo(repo: str, description: str, owner: str, is_private: bool,
keep_ownership: bool):
"""Create an empty repository."""
try:
subprocess.check_call(['git', 'init', '-q', '--bare', repo],
cwd=GIT_REPO_PATH)
action_utils.run(['git', 'init', '-q', '--bare', repo],
cwd=GIT_REPO_PATH, check=True)
if not keep_ownership:
subprocess.check_call(
action_utils.run(
['chown', '-R', f'{REPO_DIR_OWNER}:{REPO_DIR_OWNER}', repo],
cwd=GIT_REPO_PATH)
cwd=GIT_REPO_PATH, check=True)
_set_repo_description(repo, description)
_set_repo_owner(repo, owner)
if is_private:
@ -202,8 +233,7 @@ def _get_default_branch(repo):
return action_utils.run_as_user(
['git', '-C',
str(repo_path), 'symbolic-ref', '--short', 'HEAD'],
username=REPO_DIR_OWNER, check=True,
stdout=subprocess.PIPE).stdout.decode().strip()
username=REPO_DIR_OWNER, check=True).stdout.decode().strip()
def _get_repo_description(repo):
@ -271,8 +301,7 @@ def _get_branches(repo):
"""Return list of the branches in the repository."""
process = action_utils.run_as_user(
['git', '-C', repo, 'branch', '--format=%(refname:short)'],
cwd=GIT_REPO_PATH, username=REPO_DIR_OWNER, check=True,
stdout=subprocess.PIPE)
cwd=GIT_REPO_PATH, username=REPO_DIR_OWNER, check=True)
return process.stdout.decode().strip().split()
@ -345,7 +374,7 @@ def repo_info(name: str) -> dict[str, str]:
@privileged
def create_repo(url: str | None = None, name: str | None = None,
def create_repo(url: secret_str | None = None, name: str | None = None,
description: str = '', owner: str = '',
keep_ownership: bool = False, is_private: bool = False,
skip_prepare: bool = False, prepare_only: bool = False):
@ -367,13 +396,14 @@ def create_repo(url: str | None = None, name: str | None = None,
@privileged
def repo_exists(url: str) -> bool:
def repo_exists(url: secret_str) -> bool:
"""Return whether remote repository exists."""
url = validate_repo_url(url)
safe_url = _setup_git_credentials(url)
env = dict(os.environ, GIT_TERMINAL_PROMPT='0')
try:
subprocess.check_call(['git', 'ls-remote', url, 'HEAD'], timeout=10,
env=env)
action_utils.run(['git', 'ls-remote', safe_url, 'HEAD'], timeout=10,
env=env, check=True)
return True
except subprocess.CalledProcessError:
return False

View File

@ -2,6 +2,8 @@
"""Test module for gitweb module operations."""
import pathlib
import subprocess
from unittest.mock import call, patch
import pytest
from django.forms import ValidationError
@ -121,3 +123,26 @@ def test_action_create_repo_with_invalid_urls(url):
with pytest.raises(ValidationError):
privileged.create_repo(url=url, description='', owner='',
keep_ownership=True)
@patch('plinth.action_utils.run')
def test_setup_git_creentials(run):
"""Test that setting up git credentials works."""
url = 'https://user:pass@host.example/path?key=value'
safe_url = privileged._setup_git_credentials(url)
assert safe_url == 'https://host.example/path?key=value'
input_ = b'protocol=https\nhost=host.example\nusername=user\n' \
b'password=pass\n\n'
env = run.mock_calls[0].kwargs.pop('env')
assert env['GIT_TERMINAL_PROMPT'] == '0'
assert run.mock_calls == [
call(['git', 'credential', 'approve'], input=input_,
stdout=subprocess.DEVNULL, check=True)
]
run.reset_mock()
url = 'https://host2.example/path?key=value'
safe_url = privileged._setup_git_credentials(url)
assert safe_url == 'https://host2.example/path?key=value'
run.assert_not_called()

View File

@ -5,8 +5,8 @@ import os
import pathlib
import re
import shutil
import subprocess
from plinth import action_utils
from plinth.actions import privileged, secret_str
SETUP_WIKI = '/etc/ikiwiki/plinth-wiki.setup'
@ -61,10 +61,9 @@ def create_wiki(wiki_name: str, admin_name: str, admin_password: secret_str):
"""Create a wiki."""
pw_bytes = admin_password.encode()
input_ = pw_bytes + b'\n' + pw_bytes
subprocess.run(['ikiwiki', '-setup', SETUP_WIKI, wiki_name, admin_name],
stdout=subprocess.PIPE, input=input_,
stderr=subprocess.PIPE,
env=dict(os.environ, PERL_UNICODE='AS'), check=True)
action_utils.run(['ikiwiki', '-setup', SETUP_WIKI, wiki_name, admin_name],
input=input_, env=dict(os.environ,
PERL_UNICODE='AS'), check=True)
@privileged
@ -72,17 +71,15 @@ def create_blog(blog_name: str, admin_name: str, admin_password: secret_str):
"""Create a blog."""
pw_bytes = admin_password.encode()
input_ = pw_bytes + b'\n' + pw_bytes
subprocess.run(['ikiwiki', '-setup', SETUP_BLOG, blog_name, admin_name],
stdout=subprocess.PIPE, input=input_,
stderr=subprocess.PIPE, env=dict(os.environ,
PERL_UNICODE='AS'))
action_utils.run(['ikiwiki', '-setup', SETUP_BLOG, blog_name, admin_name],
input=input_, env=dict(os.environ, PERL_UNICODE='AS'))
@privileged
def setup_site(site_name: str):
"""Run setup for a site."""
setup_path = os.path.join(WIKI_PATH, site_name + '.setup')
subprocess.run(['ikiwiki', '-setup', setup_path], check=True)
action_utils.run(['ikiwiki', '-setup', setup_path], check=True)
@privileged

View File

@ -9,6 +9,7 @@ import shutil
import subprocess
import time
from plinth import action_utils
from plinth.actions import privileged
DATA_DIR = '/var/lib/infinoted'
@ -105,7 +106,7 @@ def _kill_daemon():
end_time = time.time() + 300
while time.time() < end_time:
try:
subprocess.run(['infinoted', '--kill-daemon'], check=True)
action_utils.run(['infinoted', '--kill-daemon'], check=True)
break
except subprocess.CalledProcessError:
pass
@ -123,19 +124,19 @@ def setup():
with open(SYSTEMD_SERVICE_PATH, 'w', encoding='utf-8') as file_handle:
file_handle.write(SYSTEMD_SERVICE)
subprocess.check_call(['systemctl', 'daemon-reload'])
action_utils.service_daemon_reload()
# Create infinoted group if needed.
try:
grp.getgrnam('infinoted')
except KeyError:
subprocess.run(['addgroup', '--system', 'infinoted'], check=True)
action_utils.run(['addgroup', '--system', 'infinoted'], check=True)
# Create infinoted user if needed.
try:
pwd.getpwnam('infinoted')
except KeyError:
subprocess.run([
action_utils.run([
'adduser', '--system', '--ingroup', 'infinoted', '--home',
DATA_DIR, '--gecos', 'Infinoted collaborative editing server',
'infinoted'
@ -151,7 +152,7 @@ def setup():
try:
# infinoted doesn't have a "create key and exit" mode. Run as
# daemon so we can stop after.
subprocess.run([
action_utils.run([
'infinoted', '--create-key', '--create-certificate',
'--daemonize'
], check=True)

View File

@ -53,7 +53,8 @@ def add_package(file_name: str, temporary_file_path: str):
def _kiwix_manage_add(zim_file: str):
subprocess.check_call(['kiwix-manage', LIBRARY_FILE, 'add', zim_file])
action_utils.run(['kiwix-manage', LIBRARY_FILE, 'add', zim_file],
check=True)
# kiwix-serve doesn't read the library file unless it is restarted.
action_utils.service_try_restart('kiwix-server-freedombox')
@ -97,8 +98,8 @@ def delete_package(zim_id: str):
if book.attrib['id'] != zim_id:
continue
subprocess.check_call(
['kiwix-manage', LIBRARY_FILE, 'remove', zim_id])
action_utils.run(['kiwix-manage', LIBRARY_FILE, 'remove', zim_id],
check=True)
(KIWIX_HOME / book.attrib['path']).unlink()
action_utils.service_try_restart('kiwix-server-freedombox')
return

View File

@ -8,7 +8,6 @@ import os
import pathlib
import re
import shutil
import subprocess
import sys
from typing import Any
@ -28,8 +27,9 @@ WEB_ROOT_PATH = '/var/www/html'
def _get_certificate_expiry(domain: str) -> str:
"""Return the expiry date of a certificate."""
certificate_file = os.path.join(le.LIVE_DIRECTORY, domain, 'cert.pem')
output = subprocess.check_output(
['openssl', 'x509', '-enddate', '-noout', '-in', certificate_file])
output = action_utils.run(
['openssl', 'x509', '-enddate', '-noout', '-in', certificate_file],
check=True).stdout
return output.decode().strip().split('=')[1]
@ -41,7 +41,8 @@ def _get_modified_time(domain: str) -> int:
def _get_validity_status(domain: str) -> str:
"""Return validity status of a certificate; valid, revoked, expired."""
output = subprocess.check_output(['certbot', 'certificates', '-d', domain])
output = action_utils.run(['certbot', 'certificates', '-d', domain],
check=True).stdout
line = output.decode(sys.stdout.encoding)
match = re.search(r'INVALID: (.*)\)', line)
@ -115,7 +116,7 @@ def revoke(domain: str):
if TEST_MODE:
command.append('--staging')
subprocess.run(command, check=True)
action_utils.run(command, check=True)
action_utils.webserver_disable(domain, kind='site')
@ -132,7 +133,7 @@ def obtain(domain: str):
if TEST_MODE:
command.append('--staging')
subprocess.run(command, check=True)
action_utils.run(command, check=True)
@privileged
@ -249,5 +250,5 @@ def _assert_managed_path(module, path):
def delete(domain: str):
"""Disable a domain and delete the certificate."""
command = ['certbot', 'delete', '--non-interactive', '--cert-name', domain]
subprocess.run(command, check=True)
action_utils.run(command, check=True)
action_utils.webserver_disable(domain, kind='site')

View File

@ -7,6 +7,7 @@ import shutil
import subprocess
import tempfile
from plinth import action_utils
from plinth.actions import privileged, secret_str
from plinth.utils import generate_password
@ -26,8 +27,7 @@ def get_php_command():
version = ''
try:
process = subprocess.run(['dpkg', '-s', 'php'], stdout=subprocess.PIPE,
check=True)
process = action_utils.run(['dpkg', '-s', 'php'], check=True)
for line in process.stdout.decode().splitlines():
if line.startswith('Version:'):
version = line.split(':')[-1].split('+')[0].strip()
@ -51,14 +51,15 @@ def setup():
with tempfile.NamedTemporaryFile() as password_file_handle:
password_file_handle.write(password.encode())
password_file_handle.flush()
subprocess.check_call([
action_utils.run([
get_php_command(), install_script, '--confpath=/etc/mediawiki',
'--dbtype=sqlite', '--dbpath=' + data_dir,
'--scriptpath=/mediawiki', '--passfile',
password_file_handle.name, 'Wiki', 'admin'
])
subprocess.run(['chmod', '-R', 'o-rwx', data_dir], check=True)
subprocess.run(['chown', '-R', 'www-data:www-data', data_dir], check=True)
], check=True)
action_utils.run(['chmod', '-R', 'o-rwx', data_dir], check=True)
action_utils.run(['chown', '-R', 'www-data:www-data', data_dir],
check=True)
conf_file = pathlib.Path(CONF_FILE)
if not conf_file.exists():
@ -100,17 +101,17 @@ def change_password(username: str, password: secret_str):
change_password_script = os.path.join(MAINTENANCE_SCRIPTS_DIR,
'changePassword.php')
subprocess.check_call([
action_utils.run([
get_php_command(), change_password_script, '--user', username,
'--password', password
])
], check=True)
@privileged
def update():
"""Run update.php maintenance script when version upgrades happen."""
update_script = os.path.join(MAINTENANCE_SCRIPTS_DIR, 'update.php')
subprocess.check_call([get_php_command(), update_script, '--quick'])
action_utils.run([get_php_command(), update_script, '--quick'], check=True)
def _update_setting(setting_name, setting_line):
@ -178,7 +179,7 @@ def set_default_language(language: str):
# languages.
rebuild_messages_script = os.path.join(MAINTENANCE_SCRIPTS_DIR,
'rebuildmessages.php')
subprocess.check_call([get_php_command(), rebuild_messages_script])
action_utils.run([get_php_command(), rebuild_messages_script], check=True)
@privileged

View File

@ -1,7 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Configure minidlna server."""
import subprocess
from os import chmod, fdopen, remove, stat
from shutil import move
from tempfile import mkstemp
@ -51,7 +50,7 @@ def setup():
encoding='utf-8') as conf:
conf.write(SYSCTL_CONF)
subprocess.run(['systemctl', 'restart', 'systemd-sysctl'], check=True)
action_utils.run(['systemctl', 'restart', 'systemd-sysctl'], check=True)
@privileged

View File

@ -58,7 +58,12 @@ class MinifluxApp(app_module.App):
login_required=True)
self.add(shortcut)
packages = Packages('packages-miniflux', ['miniflux', 'postgresql'])
# miniflux package does not depend on postgres. Install postgresql,
# start it and only then install miniflux.
packages = Packages('packages-miniflux-postgresql', ['postgresql'])
self.add(packages)
packages = Packages('packages-miniflux', ['miniflux'])
self.add(packages)
drop_in_configs = DropinConfigs(
@ -74,7 +79,7 @@ class MinifluxApp(app_module.App):
urls=['https://{host}/miniflux/'])
self.add(webserver)
daemon = SharedDaemon('shared-daemon-miniflus-postgresql',
daemon = SharedDaemon('shared-daemon-miniflux-postgresql',
'postgresql')
self.add(daemon)
@ -89,7 +94,17 @@ class MinifluxApp(app_module.App):
def setup(self, old_version=None):
"""Install and configure the app."""
privileged.pre_setup()
super().setup(old_version)
# Database needs to be running for successful initialization or upgrade
# of miniflux database. 1. The app and database are being freshly
# installed. 2. The app is being freshly installed, but database server
# is already installed but disabled. 3. The app is being updated to new
# version but is currently disabled (DB is installed but disabled or
# enabled).
with self.get_component(
'shared-daemon-miniflux-postgresql').ensure_running():
super().setup(old_version)
privileged.setup(old_version)
if not old_version:
self.enable()
@ -97,7 +112,11 @@ class MinifluxApp(app_module.App):
def uninstall(self):
"""De-configure and uninstall the app."""
privileged.uninstall()
super().uninstall()
with self.get_component(
'shared-daemon-miniflux-postgresql').ensure_running():
# Database needs to be running for successful removal miniflux
# database.
super().uninstall()
class MinifluxBackupRestore(BackupRestore):

View File

@ -123,8 +123,13 @@ def reset_user_password(username: str, password: secret_str):
@privileged
def uninstall():
"""Ensure that the database is removed."""
action_utils.debconf_set_selections(
['miniflux miniflux/purge boolean true'])
action_utils.debconf_set_selections([
'miniflux miniflux/purge boolean true',
'miniflux miniflux/dbconfig-install boolean true',
'miniflux miniflux/dbconfig-reinstall boolean true'
'miniflux miniflux/dbconfig-upgrade boolean true',
'miniflux miniflux/dbconfig-remove boolean true',
])
def _get_database_config():

View File

@ -4,7 +4,6 @@ Configure Mumble server.
"""
import pathlib
import subprocess
import augeas
@ -37,8 +36,8 @@ def check_setup() -> bool:
@privileged
def set_super_user_password(password: secret_str):
"""Set the superuser password with murmurd command."""
subprocess.run(['murmurd', '-readsupw'], input=password.encode(),
stdout=subprocess.DEVNULL, check=False)
action_utils.run(['murmurd', '-readsupw'], input=password.encode(),
check=False)
@privileged

View File

@ -2,7 +2,6 @@
"""Configure Names App."""
import pathlib
import subprocess
import augeas
@ -22,7 +21,7 @@ HOSTS_LOCAL_IP = '127.0.1.1'
@privileged
def set_hostname(hostname: str):
"""Set system hostname using hostnamectl."""
subprocess.run(
action_utils.run(
['hostnamectl', 'set-hostname', '--transient', '--static', hostname],
check=True)
action_utils.service_restart('avahi-daemon')
@ -83,7 +82,7 @@ def domain_delete_all():
def install_resolved():
"""Install systemd-resolved related packages."""
packages = ['systemd-resolved', 'libnss-resolve']
subprocess.run(['dpkg', '--configure', '-a'], check=False)
action_utils.run(['dpkg', '--configure', '-a'], check=False)
with action_utils.apt_hold_freedombox():
action_utils.run_apt_command(['--fix-broken', 'install'])
returncode = action_utils.run_apt_command(['install'] + packages)

View File

@ -29,8 +29,9 @@ def _sort_interfaces(interfaces: list[str]) -> list[str]:
def _get_interfaces() -> dict[str, list[str]]:
"""Return all network interfaces by their type."""
output = subprocess.check_output(
['nmcli', '--terse', '--fields', 'type,device', 'device'])
output = action_utils.run(
['nmcli', '--terse', '--fields', 'type,device', 'device'],
check=True).stdout
interfaces = collections.defaultdict(list)
for line in output.decode().splitlines():
type_, _, interface = line.partition(':')
@ -45,14 +46,15 @@ def _get_interfaces() -> dict[str, list[str]]:
def _add_connection(connection_name: str, interface: str,
remaining_arguments: list[str]):
"""Add an Ethernet/Wi-Fi connection of type regular or shared."""
output = subprocess.check_output(
['nmcli', '--terse', '--fields', 'name,device', 'con', 'show'])
output = action_utils.run(
['nmcli', '--terse', '--fields', 'name,device', 'con', 'show'],
check=True).stdout
lines = output.decode().splitlines()
if f'{connection_name}:{interface}' in lines:
logging.info('Connection %s already exists for device %s, not adding.',
connection_name, interface)
else:
subprocess.run([
action_utils.run([
'nmcli', 'con', 'add', 'con-name', connection_name, 'ifname',
interface
] + remaining_arguments, check=True)
@ -108,8 +110,9 @@ def _set_connection_properties(connection_name: str, properties: dict[str,
str]):
"""Configure property key/values on a connection."""
for key, value in properties.items():
subprocess.run(['nmcli', 'con', 'modify', connection_name, key, value],
check=True)
action_utils.run(
['nmcli', 'con', 'modify', connection_name, key, value],
check=True)
def _configure_wireless_interface(interface: str):

View File

@ -6,10 +6,10 @@ from unittest.mock import patch
from .. import privileged
@patch('subprocess.check_output')
def test_get_interfaces(check_output):
@patch('subprocess.run')
def test_get_interfaces(run):
"""Test returning list of network interfaces in sorted order."""
check_output.return_value = '\n'.join([
run.return_value.stdout = '\n'.join([
'ethernet:ve-fbx-testing',
'ethernet:enp39s0',
'ethernet:enp32s1',

View File

@ -73,13 +73,13 @@ def setup():
def _run_in_container(
*args, capture_output: bool = False, check: bool = True,
*args, check: bool = True,
env: dict[str, str] | None = None) -> subprocess.CompletedProcess:
"""Run a command inside the container."""
env_args = [f'--env={key}={value}' for key, value in (env or {}).items()]
command = ['podman', 'exec', '--user', WWW_DATA_UID
] + env_args + [CONTAINER_NAME] + list(args)
return subprocess.run(command, capture_output=capture_output, check=check)
return action_utils.run(command, check=check)
def _run_occ(*args, **kwargs) -> subprocess.CompletedProcess:
@ -109,8 +109,7 @@ def disable():
def get_override_domain():
"""Return the domain name that Nextcloud is configured to override with."""
try:
domain = _run_occ('config:system:get', 'overwritehost',
capture_output=True)
domain = _run_occ('config:system:get', 'overwritehost')
return domain.stdout.decode().strip()
except subprocess.CalledProcessError:
return None
@ -159,8 +158,7 @@ def get_default_phone_region():
""""Get the value of default_phone_region."""
try:
default_phone_region = _run_occ('config:system:get',
'default_phone_region',
capture_output=True)
'default_phone_region')
return default_phone_region.stdout.decode().strip()
except subprocess.CalledProcessError:
return None
@ -174,7 +172,7 @@ def set_default_phone_region(region: str):
def _database_query(query: str):
"""Run a database query."""
subprocess.run(['mysql'], input=query.encode(), check=True)
action_utils.run(['mysql'], input=query.encode(), check=True)
def _create_database():
@ -239,14 +237,14 @@ def _nextcloud_wait_until_ready():
# obtaining. We are unable to obtain the lock for 5 minutes, fail and stop
# the setup process.
lock_file = _data_path / 'nextcloud-init-sync.lock'
subprocess.run(
action_utils.run(
['flock', '--exclusive', '--wait', '300', lock_file, 'echo'],
check=True)
def _nextcloud_get_status():
"""Return Nextcloud status such installed, in maintenance, etc."""
output = _run_occ('status', '--output=json', capture_output=True)
output = _run_occ('status', '--output=json')
return json.loads(output.stdout)
@ -281,8 +279,7 @@ def _configure_ldap():
# Check if LDAP has already been configured. This is necessary because
# if the setup proccess is rerun when updating the FredomBox app another
# redundant LDAP config would be created.
output = _run_occ('ldap:test-config', 's01', capture_output=True,
check=False)
output = _run_occ('ldap:test-config', 's01', check=False)
if 'Invalid configID' in output.stdout.decode():
_run_occ('ldap:create-empty-config')
@ -362,7 +359,7 @@ def dump_database():
with _maintenance_mode():
with DB_BACKUP_FILE.open('w', encoding='utf-8') as file_handle:
subprocess.run([
action_utils.run([
'mysqldump', '--add-drop-database', '--add-drop-table',
'--add-drop-trigger', '--single-transaction',
'--default-character-set=utf8mb4', '--user', 'root',
@ -374,11 +371,11 @@ def dump_database():
def restore_database():
"""Restore database from file."""
with DB_BACKUP_FILE.open('r', encoding='utf-8') as file_handle:
subprocess.run(['mysql', '--user', 'root'], stdin=file_handle,
check=True)
action_utils.run(['mysql', '--user', 'root'], stdin=file_handle,
check=True)
subprocess.run(['redis-cli', '-n',
str(REDIS_DB), 'FLUSHDB', 'SYNC'], check=False)
action_utils.run(['redis-cli', '-n',
str(REDIS_DB), 'FLUSHDB', 'SYNC'], check=False)
_set_database_privileges(_get_database_password())
@ -405,8 +402,7 @@ def _get_database_password():
code = 'if (file_exists("/var/www/html/config/config.php")) {' \
'include_once("/var/www/html/config/config.php");' \
'print($CONFIG["dbpassword"] ?? ""); }'
return _run_in_container('php', '-r', code,
capture_output=True).stdout.decode().strip()
return _run_in_container('php', '-r', code).stdout.decode().strip()
def _create_redis_config():

View File

@ -104,15 +104,15 @@ def _setup_firewall():
'firewall-cmd', '--zone', 'internal',
'--{}-interface'.format(operation), interface
]
subprocess.call(command)
subprocess.call(command + ['--permanent'])
action_utils.run(command, check=False)
action_utils.run(command + ['--permanent'], check=False)
def _is_tunplus_enabled():
"""Return whether tun+ interface is already added."""
try:
process = subprocess.run(
process = action_utils.run(
['firewall-cmd', '--zone', 'internal', '--list-interfaces'],
stdout=subprocess.PIPE, check=True)
check=True)
return 'tun+' in process.stdout.decode().strip().split()
except subprocess.CalledProcessError:
return True # Safer
@ -135,8 +135,8 @@ def _setup_firewall():
def _run_easy_rsa(args):
"""Execute easy-rsa command with some default arguments."""
return subprocess.run(['/usr/share/easy-rsa/easyrsa'] + args,
cwd=KEYS_DIRECTORY, check=True)
return action_utils.run(['/usr/share/easy-rsa/easyrsa'] + args,
cwd=KEYS_DIRECTORY, check=True)
def _write_easy_rsa_config():
@ -162,9 +162,9 @@ def _is_renewable(cert_name):
if not cert_path.exists():
return False
process = subprocess.run(
process = action_utils.run(
['openssl', 'x509', '-noout', '-enddate', '-in',
str(cert_path)], check=True, stdout=subprocess.PIPE)
str(cert_path)], check=True)
date_string = process.stdout.decode().strip().partition('=')[2]
cert_expiry_time = datetime.datetime.strptime(date_string,
'%b %d %H:%M:%S %Y GMT')

View File

@ -1,18 +1,17 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Shutdown/restart the system."""
import subprocess
from plinth import action_utils
from plinth.actions import privileged
@privileged
def restart():
"""Restart the system."""
subprocess.call('reboot')
action_utils.run('reboot', check=False)
@privileged
def shutdown():
"""Shut down the system."""
subprocess.call(['shutdown', 'now'])
action_utils.run(['shutdown', 'now'], check=False)

View File

@ -7,6 +7,7 @@ import pathlib
import shutil
import subprocess
from plinth import action_utils
from plinth.actions import privileged
DEFAULT_FILE = '/etc/default/samba'
@ -51,12 +52,13 @@ CONF = r'''
def _close_share(share_name):
"""Disconnect all samba users who are connected to the share."""
subprocess.check_call(['smbcontrol', 'smbd', 'close-share', share_name])
action_utils.run(['smbcontrol', 'smbd', 'close-share', share_name],
check=True)
def _conf_command(parameters, **kwargs):
"""Run samba configuration registry command."""
subprocess.check_call(['net', 'conf'] + parameters, **kwargs)
action_utils.run(['net', 'conf'] + parameters, check=True, **kwargs)
def _create_share(mount_point, share_type, windows_filesystem=False):
@ -103,7 +105,7 @@ def _create_share_name(mount_point):
def _define_open_share(name, path, windows_filesystem=False):
"""Define an open samba share."""
try:
_conf_command(['delshare', name], stderr=subprocess.DEVNULL)
_conf_command(['delshare', name])
except subprocess.CalledProcessError:
pass
_conf_command(['addshare', name, path, 'writeable=y', 'guest_ok=y'])
@ -115,7 +117,7 @@ def _define_open_share(name, path, windows_filesystem=False):
def _define_group_share(name, path, windows_filesystem=False):
"""Define a group samba share."""
try:
_conf_command(['delshare', name], stderr=subprocess.DEVNULL)
_conf_command(['delshare', name])
except subprocess.CalledProcessError:
pass
_conf_command(['addshare', name, path, 'writeable=y', 'guest_ok=n'])
@ -128,7 +130,7 @@ def _define_group_share(name, path, windows_filesystem=False):
def _define_homes_share(name, path):
"""Define a samba share for private homes."""
try:
_conf_command(['delshare', name], stderr=subprocess.DEVNULL)
_conf_command(['delshare', name])
except subprocess.CalledProcessError:
pass
userpath = os.path.join(path, '%u')
@ -153,7 +155,7 @@ def _get_mount_point(path):
def _get_shares() -> list[dict[str, str]]:
"""Get shares."""
shares = []
output = subprocess.check_output(['net', 'conf', 'list'])
output = action_utils.run(['net', 'conf', 'list'], check=True).stdout
config = configparser.RawConfigParser()
config.read_string(output.decode())
for name in config.sections():
@ -198,8 +200,8 @@ def _set_open_share_permissions(directory):
file_path = os.path.join(root, file)
shutil.chown(file_path, group='freedombox-share')
os.chmod(file_path, 0o0664)
subprocess.check_call(['setfacl', '-Rm', 'g::rwX', directory])
subprocess.check_call(['setfacl', '-Rdm', 'g::rwX', directory])
action_utils.run(['setfacl', '-Rm', 'g::rwX', directory], check=True)
action_utils.run(['setfacl', '-Rdm', 'g::rwX', directory], check=True)
def _use_config_file(conf_file):
@ -229,8 +231,8 @@ def _set_share_permissions(directory):
file_path = os.path.join(root, file)
shutil.chown(file_path, group='freedombox-share')
os.chmod(file_path, 0o0664)
subprocess.check_call(['setfacl', '-Rm', 'g::rwX', directory])
subprocess.check_call(['setfacl', '-Rdm', 'g::rwX', directory])
action_utils.run(['setfacl', '-Rm', 'g::rwX', directory], check=True)
action_utils.run(['setfacl', '-Rdm', 'g::rwX', directory], check=True)
@privileged
@ -270,7 +272,7 @@ def get_shares() -> list[dict[str, str]]:
@privileged
def get_users() -> list[str]:
"""Get users from Samba database."""
output = subprocess.check_output(['pdbedit', '-L']).decode()
output = action_utils.run(['pdbedit', '-L'], check=True).stdout.decode()
samba_users = [line.split(':')[0] for line in output.split()]
return samba_users

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