freedombox Debian release 23.18

-----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAmUSMyMWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICI3DEACAkOF4kOwtA8Lqy1tGCLVg8z3m
 ff+zDNDpi14vMu43Chz3xTfmPNtZQ20fRKQ78a1+IvOVZShaaZiqevGD/9rvbuBV
 RHQm+6YIR6Z5HqTQNnkKHO585q6JF1AxzgzMBt5cR98k5pIUykUKZAb32fgpzj8a
 Yxc8+vvPzNqyR1SCTT7PZDmjr46vi5c+mVcxPA017PrFtTSgIa8NTuTcXWInP5me
 JVFa8IuFqnNh05BwVW0qeCigQZ1Pvf/1TS3/VB2y2+52oPQeJdAzF0tKTSZJDUJb
 aH1er+PG5/YPlKU/oQpPK9oJn7eKzM8NqfTVEMyGKA+L0e7L4oNFnWTP2ctNQhh/
 DX+7D2sqZ6ALbS4A0Ur9hxifX0clIRzaohNYS77LztH178ZEZifNylL7qqO4qPWa
 tqLu0wPWT5WWDLUxkpDQSn7BhWZBIn4r4Xu5adWjvLA48/UHcrTkw6tpLlH0PDn6
 nXAaDraZOZJtrx1HbMUiwafPZ0ZZ5bQP0iS+8PHQGuV4dEiFuQ6M7L+hv93KEwlN
 Gf/Br8G123EqoZ/jknvuAP0qDC45R9mSRSyfi4h2Oi9/81y9XENIX9d99ddiiov+
 /yTE/4SIFDOzz8DionwRZhbWS9waHHiDQicAS7BopZUVjUr55E6foi461J43+zP3
 weP3eSvGV4k+JTkyKA==
 =ZDWe
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAmUWCocWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICI3WEADTuOoWqcsu8uJXksRdudQDJKAv
 GbXSzB5I7Ykb3sdIZRzRWYei7EFJrrxbSXbWlDbVXvz2hqAC43z+DknpG0RrT9u+
 lhffkm0luPE0mafZsOS+S0IuGu2a37DdKGFTp5+htwH6ekxM/tD/u2QFgaHbo0fL
 zZ3JjnUIfTHsJB16jtYowahf35Oh8gIodEvLA8tnF3lI+dRZtzwATictt6ux2rRL
 +Z3V0k5pFdKbjc5ZRyYZHtkOtPiNyQEIV1Zx3LUs42Q4qga2cZev8jRH/NDilZ+4
 2cFkeLAWKD34LA3odNbqOyKo9vMnbCFDO5H8VS5a+d6CXfP9EdkSTVWwZFWvyE2r
 xhqO6NEVmwOCXeNhye2Ajcg75ZU4i6+ro85SQyUEEr1s7+0tEQZxec/UV3Q7sc5r
 xaqj2dYJZOOjRufAIdDgZizhoTbRlQMsUg2J68dlg+2dH85OL4ncIz9OKTOYiF3s
 G8hdsP/XEI6im/ghdI0QcbmgWHB2D022iIZENxcJXsg+IY4cadwzMmfAr5LuxgGh
 W5qm9uRwz8zSW99TVAtK1Hq1U/WIqLe7LFIFY7+10B2e+dcGl+yF6vAS4Sj56ke3
 KlPzLYc0DHHHtdHq/UG9xS8myrWwK2YAQzSq4RfBIHnGmQeuQsPoYD4wIc5MRKyX
 jLdmo9UcmsPDaBnpSw==
 =AWE7
 -----END PGP SIGNATURE-----

Merge tag 'v23.18' into debian/bookworm-backports

freedombox Debian release 23.18

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
James Valleroy 2023-09-28 19:21:41 -04:00
commit 4a62d4fc77
118 changed files with 1828 additions and 1332 deletions

View File

@ -20,13 +20,12 @@ code-quality:
static-type-check:
stage: test
allow_failure: true
needs: []
before_script:
- apt-get update
- apt-get install -y mypy
script:
- mypy --ignore-missing-imports .
- mypy .
unit-tests:
stage: test
@ -120,7 +119,7 @@ build:
build-backports:
extends: .build-package
variables:
RELEASE: bullseye-backports
RELEASE: bookworm-backports
build i386:
extends: .build-package-i386

View File

@ -9,6 +9,7 @@ import logging
import os
import sys
import traceback
import types
import typing
import plinth.log
@ -166,10 +167,9 @@ def _assert_valid_type(arg_name, value, annotation):
return
if not hasattr(annotation, '__origin__'):
raise TypeError('Unsupported annotation type')
if annotation.__origin__ == typing.Union:
# 'int | str' or 'typing.Union[int, str]'
if (isinstance(annotation, types.UnionType)
or getattr(annotation, '__origin__', None) == typing.Union):
for arg in annotation.__args__:
try:
_assert_valid_type(arg_name, value, arg)
@ -179,7 +179,8 @@ def _assert_valid_type(arg_name, value, annotation):
raise TypeError(f'Expected one of unioned types for {arg_name}')
if annotation.__origin__ == list:
# 'list[int]' or 'typing.List[int]'
if getattr(annotation, '__origin__', None) == list:
if not isinstance(value, list):
raise TypeError(f'Expected type list for {arg_name}')
@ -189,7 +190,8 @@ def _assert_valid_type(arg_name, value, annotation):
return
if annotation.__origin__ == dict:
# 'list[dict]' or 'typing.List[dict]'
if getattr(annotation, '__origin__', None) == dict:
if not isinstance(value, dict):
raise TypeError(f'Expected type dict for {arg_name}')

29
debian/changelog vendored
View File

@ -1,3 +1,32 @@
freedombox (23.18) unstable; urgency=medium
[ 109247019824 ]
* Translated using Weblate (Bulgarian)
* Translated using Weblate (Bulgarian)
[ Brian Ó Donnell ]
* middleware: Add new middleware to handle common errors like DB busy
[ James Valleroy ]
* middleware: tests: Add tests for common error middleware
* locale: Update translations strings
* doc: Fetch latest manual
[ rsquared ]
* ikiwiki: Disable discussion pages by default for new wiki/blog
[ Sunil Mohan Adapa ]
* wordpress: Use absolute path in service file
* upgrades: Fix detecting apt over tor during upgrade
* gitlab-ci: Perform backports tests on bookworm instead of bullseye
* *: Fix all typing hint related errors
* gitlab-ci: Make passing mypy checks mandatory
* *: Utilize newer 3.10 syntax for type hints
* *: Add some additional type annotations
* pyproject: Add configuration for mypy to ignore some libraries
-- James Valleroy <jvalleroy@mailbox.org> Mon, 25 Sep 2023 20:47:20 -0400
freedombox (23.17~bpo12+1) bookworm-backports; urgency=medium
* Rebuild for bookworm-backports.

View File

@ -111,7 +111,7 @@ htmlhelp_basename = 'FreedomBoxdoc'
# -- Options for LaTeX output ------------------------------------------------
latex_elements = {
latex_elements: dict = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',

View File

@ -160,7 +160,6 @@ for transmission daemon. We will do this by creating a file ``privileged.py``.
import json
import pathlib
from typing import Union
from plinth import action_utils
from plinth.actions import privileged
@ -175,7 +174,7 @@ for transmission daemon. We will do this by creating a file ``privileged.py``.
@privileged
def merge_configuration(configuration: dict[str, Union[str, bool]]) -> None:
def merge_configuration(configuration: dict[str, str | bool]) -> None:
"""Merge given JSON configuration with existing configuration."""
current_configuration = _transmission_config.read_bytes()
current_configuration = json.loads(current_configuration)

View File

@ -8,6 +8,17 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 23.18 (2023-09-25) ==
* *: Fix all typing hint related errors
* development: Make passing mypy checks mandatory
* development: Perform backports tests on bookworm instead of bullseye
* ikiwiki: Disable discussion pages by default for new wiki/blog
* locale: Update translations for Bulgarian
* middleware: Add new middleware to handle common errors like DB busy
* upgrades: Fix detecting apt over tor during upgrade
* wordpress: Use absolute path in service file
== FreedomBox 23.17 (2023-09-11) ==
* locale: Update translations for Czech, Dutch, Spanish, Swedish, Turkish, Ukrainian

View File

@ -8,6 +8,17 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 23.18 (2023-09-25) ==
* *: Fix all typing hint related errors
* development: Make passing mypy checks mandatory
* development: Perform backports tests on bookworm instead of bullseye
* ikiwiki: Disable discussion pages by default for new wiki/blog
* locale: Update translations for Bulgarian
* middleware: Add new middleware to handle common errors like DB busy
* upgrades: Fix detecting apt over tor during upgrade
* wordpress: Use absolute path in service file
== FreedomBox 23.17 (2023-09-11) ==
* locale: Update translations for Czech, Dutch, Spanish, Swedish, Turkish, Ukrainian

View File

@ -3,4 +3,4 @@
Package init file.
"""
__version__ = '23.17'
__version__ = '23.18'

View File

@ -7,6 +7,7 @@ import collections
import enum
import inspect
import logging
from typing import ClassVar
from plinth import cfg
from plinth.signals import post_app_loading
@ -39,14 +40,15 @@ class App:
"""
app_id = None
app_id: str | None = None
can_be_disabled = True
can_be_disabled: bool = True
locked = False # Whether user interaction with the app is allowed.
locked: bool = False # Whether user interaction with the app is allowed.
# XXX: Lockdown the application UI by implementing a middleware
_all_apps = collections.OrderedDict()
_all_apps: ClassVar[collections.OrderedDict[
str, 'App']] = collections.OrderedDict()
class SetupState(enum.Enum):
"""Various states of app being setup."""

View File

@ -4,6 +4,7 @@
import json
import logging
import pathlib
from typing import ClassVar
from plinth import app, cfg
from plinth.modules.users import privileged as users_privileged
@ -14,7 +15,7 @@ logger = logging.getLogger(__name__)
class Shortcut(app.FollowerComponent):
"""An application component for handling shortcuts."""
_all_shortcuts = {}
_all_shortcuts: ClassVar[dict[str, 'Shortcut']] = {}
def __init__(self, component_id, name, short_description=None, icon=None,
url=None, description=None, manual_page=None,

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2022-03-31 09:12+0000\n"
"Last-Translator: abidin toumi <abidin24@disroot.org>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/freedombox/"
@ -29,7 +29,7 @@ msgstr "مصدر الصفحة"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr ""
@ -104,6 +104,10 @@ msgstr "اللغة المستخدمة في واجهة الويب"
msgid "Use the language preference set in the browser"
msgstr "استخدم لغة المتصفح"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1639,13 +1643,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1654,19 +1658,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1943,17 +1947,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2868,7 +2872,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2878,14 +2882,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3359,15 +3363,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7231,34 +7235,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7494,6 +7498,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7683,11 +7691,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2020-06-10 15:41+0000\n"
"Last-Translator: aiman an <an1f3@hotmail.com>\n"
"Language-Team: Arabic (Saudi Arabia) <https://hosted.weblate.org/projects/"
@ -29,7 +29,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr ""
@ -104,6 +104,10 @@ msgstr ""
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1639,13 +1643,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1654,19 +1658,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1945,17 +1949,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2870,7 +2874,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2880,14 +2884,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3363,15 +3367,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7235,34 +7239,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7498,6 +7502,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7687,11 +7695,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"PO-Revision-Date: 2023-04-19 09:52+0000\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-09-18 19:00+0000\n"
"Last-Translator: 109247019824 <stoyan@gmx.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/freedombox/"
"freedombox/bg/>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.18-dev\n"
"X-Generator: Weblate 5.0.2\n"
#: doc/dev/_templates/layout.html:11
msgid "Page source"
@ -28,7 +28,7 @@ msgstr "Изходен код на страницата"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -59,7 +59,7 @@ msgstr "Не може да се свърже с {host}:{port}"
#: plinth/forms.py:36
msgid "Backup app before uninstall"
msgstr "Направете резерено копие преди да премахнете приложението"
msgstr "Резервно копие преди премахване на приложението"
#: plinth/forms.py:37
msgid "Restoring from the backup will restore app data."
@ -108,6 +108,10 @@ msgstr "Език на интерфейса"
msgid "Use the language preference set in the browser"
msgstr "Използване на предпочитания от четеца език"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Сървър на Apache HTTP"
@ -1739,13 +1743,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1759,19 +1763,19 @@ msgstr ""
"отметнато, до ejabberd ще има достъп всеки <a href=\"{users_url}\"> "
"потребител с вход в {box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -2053,17 +2057,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Порт {name} ({details}) достъпен за вътрешните мрежи"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Порт {name} ({details}) достъпен за външните мрежи"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Порт {name} ({details}) недостъпен за външните мрежи"
@ -2999,7 +3003,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3009,14 +3013,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3241,10 +3245,8 @@ msgid ""
msgstr ""
#: plinth/modules/mediawiki/forms.py:93
#, fuzzy
#| msgid "Select language"
msgid "Default Language"
msgstr "Избор на език"
msgstr "Подразбиран език"
#: plinth/modules/mediawiki/forms.py:94
msgid ""
@ -3289,10 +3291,8 @@ msgid "Site name updated"
msgstr "Името на страницата е променено"
#: plinth/modules/mediawiki/views.py:96
#, fuzzy
#| msgid "Select language"
msgid "Default language changed"
msgstr "Избор на език"
msgstr "Подразбираният език е променен"
#: plinth/modules/minetest/__init__.py:33
#, python-brace-format
@ -3508,15 +3508,15 @@ msgstr ""
msgid "Name Services"
msgstr "Услуги за имена"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Всички"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Всички приложения за уеб"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell"
@ -4015,7 +4015,7 @@ msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:27
msgid "Description"
msgstr ""
msgstr "Описание"
#: plinth/modules/networks/templates/connection_show.html:109
msgid "Physical Link"
@ -4907,7 +4907,7 @@ msgstr ""
#: plinth/modules/power/templates/power.html:22 plinth/templates/base.html:174
#: plinth/templates/base.html:175
msgid "Restart"
msgstr "Рестарт"
msgstr "Рестартиране"
#: plinth/modules/power/templates/power.html:25
msgid "Shut Down"
@ -4932,7 +4932,7 @@ msgstr ""
#: plinth/modules/power/templates/power_restart.html:48
#: plinth/modules/power/templates/power_restart.html:51
msgid "Restart Now"
msgstr "Рестарт"
msgstr "Рестартиране"
#: plinth/modules/power/templates/power_shutdown.html:17
msgid ""
@ -5454,7 +5454,7 @@ msgstr "Често обновяване на възможности"
#: plinth/modules/security/templates/security.html:21
#: plinth/modules/upgrades/templates/upgrades_configure.html:52
msgid "Frequent feature updates are activated."
msgstr "Честото обновяване на възможности е включено."
msgstr "Честото обновяване на пакети е включено."
#: plinth/modules/security/templates/security.html:26
#: plinth/modules/upgrades/templates/backports-firstboot.html:14
@ -5957,7 +5957,7 @@ msgstr "Настройките на моментните снимки на хр
#: plinth/modules/snapshot/views.py:162
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
msgstr "Грешка при действие: {0} [{1}] [{2}]"
#: plinth/modules/snapshot/views.py:188
msgid "Deleted selected snapshots"
@ -6380,10 +6380,8 @@ msgid "Obfs4 transport registered"
msgstr "Транспортът Obfs4 е регистриран"
#: plinth/modules/tor/__init__.py:168
#, fuzzy
#| msgid "Onion Service"
msgid "Onion service is version 3"
msgstr "Услуга на Onion"
msgstr "Услугата на Onion е версия 3"
#: plinth/modules/tor/forms.py:33
msgid ""
@ -6442,33 +6440,30 @@ msgid "Enable Tor bridge relay"
msgstr ""
#: plinth/modules/tor/forms.py:103
#, fuzzy
msgid ""
"When enabled, relay information is published in the Tor bridge database "
"instead of public Tor relay database making it harder to censor this node. "
"This helps others circumvent censorship."
msgstr "Когато е отметнато,"
msgstr ""
"Когато е отметнато, информацията за препращанията ще бъде публикувана в "
"базата от данни с мостове на Тор вместо в публичната база от данни с "
"препращания на Тор като по този начин прави възела по-труден за цензуриране. "
"Помага на другите да заобиколят цензурата."
#: plinth/modules/tor/forms.py:108
#, fuzzy
#| msgid "Enable Tor Hidden Service"
msgid "Enable Tor Onion Service"
msgstr "Включване на скритата услуга на Тор"
msgstr "Включване на услугата Tor Onion"
#: plinth/modules/tor/forms.py:110
#, fuzzy, python-brace-format
#| msgid ""
#| "A hidden service will allow {box_name} to provide selected services (such "
#| "as wiki or chat) without revealing its location. Do not use this for "
#| "strong anonymity yet."
#, python-brace-format
msgid ""
"An onion service will allow {box_name} to provide selected services (such as "
"wiki or chat) without revealing its location. Do not use this for strong "
"anonymity yet."
msgstr ""
"Скрита услуга дава възможност на {box_name} да предоставя избрани ислуги "
"(като енциклопедия или бързи съобщения) без да разкрива местоположението си. "
"Не използвайте, за да криете самоличността си, все още."
"Услугата Tor Onion дава възможност на {box_name} да предоставя избрани "
"услуги (като енциклопедия или бързи съобщения) без да разкрива "
"местоположението си. Не използвайте, за да криете самоличността си, все още."
#: plinth/modules/tor/forms.py:125
msgid "Specify at least one upstream bridge to use upstream bridges."
@ -6492,7 +6487,7 @@ msgstr "Портове"
#: plinth/modules/tor/views.py:53 plinth/modules/torproxy/views.py:51
msgid "Updating configuration"
msgstr "Настройките са променени"
msgstr "Запазване на настройки"
#: plinth/modules/tor/views.py:70 plinth/modules/torproxy/views.py:68
#, python-brace-format
@ -6509,10 +6504,8 @@ msgid ""
msgstr ""
#: plinth/modules/torproxy/__init__.py:54
#, fuzzy
#| msgid "Tor Socks Proxy"
msgid "Tor Proxy"
msgstr "Прокси сървър на Тор за SOCKS"
msgstr "Прокси сървър на Тор"
#: plinth/modules/torproxy/__init__.py:79
msgid "Tor Socks Proxy"
@ -6643,10 +6636,8 @@ msgid "News Feed Reader"
msgstr "Четец на абонаменти за новини"
#: plinth/modules/ttrss/manifest.py:10
#, fuzzy
#| msgid "Tiny Tiny RSS (Fork)"
msgid "Tiny Tiny RSS (TTTRSS)"
msgstr "Tiny Tiny RSS (Fork)"
msgstr "Tiny Tiny RSS (TTTRSS)"
#: plinth/modules/ttrss/manifest.py:20
msgid "TTRSS-Reader"
@ -6792,7 +6783,7 @@ msgstr ""
#: plinth/templates/notifications.html:50
#: plinth/templates/operation-notification.html:23
msgid "Dismiss"
msgstr ""
msgstr "Затваряне"
#: plinth/modules/upgrades/templates/upgrades_configure.html:30
#: plinth/modules/upgrades/templates/upgrades_configure.html:100
@ -6904,7 +6895,7 @@ msgstr ""
#: plinth/modules/upgrades/views.py:138
msgid "Frequent feature updates activated."
msgstr "Честото обновяване на възможности е включено."
msgstr "Честото обновяване на пакети е включено."
#: plinth/modules/upgrades/views.py:224
msgid "Starting distribution upgrade test."
@ -7625,34 +7616,34 @@ msgstr "Изчакване да започне: {name}"
msgid "Finished: {name}"
msgstr "Готово: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Пакетът „{expression}“ е недостъпен за инсталиране"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Времето за изчакване на диспечера на пакети е изтекло"
@ -7879,14 +7870,20 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "грешка"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
"Please wait for %(box_name)s to finish installation. You can start using "
"your %(box_name)s once it is done."
msgstr ""
"Изчакайте да завърши инсталирането на %(box_name)s. След това можете да "
"започнете употреба."
"Изчакайте да завърши инсталирането на %(box_name)s. След това устройството "
"%(box_name)s може да бъде въведено в употреба."
#: plinth/templates/index.html:22
#, python-format
@ -8048,10 +8045,8 @@ msgid "Update"
msgstr "Обновяване"
#: plinth/templates/toolbar.html:39 plinth/templates/toolbar.html:40
#, fuzzy
#| msgid "Backups"
msgid "Backup"
msgstr "Резервни копия"
msgstr "Резервно копие"
#: plinth/templates/toolbar.html:53
msgid "Re-run setup"
@ -8075,11 +8070,11 @@ msgstr ""
"Всички данни и настройки на приложението ще бъдат загубени. Приложението "
"може да бъде инсталирано отново."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Настройките не са променени"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "преди премахване на {app_id}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2021-06-16 07:33+0000\n"
"Last-Translator: Oymate <dhruboadittya96@gmail.com>\n"
"Language-Team: Bengali <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr "পৃষ্ঠার উৎস"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "ফ্রিডমবক্স"
@ -103,6 +103,10 @@ msgstr ""
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1639,13 +1643,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1654,19 +1658,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ইজ্যাবার্ড"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1957,17 +1961,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2882,7 +2886,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2892,14 +2896,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3375,15 +3379,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7250,34 +7254,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7501,6 +7505,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7690,11 +7698,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-08-31 19:50+0000\n"
"Last-Translator: Jiří Podhorecký <j.podhorecky@volny.cz>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr "Zdrojový kód stránky"
msgid "Static configuration {etc_path} is setup properly"
msgstr "Statická konfigurace {etc_path} je nastavena správně"
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -107,6 +107,10 @@ msgstr "Jazyk pro toto webové rozhraní"
msgid "Use the language preference set in the browser"
msgstr "Použít upřednostňovaný jazyk nastavený ve webovém prohlížeči"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP Server"
@ -1807,7 +1811,7 @@ msgstr "Server odmítl připojení"
msgid "Already up-to-date"
msgstr "Již aktualizováno"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1815,7 +1819,7 @@ msgstr ""
"XMPP je otevřený a standardizovaný komunikační protokol. Zde je možné "
"nastavit a spustit vlastní XMPP server, zvaný ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1829,7 +1833,7 @@ msgstr ""
"ejabberd přistupovat kterýkoli <a href=\"{users_url}\">uživatel s "
"přihlašovacím jménem {box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1839,12 +1843,12 @@ msgstr ""
"aplikaci <a href=\"{coturn_url}\">Coturn</a> nebo nakonfigurujte externí "
"server."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Chat server"
@ -2161,17 +2165,17 @@ msgstr "Firewall backend je nftables"
msgid "Direct passthrough rules exist"
msgstr "Existují pravidla přímého prostupu"
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) dostupný pro interní sítě"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) dostupný pro externí sítě"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} {details} je nedostupný pro externí sítě"
@ -3224,7 +3228,7 @@ msgstr "Certifikát pro doménu {domain} úspěšně smazán"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Nepodařilo se smazat certifikát pro doménu {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3241,7 +3245,7 @@ msgstr ""
"čísla. Díky federování mohou uživatelé na daném Matrix serveru komunikovat s "
"uživateli všech ostatních Matrix serverů."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3251,7 +3255,7 @@ msgstr ""
"Nainstalujte aplikaci <a href=\"{coturn_url}\">Coturn</a> nebo "
"nakonfigurujte externí server."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3817,15 +3821,15 @@ msgstr ""
msgid "Name Services"
msgstr "Jmenné služby"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Vše"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Všechny webové aplikace"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Zabezpečený shell"
@ -8273,34 +8277,34 @@ msgstr "Čeká na spuštění: {name}"
msgid "Finished: {name}"
msgstr "Dokončeno: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Balíček {expression} není k dispozici pro instalaci"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Balíček {package_name} je nejnovější verze ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "Instalace"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "stahování"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "změna média"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "soubor s nastaveními: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Časový limit čekání na správce balíčků"
@ -8534,6 +8538,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "chyba"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8751,11 +8761,11 @@ msgstr ""
"Všechna data a konfigurace aplikace budou trvale ztraceny. Aplikaci lze "
"nainstalovat znovu."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Nastavení se nezměnila"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "před odinstalací {app_id}"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -30,7 +30,7 @@ msgstr "Sidens kildekode"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -111,6 +111,10 @@ msgstr "Sprog denne web-brugergrænseflade skal vises i"
msgid "Use the language preference set in the browser"
msgstr "Benyt browserens sprogindstilling"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
#, fuzzy
#| msgid "Web Server"
@ -1845,7 +1849,7 @@ msgstr "Slet forbindelse"
msgid "Already up-to-date"
msgstr "Seneste opdatering"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1853,7 +1857,7 @@ msgstr ""
"XMPP er en åben og standardiseret kommunikationsprotokol. Her kan du "
"aktivere og konfigurere din XMPP-server, kaldet ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1867,19 +1871,19 @@ msgstr ""
"bruges af enhver <a href=\"{users_url}\"> bruger med adgang til {box_name}</"
"a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Chatserver"
@ -2193,17 +2197,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) er tilgængelig for interne netværk"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) er tilgængelig for eksterne netværk"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) er ikke tilgængelig for eksterne netværk"
@ -3288,7 +3292,7 @@ msgstr "Certifikatet for domænet {domain} blev trukket tilbage"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Fejl ved tilbagetrækning af certifikatet for domænet {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3298,14 +3302,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3860,15 +3864,15 @@ msgstr ""
msgid "Name Services"
msgstr "Navnetjenester"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell"
@ -8348,34 +8352,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr "Tjeneste ikke aktiv: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "Installerer"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "downloader"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "medie-ændring"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "konfigurationsfil: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8645,6 +8649,12 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "fejl"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8851,11 +8861,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Indstilling uændret"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-08-07 12:46+0000\n"
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
"Language-Team: German <https://hosted.weblate.org/projects/freedombox/"
@ -30,7 +30,7 @@ msgstr "Seitenquelle"
msgid "Static configuration {etc_path} is setup properly"
msgstr "Statische Konfiguration {etc_path} ist richtig eingerichtet"
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -110,6 +110,10 @@ msgstr "Sprache für die Darstellung dieser Weboberfläche"
msgid "Use the language preference set in the browser"
msgstr "Die im Browser festgelegte Sprache verwenden"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP Server"
@ -1846,7 +1850,7 @@ msgstr "Server verweigert Verbindung"
msgid "Already up-to-date"
msgstr "Bereits auf dem neuesten Stand"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1854,7 +1858,7 @@ msgstr ""
"XMPP ist ein offenes und standardisiertes Kommunikationsprotokoll. Hier "
"können Sie Ihren XMPP-Server, genannt ejabberd, starten und konfigurieren."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1868,7 +1872,7 @@ msgstr ""
"aktiviert, kann ejabberd von jedem <a href=\"{users_url}\"> Benutzer mit "
"einem {box_name} Login</a> aufgerufen werden."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1878,12 +1882,12 @@ msgstr ""
"die <a href=\"{coturn_url}\">Coturn</a>-App oder konfiguriere einen externen "
"Server."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Chatserver"
@ -2205,17 +2209,17 @@ msgstr "Firewall-Backend ist nftables"
msgid "Direct passthrough rules exist"
msgstr "Regeln für direktes Durchleiten existieren"
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port -Name {name}({details}) für interne Netzwerke verfügbar"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port -Name {name} ({details}) für externe Netzwerke verfügbar"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port -Name {name} ({details}) für externe Netzwerke nicht verfügbar"
@ -3288,7 +3292,7 @@ msgstr "Zertifikat erfolgreich widerrufen für Domain {domain}"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Fehler beim Widerrufen des Zertifikats für Domain {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3306,7 +3310,7 @@ msgstr ""
"einem bestimmten Matrix Server können dank Föderation zwischen den Servern "
"mit Nutzerkonten auf einem beliebigen anderen Server kommunizieren."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3316,7 +3320,7 @@ msgstr ""
"Installiere die <a href=\"{coturn_url}\">Coturn</a>-App oder konfiguriere "
"einen externen Server."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3897,15 +3901,15 @@ msgstr ""
msgid "Name Services"
msgstr "Namen-Dienste"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Alle"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Alle Webanwendungen"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell"
@ -8444,34 +8448,34 @@ msgstr "Warten auf den Start: {name}"
msgid "Finished: {name}"
msgstr "Fertig: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Paket {expression} ist nicht verfügbar"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Paket {package_name} ist die aktuellste Version ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "Installation läuft"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "herunterladen"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "Medienwechsel"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "Konfigurationsdatei: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Zeitüberschreitung beim Warten auf den Paket-Manager"
@ -8709,6 +8713,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "Fehler"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8926,11 +8936,11 @@ msgstr ""
"Alle App-Daten und -Konfigurationen gehen dauerhaft verloren. App kann "
"wieder frisch installiert werden."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Einstellung unverändert"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "vor der Deinstallation von {app_id}"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -26,7 +26,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr ""
@ -101,6 +101,10 @@ msgstr ""
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1636,13 +1640,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1651,19 +1655,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1940,17 +1944,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2865,7 +2869,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2875,14 +2879,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3354,15 +3358,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7225,34 +7229,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7476,6 +7480,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7663,11 +7671,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -28,7 +28,7 @@ msgstr "Πηγή της σελίδας"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "Freedombox"
@ -113,6 +113,10 @@ msgstr "Επιλέξτε γλώσσα που θα χρησιμοποιηθεί
msgid "Use the language preference set in the browser"
msgstr "Χρήση της προεπιλεγμένης γλώσσας του περιηγητή διαδικτύου"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
#, fuzzy
#| msgid "Chat Server"
@ -1897,7 +1901,7 @@ msgstr "Διαγραφή σύνδεσης"
msgid "Already up-to-date"
msgstr "Ενεργοποίηση αυτόματων ενημερώσεων"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1906,7 +1910,7 @@ msgstr ""
"μπορείτε να εκτελέσετε και να ρυθμίσετε τις παραμέτρους του διακομιστή XMPP, "
"που ονομάζεται ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1920,19 +1924,19 @@ msgstr ""
"ejabberd μπορεί να χρησιμοποιηθεί από κάθε χρήστη με <a "
"href=\"{users_url}\">πιστοποιητικά για το {box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Διακομιστής συνομιλίας"
@ -2246,17 +2250,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Θύρα {name} ({details}) διαθέσιμη για εσωτερικά δίκτυα"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Η θύρα {name} ({details}) είναι διαθέσιμη για εξωτερικά δίκτυα"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Η θύρα {name} ({details}) δεν είναι διαθέσιμη για εξωτερικά δίκτυα"
@ -3349,7 +3353,7 @@ msgstr "Το πιστοποιητικό διαγράφηκε επιτυχώς γ
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Αποτυχία διαγραφής πιστοποιητικού για το όνομα {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3367,14 +3371,14 @@ msgstr ""
"να συνομιλήσουν με τους χρήστες σε όλες τις άλλες διακομιστές Matrix μέσω "
"ομοσπονδίας."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3979,15 +3983,15 @@ msgstr ""
msgid "Name Services"
msgstr "Υπηρεσίες ονομάτων"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Όλα"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Όλες οι εφαρμογές ιστού"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell"
@ -8585,34 +8589,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "Εγκαθίσταται"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "Λήψη"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "Αλλαγή μέσου"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "αρχείο ρυθμίσεων: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8876,6 +8880,10 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -9108,11 +9116,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Οι ρυθμίσεις δεν άλλαξαν"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-08-31 19:50+0000\n"
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr "Página origen"
msgid "Static configuration {etc_path} is setup properly"
msgstr "La configuración fija {etc_path} está configurada correctamente"
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -109,6 +109,10 @@ msgstr "Idioma para mostrar esta interfaz web"
msgid "Use the language preference set in the browser"
msgstr "Configure la preferencia de idioma en el navegador"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Servidor HTTP Apache"
@ -1827,7 +1831,7 @@ msgstr "El Servidor rechazo la conexión"
msgid "Already up-to-date"
msgstr "Ya Estaba Actualizada"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1835,7 +1839,7 @@ msgstr ""
"XMPP es un protocolo de comunicación abierto y estándar. Puede ejecutar y "
"configurar su servidor XMPP (ejabberd) aquí."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1849,7 +1853,7 @@ msgstr ""
"disponible para cualquier <a href=\"{users_url}\">usuario con acceso a "
"{box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1859,12 +1863,12 @@ msgstr ""
"Instalar la app <a href=\"{coturn_url}\">Coturn</a> o configurar un servidor "
"externo."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Servidor de Chat"
@ -2182,17 +2186,17 @@ msgstr "El backend del cortafuegos es nftables"
msgid "Direct passthrough rules exist"
msgstr "Existen normas de transferencia directa"
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Puerto {name} ({details}) disponible para redes internas"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Puerto {name} ({details}) disponible para redes externas"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Puerto {name} ({details}) no disponible para redes externas"
@ -3254,7 +3258,7 @@ msgstr "El certificado para el dominio {domain} ha sido eliminado con éxito"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Falló la eliminación del certificado para el dominio {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3271,7 +3275,7 @@ msgstr ""
"funcionar. La federación de los servidores permite que las/os usuarias/os de "
"un servidor Matrix contacten con los de otro servidor."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3281,7 +3285,7 @@ msgstr ""
"Instalar la app <a href=\"{coturn_url}\">Coturn</a> o configurar un servidor "
"externo."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3854,15 +3858,15 @@ msgstr ""
msgid "Name Services"
msgstr "Servicios de nombres"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Todos"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Todas las apps web"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Intérprete de órdenes seguro"
@ -8330,34 +8334,34 @@ msgstr "Esperando a empezar: {name}"
msgid "Finished: {name}"
msgstr "Terminó: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "El paquete {expression} no está disponible para instalar"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "El paquete {package_name} es la última versión ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "instalando"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "descargando"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "cambio de medio"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "archivo de configuración: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Tiempo máximo esperando al administrador de paquetes"
@ -8593,6 +8597,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "error"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8808,11 +8818,11 @@ msgstr ""
"Todos los datos de la aplicación y la configuración se perderán "
"permanentemente. La aplicación se puede instalar de nuevo."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Configuración sin cambio"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "antes de desinstalar {app_id}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -28,7 +28,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
#, fuzzy
msgid "FreedomBox"
msgstr "FreedomBox"
@ -109,6 +109,10 @@ msgstr "زبان محیط این برنامهٔ مدیریتی"
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
#, fuzzy
#| msgid "Web Server"
@ -1849,13 +1853,13 @@ msgstr "پاک‌کردن اتصال"
msgid "Already up-to-date"
msgstr "آخرین به‌روزرسانی"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1864,19 +1868,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
#, fuzzy
#| msgid "Web Server"
msgid "Chat Server"
@ -2184,17 +2188,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3240,7 +3244,7 @@ msgstr "گواهی دامنهٔ {domain} با موفقیت باطل شد"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "باطل‌کردن گواهی دامنهٔ {domain} شکست خورد: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3250,14 +3254,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3781,15 +3785,15 @@ msgstr ""
msgid "Name Services"
msgstr "سرویس نام‌ها"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "پوستهٔ ایمن"
@ -7959,34 +7963,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8224,6 +8228,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8422,11 +8430,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Plinth 0.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2016-01-31 22:24+0530\n"
"Last-Translator: Sunil Mohan Adapa <sunil@medhas.org>\n"
"Language-Team: Plinth Developers <freedombox-discuss@lists.alioth.debian."
@ -27,7 +27,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FREEDOMBOX"
@ -112,6 +112,10 @@ msgstr "LANGUAGE FOR THIS WEB ADMINISTRATION INTERFACE"
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
#, fuzzy
#| msgid "Web Server"
@ -1935,7 +1939,7 @@ msgstr "DELETE CONNECTION"
msgid "Already up-to-date"
msgstr "LAST UPDATE"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1943,7 +1947,7 @@ msgstr ""
"XMPP IS AN OPEN AND STANDARDIZED COMMUNICATION PROTOCOL. HERE YOU CAN RUN "
"AND CONFIGURE YOUR XMPP SERVER, CALLED EJABBERD."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, fuzzy, python-brace-format
#| msgid ""
#| "To actually communicate, you can use the <a href='/jwchat'>web client</a> "
@ -1959,19 +1963,19 @@ msgstr ""
"ANY OTHER <a href='http://xmpp.org/xmpp-software/clients/' "
"target='_blank'>XMPP CLIENT</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
#, fuzzy
#| msgid "Web Server"
msgid "Chat Server"
@ -2288,19 +2292,19 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, fuzzy, python-brace-format
#| msgid "Service discovery server is not running"
msgid "Port {name} ({details}) available for internal networks"
msgstr "SERVICE DISCOVERY SERVER IS NOT RUNNING"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, fuzzy, python-brace-format
#| msgid "Service discovery server is not running"
msgid "Port {name} ({details}) available for external networks"
msgstr "SERVICE DISCOVERY SERVER IS NOT RUNNING"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3365,7 +3369,7 @@ msgstr "CERTIFICATE SUCCESSFULLY REVOKED FOR DOMAIN {domain}"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "FAILED TO REVOKE CERTIFICATE FOR DOMAIN {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3375,14 +3379,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
#, fuzzy
#| msgid "Chat Server (XMPP)"
msgid "Matrix Synapse"
@ -3931,15 +3935,15 @@ msgstr ""
msgid "Name Services"
msgstr "NAME SERVICES"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
#, fuzzy
#| msgid "Secure Shell (SSH)"
msgid "Secure Shell"
@ -8432,39 +8436,39 @@ msgstr ""
msgid "Finished: {name}"
msgstr "SERVICE DISABLED: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
#, fuzzy
#| msgid "Installation"
msgid "installing"
msgstr "INSTALLATION"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
#, fuzzy
#| msgid "Setting unchanged"
msgid "media change"
msgstr "SETTING UNCHANGED"
#: plinth/package.py:379
#: plinth/package.py:378
#, fuzzy, python-brace-format
#| msgid "Configuration"
msgid "configuration file: {file}"
msgstr "CONFIGURATION"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8738,6 +8742,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8950,11 +8958,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "SETTING UNCHANGED"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-04-07 23:10+0000\n"
"Last-Translator: Coucouf <coucouf@coucouf.fr>\n"
"Language-Team: French <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr "Code source de la page"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -109,6 +109,10 @@ msgstr "Langue de cette interface web"
msgid "Use the language preference set in the browser"
msgstr "Utiliser la langue du navigateur"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Serveur HTTP Apache"
@ -1861,7 +1865,7 @@ msgstr "Connexion refusée par le serveur"
msgid "Already up-to-date"
msgstr "Déjà à jour"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1869,7 +1873,7 @@ msgstr ""
"XMPP est un protocole de communication ouvert et standardisé. Vous pouvez "
"lancer et configurer ici votre serveur XMPP, appelé ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1883,7 +1887,7 @@ msgstr ""
"est accessible par tout <a href=\"{users_url}\">utilisatrice ou utilisateur "
"disposant dun compte sur la {box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1893,12 +1897,12 @@ msgstr ""
"Installez pour cela lapplication <a href=\"{coturn_url}\">Coturn</a> ou "
"bien configurez un serveur externe."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Serveur de discussion"
@ -2221,17 +2225,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) disponible pour les réseaux internes"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) disponible pour les réseaux externes"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) non disponible pour les réseaux externes"
@ -3307,7 +3311,7 @@ msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
"La suppression du certificat pour le domaine {domain} a échoué : {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3325,7 +3329,7 @@ msgstr ""
"un serveur Matrix donné peuvent converser avec des utilisateurs sur tous les "
"autres serveurs Matrix grâce la fédération."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3335,7 +3339,7 @@ msgstr ""
"Installez pour cela lapplication <a href=\"{coturn_url}\">Coturn</a> ou "
"bien configurez un serveur externe."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3924,15 +3928,15 @@ msgstr ""
msgid "Name Services"
msgstr "Services de nommage"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Tous"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Toutes les applications web"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell"
@ -8508,34 +8512,34 @@ msgstr "Attente du démarrage de : {name}"
msgid "Finished: {name}"
msgstr "Terminé : {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Le paquet {expression} nest pas disponible à linstallation"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Le paquet {package_name} est à la dernière version ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "installation en cours"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "téléchargement en cours"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "changement de support"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "fichier de configuration : {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Aucune réponse du gestionnaire de paquets"
@ -8772,6 +8776,12 @@ msgstr "Homebrew :"
msgid "RPM:"
msgstr "RPM :"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "erreur"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8994,11 +9004,11 @@ msgstr ""
"Lensemble données de lappli et sa configuration seront définitivement "
"perdus. Un appli peut toujours être réinstallée de zéro."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Paramètre inchangé"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "avant la désinstallation de {app_id}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -28,7 +28,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -105,6 +105,10 @@ msgstr "Idioma para amosar esta interface web"
msgid "Use the language preference set in the browser"
msgstr "Usar a preferencia de idioma definida no navegador"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
#, fuzzy
#| msgid "Web Server"
@ -1642,13 +1646,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1657,19 +1661,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1948,17 +1952,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2875,7 +2879,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2885,14 +2889,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3368,15 +3372,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7259,34 +7263,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7522,6 +7526,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7713,11 +7721,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -28,7 +28,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "ફ્રિડમબોક્ષ"
@ -108,6 +108,10 @@ msgstr "આ વેબ પ્રબંધક ઈન્ટરફેસ માટ
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
#, fuzzy
#| msgid "Chat Server"
@ -1786,7 +1790,7 @@ msgstr ""
msgid "Already up-to-date"
msgstr "છેલ્લો સુધારો"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1794,7 +1798,7 @@ msgstr ""
"XMPP એક ખુલ્લું અને પ્રમાણિત સંચાર પ્રોટોકોલ છે. અહીં તમે તમારા XMPP સર્વરને ચલાવો અને "
"ગોઠવી શકો છો, જેને ઈઝબેબર્ડે કહેવાય છે."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, fuzzy, python-brace-format
#| msgid ""
#| "To actually communicate, you can use the <a href=\"/plinth/apps/"
@ -1814,19 +1818,19 @@ msgstr ""
"શકાય છે કોઇપણ દ્વારા <a href=\"/plinth/sys/users\">વપરાશકર્તાઓ સાથે{box_name}"
"પ્રવેશ</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ઈઝબેબર્ડ"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "ચેટ સર્વર"
@ -2133,17 +2137,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3084,7 +3088,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3094,14 +3098,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3609,15 +3613,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7597,34 +7601,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7870,6 +7874,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8070,11 +8078,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "સેટિંગ યથાવત"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2021-01-18 12:32+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Hindi <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "फ्रीडमबोएक्स"
@ -109,6 +109,10 @@ msgstr "इस वेब इंटरफेस में इसतेमाल
msgid "Use the language preference set in the browser"
msgstr "जो भाषा ब्राउज़र में हैं, वो भाषा उपयोग करें"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
#, fuzzy
#| msgid "Chat Server"
@ -1886,7 +1890,7 @@ msgstr "कनेक्शन हटाएँ"
msgid "Already up-to-date"
msgstr "अंतिम अपडेट"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1894,7 +1898,7 @@ msgstr ""
"एक्सएमरपिपि एक खुला और मानकीकृत संचार प्रोटोकॉल है. यहां आप आपना एक्सएमरपिपि सर्वर "
"कॉंफ़िगर आैर चल सकते हैं, सर्वर का नाम एजाबेरड है."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, fuzzy, python-brace-format
#| msgid ""
#| "To actually communicate, you can use the <a href=\"{jsxc_url}\">web "
@ -1912,19 +1916,19 @@ msgstr ""
"ग्राहक</a>. सक्षम होने पर एजाबेरड कोई <a href=\"{users_url}\"> यूसर एक {box_name} "
"लोगिन</a> से उपयोग कर सकते हैं."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "एजाबेरड"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "चाट सर्वर"
@ -2236,19 +2240,19 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, fuzzy, python-brace-format
#| msgid "<em>%(service_name)s</em> is available only on internal networks."
msgid "Port {name} ({details}) available for internal networks"
msgstr "<em>%(service_name)s</em> सिर्फ आंतरिक नेटवर्क्स पर उपलब्ध है."
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, fuzzy, python-brace-format
#| msgid "<em>%(service_name)s</em> is available only on internal networks."
msgid "Port {name} ({details}) available for external networks"
msgstr "<em>%(service_name)s</em> सिर्फ आंतरिक नेटवर्क्स पर उपलब्ध है."
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3293,7 +3297,7 @@ msgstr "डोमेन के लिए प्रमाणपत्र का
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "डोमेन के लिए प्रमाणपत्र नहीं हटाया गया {domain}:{error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3308,14 +3312,14 @@ msgstr ""
"मल्टीपल डिवाइस सिंक्रनाइज़इज़ाशिन और काम करने के लिए फोन नंबर की ज़रुरत नहीं है. मैट्रिक्स "
"सर्वर पर यूसरसॅ सारे मैट्रिक्स सर्वर के लेग से बात कर सकते है फ़ेडरेशिन उपयोग कर."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "मैट्रिक्स सिनापसॅ"
@ -3869,15 +3873,15 @@ msgstr ""
msgid "Name Services"
msgstr "नाम सरविस"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "सुरक्षित शेल"
@ -8378,34 +8382,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr "सर्विस सक्षम किया गया:{name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "इंस्टॉलिंग"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "डाउनलोडिंग"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "मीडिया बदलाव"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "कॉंफ़िगरेशन फ़ाइल: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8666,6 +8670,10 @@ msgstr "होमब्रु:"
msgid "RPM:"
msgstr "आरपीएम:"
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8881,11 +8889,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "सेटिंग स्थिर है"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2022-10-24 18:39+0000\n"
"Last-Translator: Sunil Mohan Adapa <sunil@medhas.org>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr "Oldal forrása"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -107,6 +107,10 @@ msgstr "A webes felület megjelenítéséhez használt nyelv"
msgid "Use the language preference set in the browser"
msgstr "A böngésző nyelvének használata"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP szerver"
@ -1831,7 +1835,7 @@ msgstr "A szerver visszautasította a kapcsolatot"
msgid "Already up-to-date"
msgstr "Már frissítve"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1839,7 +1843,7 @@ msgstr ""
"Az XMPP egy nyílt és szabványos kommunikációs protokoll. Itt tudod futtatni "
"és konfigurálni az XMPP-szerveredet, amit ejabberd-nek neveznek."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1853,7 +1857,7 @@ msgstr ""
"lesz bármely <a href=\"{users_url}\"> felhasználó számára {box_name} "
"felhasználónéven</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1863,12 +1867,12 @@ msgstr ""
"videóhívásokhoz. Telepítsd a <a href=\"{coturn_url}\">Coturn</a> alkalmazást "
"vagy állíts be egy külső szervert."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Chat szerver"
@ -2192,17 +2196,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "{name} port ({details}) elérhető a belső hálózaton"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "{name} port ({details}) elérhető a külső hálózaton"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "{name} port ({details}) nem érhető el külső hálózaton"
@ -3270,7 +3274,7 @@ msgstr "{domain} domain tanúsítványa sikeresen törölve"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "{domain} domain tanúsítványát nem sikerült kitörölni: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3287,7 +3291,7 @@ msgstr ""
"adott Matrix-szerveren lévő felhasználók föderáción keresztül "
"beszélgethetnek az összes többi Matrix-szerver felhasználóival."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3297,7 +3301,7 @@ msgstr ""
"videóhívásokhoz. Telepítsd a <a href=\"{coturn_url}\">Coturn</a> "
"alkalmazást, vagy konfigurálj egy külső szervert."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3879,15 +3883,15 @@ msgstr ""
msgid "Name Services"
msgstr "Névszolgáltatások"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Összes"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Összes webalkalmazás"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell (Biztonságos parancsértelmező)"
@ -8411,34 +8415,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr "Szolgáltatás letiltva: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "A(z) {package_name} a legfrissebb verzió ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "telepítés"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "letöltés"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "adathordozó csere"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "konfigurációs fájl: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8691,6 +8695,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "hiba"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8915,11 +8925,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "A beállítás változatlan"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Indonesian (FreedomBox)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -23,7 +23,7 @@ msgstr "Sumber halaman"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -104,6 +104,10 @@ msgstr "Bahasa yang digunakan untuk menyajikan antarmuka web ini"
msgid "Use the language preference set in the browser"
msgstr "Gunakan preferensi bahasa yang ditetapkan di browser"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP Server"
@ -1842,7 +1846,7 @@ msgstr "Hapus koneksi"
msgid "Already up-to-date"
msgstr "Automatic"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1850,7 +1854,7 @@ msgstr ""
"XMPP adalah protokol komunikasi terbuka dan standar. Di sini Anda dapat "
"menjalankan dan mengkonfigurasi server XMPP Anda, yang disebut Ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1864,7 +1868,7 @@ msgstr ""
"diakses oleh <a href=\"{users_url}\"> pengguna dengan sebuah {box_name} "
"login</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1874,12 +1878,12 @@ msgstr ""
"aplikasi <a href=\"{coturn_url}\">Coturn</a> atau konfigurasikan server "
"eksternal."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "Ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Server obrolan"
@ -2190,17 +2194,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) tersedia untuk jaringan internal"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) tersedia untuk jaringan eksternal"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) tidak tersedia untuk jaringan eksternal"
@ -3253,7 +3257,7 @@ msgstr "Sertifikat berhasil dihapus untuk domain {domain}"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Gagal menghapus sertifikat untuk domain {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3270,7 +3274,7 @@ msgstr ""
"Pengguna pada server matriks tertentu dapat berkomunikasi dengan pengguna di "
"semua server matriks lainnya melalui Federation."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3280,7 +3284,7 @@ msgstr ""
"Pasang aplikasi <a href=\"{coturn_url}\">Coturn</a> atau konfigurasikan "
"server eksternal."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Sinaps Matrix"
@ -3780,15 +3784,15 @@ msgstr ""
msgid "Name Services"
msgstr "Nama Layanan"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Semua"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Semua aplikasi web"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell"
@ -7779,34 +7783,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "memasang"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "mengunduh"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8047,6 +8051,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "kesalahan"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8249,11 +8259,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr "Pagina di origine"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -107,6 +107,10 @@ msgstr "Lingua da usare per la presentazione di questa interfaccia web"
msgid "Use the language preference set in the browser"
msgstr "Usa la lingua impostata nel browser"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Server Apache HTTP"
@ -1817,7 +1821,7 @@ msgstr "Cancella connessione"
msgid "Already up-to-date"
msgstr "Abilita l'aggiornamento automatico"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1825,7 +1829,7 @@ msgstr ""
"XMPP è un protocollo di comunicazione aperto e standardizzato. Qui puoi "
"eseguire e configurare il tuo server XMPP, chiamato ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1839,19 +1843,19 @@ msgstr ""
"accedere a ejabberd <a href=\"{users_url}\"> da ogni utente con un login "
"{box_name} </a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Server Chat"
@ -2152,17 +2156,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Porta {name} ({details}) disponibile per le reti interne"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Porta {name} ({details}) disponibile per reti esterne"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Porta {name} ({details}) non disponibile per reti esterne"
@ -3230,7 +3234,7 @@ msgstr "Certificato cancellato correttamente per il dominio {domain}"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Cancellazione certificato fallita per il dominio {domain}:{error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3247,14 +3251,14 @@ msgstr ""
"Gli utenti di un certo server Matrix possono comunicare con gli altri utenti "
"attestati su tutti gli altri server Matrix tramite federazione."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3818,15 +3822,15 @@ msgstr ""
msgid "Name Services"
msgstr "Name Services"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell"
@ -7858,34 +7862,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr "Servizio disabilitato: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8130,6 +8134,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8326,11 +8334,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Impostazioni invariate"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -28,7 +28,7 @@ msgstr "ページのソース"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -103,6 +103,10 @@ msgstr ""
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1638,13 +1642,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1653,19 +1657,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1942,17 +1946,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2867,7 +2871,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2877,14 +2881,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3356,15 +3360,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7227,34 +7231,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7478,6 +7482,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7665,11 +7673,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2020-07-16 16:41+0000\n"
"Last-Translator: Yogesh <yogesh@karnatakaeducation.org.in>\n"
"Language-Team: Kannada <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "ಫ್ರೀಡಂಬಾಕ್ಸ್"
@ -103,6 +103,10 @@ msgstr ""
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1638,13 +1642,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1653,19 +1657,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1942,17 +1946,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2867,7 +2871,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2877,14 +2881,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3356,15 +3360,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7229,34 +7233,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7480,6 +7484,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7667,11 +7675,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -30,7 +30,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -105,6 +105,10 @@ msgstr ""
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1640,13 +1644,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1655,19 +1659,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1944,17 +1948,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2869,7 +2873,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2879,14 +2883,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3358,15 +3362,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7231,34 +7235,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7482,6 +7486,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7669,11 +7677,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -29,7 +29,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -104,6 +104,10 @@ msgstr ""
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1639,13 +1643,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1654,19 +1658,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1943,17 +1947,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2868,7 +2872,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2878,14 +2882,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3357,15 +3361,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7230,34 +7234,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7481,6 +7485,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7668,11 +7676,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-08-16 06:52+0000\n"
"Last-Translator: Petter Reinholdtsen <pere-weblate@hungry.com>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/"
@ -36,7 +36,7 @@ msgstr "Sidekilde"
msgid "Static configuration {etc_path} is setup properly"
msgstr "Statisk oppsett {etc_path} er korrekt satt opp"
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -114,6 +114,10 @@ msgstr "Språk som skal brukes i dette nettgrensesnittet"
msgid "Use the language preference set in the browser"
msgstr "Bruk språkforvalg satt i nettleseren"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP-tjener"
@ -1862,7 +1866,7 @@ msgstr "Slett tilkobling"
msgid "Already up-to-date"
msgstr "Auto-oppdatering"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1870,7 +1874,7 @@ msgstr ""
"XMPP er en åpen og standardisert kommunikasjonsprotokoll. Her kan du kjøre "
"og konfigurere din XMPP-tjener, kalt ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1884,19 +1888,19 @@ msgstr ""
"tilgjengelig for enhver <a href=\"{users_url}\">bruker med innlogging på "
"{box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Nettprat-tjener"
@ -2215,17 +2219,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) tilgjengelig på interne nettverk"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) tilgjengelig på eksterne nettverk"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) er utilgjengelig for eksterne nettverk"
@ -3299,7 +3303,7 @@ msgstr "Vellykket sletting av sertifikatet for domenet {domain}"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Klarte ikke å slette sertifikatet for domenet {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3315,14 +3319,14 @@ msgstr ""
"enheter, og krever ikke telefonnumre for å virke. Brukere på en gitt Matrix-"
"tjener kan snakke med brukere på alle andre samvirkende Matrix-tjenere."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3913,15 +3917,15 @@ msgstr ""
msgid "Name Services"
msgstr "Navnetjenester"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Alle"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Alle nettprogrammer"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell (SSH)"
@ -8404,34 +8408,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr "Tjeneste deaktivert: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Pakke {expression} er ikke tilgjengelig for installasjon"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Pakke {package_name} er siste versjon ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "installering"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "laster ned"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "mediaendring"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "oppsettsfil: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8681,6 +8685,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "feil"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8903,11 +8913,11 @@ msgstr ""
"All programdata og oppsett blir permanent borte. Programmet kan installeres "
"på nytt igjen."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Oppsett uendret"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "før avinstallering av {app_id}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-09-05 19:53+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/freedombox/"
@ -30,7 +30,7 @@ msgstr "Paginabron"
msgid "Static configuration {etc_path} is setup properly"
msgstr "Statische configuratie {etc_path} is correct ingesteld"
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -110,6 +110,10 @@ msgstr "Te gebruiken taal voor de weergave van deze webinterface"
msgid "Use the language preference set in the browser"
msgstr "Gebruik de taalvoorkeuren die zijn ingesteld in de browser"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP Server"
@ -1827,7 +1831,7 @@ msgstr "Server weigert verbinding"
msgid "Already up-to-date"
msgstr "Al bijgewerkt"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1835,7 +1839,7 @@ msgstr ""
"XMPP is een open en gestandaardiseerd communicatie protocol. Hiermee kan een "
"XMPP server met de naam ejabberd worden ingesteld."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1849,7 +1853,7 @@ msgstr ""
"kan elke <a href=\"{users_url}\">gebruiker van {box_name}</a> daartoe "
"toegang krijgen."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1859,12 +1863,12 @@ msgstr ""
"Installeer de <a href=\"{coturn_url}\">Coturn</a> toepassing of configureer "
"een externe server."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Chatserver"
@ -2181,17 +2185,17 @@ msgstr "Firewall backend is nftables"
msgid "Direct passthrough rules exist"
msgstr "Er zijn directe doorgeefregels ingesteld"
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Poort {name} ({details}) is beschikbaar binnen interne netwerken"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Poort {name} ({details})is beschikbaar voor externe netwerken"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Poort {name} ({details}) is niet beschikbaar voor externe netwerken"
@ -3263,7 +3267,7 @@ msgstr "Certificaat met succes verwijderd voor domein {domain}"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Verwijderen certificaat voor domein {domain} mislukt: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3280,7 +3284,7 @@ msgstr ""
"Matrix server kunnen gesprekken aangaan met gebruikers op alle andere Matrix "
"servers door federatie (gedecentraliseerd netwerk)."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3290,7 +3294,7 @@ msgstr ""
"videogesprekken. Installeer de <a href=\"{coturn_url}\">Coturn</a> "
"toepassing of configureer een externe server."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3866,15 +3870,15 @@ msgstr ""
msgid "Name Services"
msgstr "Domeindiensten"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Alle"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Alle webtoepassingen"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell"
@ -8362,34 +8366,34 @@ msgstr "Wachten om te starten: {name}"
msgid "Finished: {name}"
msgstr "Klaar: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Pakket {expression} is niet beschikbaar voor installatie"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Pakket {package_name} is de nieuwste versie ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "installeren"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "downloaden"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "media wijzigen"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "configuratiebestand: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Time-out wachtend op pakketbeheerder"
@ -8625,6 +8629,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "fout"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8841,11 +8851,11 @@ msgstr ""
"Alle toepassings-gegevens en configuratie gaan permanent verloren. de "
"toepassing kan opnieuw vers worden geïnstalleerd."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Instelling onveranderd"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "voor het verwijderen van {app_id}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2022-09-14 17:19+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/freedombox/"
@ -29,7 +29,7 @@ msgstr "Źródło strony"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -108,6 +108,10 @@ msgstr "Język używany do reprezentowania danego interfejsu www"
msgid "Use the language preference set in the browser"
msgstr "Użyj języka ustawionego w przeglądarce"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Serwer Apache HTTP"
@ -1829,7 +1833,7 @@ msgstr ""
msgid "Already up-to-date"
msgstr "Ostatnie uaktualnienie"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1837,7 +1841,7 @@ msgstr ""
"XMPP jest otwartym i ustandaryzowanym protokołem komunikacyjnym. Tu możesz "
"uruchomić i skonfigurować własny serwer XMPP zwany ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1850,19 +1854,19 @@ msgstr ""
"clients' target='_blank'>klienta XMPP</a>. Gdy włączony, ejabberd jest "
"dostępny dla każdego <a href=\"{users_url}\">użytkownika {box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Serwer czatu"
@ -2172,17 +2176,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) jest dostępny dla sieci wewnętrznych"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) jest dostępny dla sieci zewnętrznych"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3170,7 +3174,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3180,14 +3184,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3707,15 +3711,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7799,34 +7803,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "plik konfiguracyjny: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8090,6 +8094,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "błąd"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8308,11 +8318,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Ustawienie bez zmian"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-05-22 15:50+0000\n"
"Last-Translator: Frederico Gomes <fefekrzr@gmail.com>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr "Fonte da página"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "Freedombox"
@ -109,6 +109,10 @@ msgstr "Idioma a ser usado para apresentar a interface de administração web"
msgid "Use the language preference set in the browser"
msgstr "Use a preferência de idioma definida no navegador"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Servidor HTTP Apache"
@ -1773,13 +1777,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr "Aplicações"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1788,19 +1792,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -2097,17 +2101,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Porta {name} ({details}) disponível para redes internas"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Porta {name} ({details}) disponível para redes externas"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3067,7 +3071,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3077,14 +3081,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3597,15 +3601,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7596,36 +7600,36 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
#, fuzzy
#| msgid "Setting unchanged"
msgid "media change"
msgstr "Definição inalterada"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "ficheiro de configuração: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7865,6 +7869,10 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8071,11 +8079,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Definição inalterada"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2022-10-10 18:05+0000\n"
"Last-Translator: Nikita Epifanov <nikgreens@protonmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/freedombox/"
@ -29,7 +29,7 @@ msgstr "Исходный код страницы"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -108,6 +108,10 @@ msgstr "Язык, используемый для представления д
msgid "Use the language preference set in the browser"
msgstr "Использовать языковые настройки браузера"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP сервер"
@ -1823,7 +1827,7 @@ msgstr "Сервер отказал в соединении"
msgid "Already up-to-date"
msgstr "Уже обновлено"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1831,7 +1835,7 @@ msgstr ""
"XMPP является открытым и стандартизированным коммуникационным протоколом. "
"Здесь вы можете запустить и настроить сервер XMPP, называемый ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1844,7 +1848,7 @@ msgstr ""
"target=\"_blank\"> XMPP клиент</a>. Когда включен, ejabberd доступен всем <a "
"href=\"{users_url}\"> пользователям {box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1853,12 +1857,12 @@ msgstr ""
"ejabberd необходим сервер STUN/TURN для аудио/видео звонков. Установите "
"приложение <a href=\"{coturn_url}\">Coturn</a> или настройте внешний сервер."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "еjabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Чат-сервер"
@ -2178,17 +2182,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Порт {name} ({details}) доступен для внутренних сетей"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Порт {name} ({details}) доступен для внешних сетей"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Порт {name} ({details}) недоступен для внешних сетей"
@ -3241,7 +3245,7 @@ msgstr "Сертификат успешно удален для домена {do
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Не удалось удалить сертификат для домена {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3258,7 +3262,7 @@ msgstr ""
"одном сервере Matrix могут общаться с пользователями на всех остальных "
"серверах."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3268,7 +3272,7 @@ msgstr ""
"Установите приложение <a href=\"{coturn_url}\">Coturn</a> или настройте "
"внешний сервер."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3850,15 +3854,15 @@ msgstr ""
msgid "Name Services"
msgstr "Службы имён"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Все"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Все веб-приложения"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Sеcure Shell"
@ -8357,34 +8361,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr "Служба выключена: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Пакет {expression} недоступен для установки"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Пакет {package_name} последней версией ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "Установка"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "Загрузка"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "изменение медиа"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "Файл настроек: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8638,6 +8642,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "ошибка"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8860,11 +8870,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Настройки без изменений"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -28,7 +28,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "ෆ්‍රීඩම්බොක්ස්"
@ -103,6 +103,10 @@ msgstr ""
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1638,13 +1642,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1653,19 +1657,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1942,17 +1946,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2867,7 +2871,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2877,14 +2881,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3356,15 +3360,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7227,34 +7231,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7478,6 +7482,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7665,11 +7673,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -29,7 +29,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -108,6 +108,10 @@ msgstr "Jezik, ki ga želite uporabljati za ta spletni vmesnik"
msgid "Use the language preference set in the browser"
msgstr "Uporabi jezikovne nastavitve brskalnika"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
#, fuzzy
#| msgid "Domain Name Server"
@ -1795,13 +1799,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1810,19 +1814,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -2115,17 +2119,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3066,7 +3070,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3076,14 +3080,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3567,15 +3571,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7543,34 +7547,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7808,6 +7812,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8002,11 +8010,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-02-25 11:36+0000\n"
"Last-Translator: Besnik Bleta <besnik@programeshqip.org>\n"
"Language-Team: Albanian <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr "Burim faqeje"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -107,6 +107,10 @@ msgstr "Gjuhë për tu përdorur për të paraqitur këtë ndërfaqe web"
msgid "Use the language preference set in the browser"
msgstr "Përdor parapëlqim gjuhe të caktuar te shfletuesi"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Shërbyes HTTP Apache"
@ -1827,7 +1831,7 @@ msgstr "Shërbyesi hodhi poshtë lidhjen"
msgid "Already up-to-date"
msgstr "I përditësuar tashmë"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1835,7 +1839,7 @@ msgstr ""
"XMPP është një protokoll i hapët dhe i standardizuar komunikimesh. Këtu mund "
"të vini në punë dhe formësoni shërbyesin tuaj XMPP, të quajtur ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1849,7 +1853,7 @@ msgstr ""
"aktivizohet, ejabberd mund të përdoret nga cilido përdorues <a "
"href=\"{users_url}\"> me hyrje {box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1859,12 +1863,12 @@ msgstr ""
"aplikacionin <a href=\"{coturn_url}\">Coturn</a>, ose formësoni një shërbyes "
"të jashtëm."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Shërbyes Fjalosjesh"
@ -2186,17 +2190,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Portë {name} ({details}) e përdorshme për rrjete të brendshëm"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Portë {name} ({details}) e përdorshme për rrjete të jashtëm"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Portë {name} ({details}) jo e përdorshme për rrjete të brendshëm"
@ -3257,7 +3261,7 @@ msgstr "Dëshmi e fshirë me sukses për përkatësinë {domain}"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Su arrit të fshihet dëshmi për përkatësinë {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3274,7 +3278,7 @@ msgstr ""
"funksionojë. Përmes federimi, përdoruesit në një shërbyes të dhënë Matrix "
"mund të bisedojnë me përdorues në krejt shërbyesit e tjerë Matrix."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3284,7 +3288,7 @@ msgstr ""
"aplikacionin <a href=\"{coturn_url}\">Coturn</a>, ose formësoni një shërbyes "
"të jashtëm."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3872,15 +3876,15 @@ msgstr ""
msgid "Name Services"
msgstr "Shërbime Emrash"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Krejt"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Krejt aplikacionet web"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Shell i Sigurt"
@ -8385,35 +8389,35 @@ msgstr "Po pritet të fillohet: {name}"
msgid "Finished: {name}"
msgstr "Përfundoi: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Paketa {expression} sështë e gatshme për instalim"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
"Paketa {package_name} gjendet nën versionin më të ri ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "po instalohet"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "po shkarkohet"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "ndryshim media"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "kartelë formësimi: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Mbaroi koha teksa pritej për përgjegjës paketash"
@ -8648,6 +8652,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "gabim"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8864,11 +8874,11 @@ msgstr ""
"Krejt të dhënat dhe formësimi i aplikacionit do të humbin përgjithnjë. "
"Aplikacioni mund të instalohet sërish nga e para."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Rregullim i pandryshuar"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "para çinstalimit të {app_id}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -29,7 +29,7 @@ msgstr "Izvorna stranica"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "KutijaSlobode"
@ -107,6 +107,10 @@ msgstr "Jezik za web interfejs"
msgid "Use the language preference set in the browser"
msgstr "Koristi jezik podešen u pretraživaču"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1725,13 +1729,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1740,19 +1744,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -2035,17 +2039,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2960,7 +2964,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2970,14 +2974,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3459,15 +3463,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7366,34 +7370,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7629,6 +7633,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7822,11 +7830,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-09-08 18:24+0000\n"
"Last-Translator: bittin1ddc447d824349b2 <bittin@reimu.nl>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/freedombox/"
@ -28,7 +28,7 @@ msgstr "Sidkälla"
msgid "Static configuration {etc_path} is setup properly"
msgstr "Statisk konfiguration {etc_path} är inställd korrekt"
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -107,6 +107,10 @@ msgstr "Språk att använda för att presentera detta webbgränssnitt"
msgid "Use the language preference set in the browser"
msgstr "Använd språkinställningen i webbläsaren"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP-server"
@ -1815,7 +1819,7 @@ msgstr "Servern vägrade anslutning"
msgid "Already up-to-date"
msgstr "Redan uppdaterad"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1823,7 +1827,7 @@ msgstr ""
"XMPP är en öppen och standardiserad kommunikationsprotokoll. Här kan du köra "
"din XMPP-server (kallad ejabberd)."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1837,7 +1841,7 @@ msgstr ""
"kan ejabberd nås av alla <a href=\"{users_url}\"> användare med en "
"{box_name} inloggning</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1846,12 +1850,12 @@ msgstr ""
"ejabberd behöver en STUN/TURN-server för ljud-/videosamtal. Installera appen "
"<a href=\"{coturn_url}\">Coturn</a> eller konfigurera en extern server."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabbert"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Chat-Server"
@ -2168,17 +2172,17 @@ msgstr "Firewall backend är Nftables"
msgid "Direct passthrough rules exist"
msgstr "Direkt genomgående regler finns"
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) tillgängligt för interna nätverk"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) tillgängligt för externa nätverk"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) är inte tillgängligt för externa nätverk"
@ -2549,9 +2553,9 @@ msgstr ""
"%(box_name)s är fri programvara, licenserad under GNU Affero General Public "
"License. Källkoden är tillgänglig online på <a href=\"https://salsa.debian."
"org/freedombox-team/freedombox\"> %(box_name)s arkiv</a>. Dessutom kan "
"källkoden för alla Debianpaket erhållas från webbplatsen <a href=\"https"
"://sources.debian.org/\">Debian Källkod</a> eller genom att köra \"apt "
"source <i>paketnamn\" </i>\" i en terminal (med Cockpit eller SSH)."
"källkoden för alla Debianpaket erhållas från webbplatsen <a href=\"https://"
"sources.debian.org/\">Debian Källkod</a> eller genom att köra \"apt source "
"<i>paketnamn\" </i>\" i en terminal (med Cockpit eller SSH)."
#: plinth/modules/help/templates/help_about.html:82
#, python-format
@ -3236,7 +3240,7 @@ msgstr "Certifikatet framgångsrikt återkallat för domänen {domain}"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Det gick inte att ta bort certifikatet för domänen {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3253,7 +3257,7 @@ msgstr ""
"fungera. Användare på en given Matrix-server kan samtala med användare på "
"alla andra Matrix-servrar via federation."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3262,7 +3266,7 @@ msgstr ""
"Matrix Synapse behöver en STUN/TURN-server för ljud-/videosamtal. Installera "
"<a href=\"{coturn_url}\">Coturn</a>-appen eller konfigurera en extern server."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3830,15 +3834,15 @@ msgstr ""
msgid "Name Services"
msgstr "Namntjänster"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Alla"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Alla webbappar"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Secure Shell"
@ -7179,8 +7183,8 @@ msgid ""
msgstr ""
"Utöver webbgränssnittet kan mobila och stationära appar också användas för "
"att fjärrstyra överföring på {box_name}. För att konfigurera "
"fjärrkontrollappar, använd URL:en <a href=\"/transmission-remote/rpc\""
">/transmission-remote/rpc</a>."
"fjärrkontrollappar, använd URL:en <a href=\"/transmission-remote/rpc\">/"
"transmission-remote/rpc</a>."
#: plinth/modules/transmission/__init__.py:44
#, python-brace-format
@ -8301,34 +8305,34 @@ msgstr "Väntar på att starta: {name}"
msgid "Finished: {name}"
msgstr "Avslutad: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Paket {expression} är inte tillgänglig för installation"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Paketet {package_name} är den senaste versionen ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "Installera"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "ladda ner"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "Mediabyte"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "konfigurationsfil: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Timeout väntar på pakethanteraren"
@ -8563,6 +8567,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "Rpm:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "fel"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8781,11 +8791,11 @@ msgstr ""
"All appdata och konfiguration kommer att gå förlorad permanent. Appen kan "
"installeras på nytt igen."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Instänllningar oförändrade"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "innan du avinstallerar {app_id}"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -27,7 +27,7 @@ msgstr ""
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr ""
@ -102,6 +102,10 @@ msgstr ""
msgid "Use the language preference set in the browser"
msgstr ""
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr ""
@ -1637,13 +1641,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1652,19 +1656,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -1941,17 +1945,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2866,7 +2870,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2876,14 +2880,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3355,15 +3359,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7226,34 +7230,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7477,6 +7481,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7664,11 +7672,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2022-03-02 12:27+0000\n"
"Last-Translator: James Valleroy <jvalleroy@mailbox.org>\n"
"Language-Team: Telugu <https://hosted.weblate.org/projects/freedombox/"
@ -30,7 +30,7 @@ msgstr "పుట ఆధారం"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "ఫ్రీడంబాక్స్"
@ -109,6 +109,10 @@ msgstr "ఈ జాల అంతరవర్తి కోసం వాడాల
msgid "Use the language preference set in the browser"
msgstr "బ్రౌజర్లో ఉన్న భాషాప్రాధాన్యతనే ఉపయోగించు"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "అపాచీ HTTP సేవిక"
@ -1772,7 +1776,7 @@ msgstr "సర్వర్ కనెక్షన్ నిరాకరించ
msgid "Already up-to-date"
msgstr "ఇప్పటికే తాజాగా ఉంది"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1780,7 +1784,7 @@ msgstr ""
"XMPP ఓపెన్ మరియు ప్రామాణికమైన కమ్యూనికేషన్ ప్రోటోకాల్. ఇక్కడ మీరు మీ XMPP సర్వర్ ని రూపకరణ మరియు "
"అమలు చేయగలరు ejabberd అని ఆకృతీకరించవచ్చు."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1793,7 +1797,7 @@ msgstr ""
"XMPP క్లయింట్</a>. ప్రారంభించబడినప్పుడు, ejabberdని ఏ <a href=\"{users_url}\"> "
"వినియోగదారు అయినా {box_name} లాగిన్‌తో</a> యాక్సెస్ చేయవచ్చు."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, fuzzy, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1802,12 +1806,12 @@ msgstr ""
"ejabberd కి శ్రావణ /దృశ్యం కాల్ల కోసం stun /turn సేవిక అవసరం. కార్యక్షేత్రం ను నెలకొల్పడం "
"చేయండి లేదా బాహ్య సేవిక ను రూపకారణం చేయండి {coturn_url}"
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ఈజాబ్బర్డి"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "కబుర్ల సేవిక"
@ -2107,17 +2111,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "అంతర్గత నెట్‌వర్క్‌ల కోసం పోర్ట్ {name} ({details}) అందుబాటులో ఉంది"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "అంతర్గత నెట్‌వర్క్‌ల కోసం పోర్ట్ {name} ({details}) అందుబాటులో ఉంది"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details})బాహ్య నెట్‌వర్క్‌లకు అందుబాటులో లేదు"
@ -3144,7 +3148,7 @@ msgstr "{domain} డోమైన్ కొరకు సర్టిఫికే
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "{domain} డోమైన్ కొరకు ధృవీకరణపత్రం నిర్మూలించడంలో విఫలం: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3159,7 +3163,7 @@ msgstr ""
"అందిస్తుంది మరియు పని చేయడానికి ఫోన్ నంబర్‌లు అవసరం లేదు. ఇచ్చిన మ్యాట్రిక్స్ సర్వర్‌లోని వినియోగదారులు "
"ఫెడరేషన్ ద్వారా అన్ని ఇతర మ్యాట్రిక్స్ సర్వర్‌లలోని వినియోగదారులతో సంభాషించవచ్చు."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3168,7 +3172,7 @@ msgstr ""
"Matrix Synapseకి ఆడియో/వీడియో కాల్‌ల కోసం STUN/TURN సర్వర్ అవసరం.<a "
"href=\"{coturn_url}\">Coturn</a> యాప్‌ను ఇన్‌స్టాల్ చేయండి లేదా బాహ్య సర్వర్‌ను కాన్ఫిగర్ చేయండి."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "మ్యాట్రిక్స్ సినాప్స్"
@ -3742,15 +3746,15 @@ msgstr ""
msgid "Name Services"
msgstr "పేరు సేవలు"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "అన్నీ"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "అన్నీ వెబ్ యాప్‌లు"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "సెక్యూర్ షెల్"
@ -8085,34 +8089,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr "సేవ నిలిపివేయబడింది: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "ప్యాకేజీ {package_name} తాజా వెర్షన్ ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "వ్యవస్థాపిస్తోంది"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "దిగుమతి అవుతోంది"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "ప్రసార మాధ్యమం మార్పు"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "ఆకృతీకరణ ఫైలు: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -8364,6 +8368,12 @@ msgstr "హోమ్ బ్రూ:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "లోపం"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8581,11 +8591,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "మారకుండా అమర్చుతోంది"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-08-31 19:50+0000\n"
"Last-Translator: Burak Yavuz <hitowerdigit@hotmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/freedombox/"
@ -27,7 +27,7 @@ msgstr "Sayfa kaynağı"
msgid "Static configuration {etc_path} is setup properly"
msgstr "Sabit yapılandırma {etc_path} düzgün bir şekilde ayarlanmış"
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -107,6 +107,10 @@ msgstr "Bu web arayüzünü sunmak için kullanılacak dil"
msgid "Use the language preference set in the browser"
msgstr "Tarayıcıda ayarlanan dil tercihini kullan"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP Sunucusu"
@ -1810,7 +1814,7 @@ msgstr "Sunucu bağlantıyı reddetti"
msgid "Already up-to-date"
msgstr "Zaten güncel"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1818,7 +1822,7 @@ msgstr ""
"XMPP, açık ve standartlaştırılmış bir iletişim protokolüdür. Burada ejabberd "
"adı verilen XMPP sunucunuzu çalıştırabilir ve yapılandırabilirsiniz."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1832,7 +1836,7 @@ msgstr ""
"Etkinleştirildiğinde, ejabberd'e <a href=\"{users_url}\">{box_name} oturum "
"açma adı ile herhangi bir kullanıcı</a> tarafından erişilebilir."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1842,12 +1846,12 @@ msgstr ""
"duyar. <a href=\"{coturn_url}\">Coturn</a> uygulamasını yükleyin veya harici "
"bir sunucu yapılandırın."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Sohbet Sunucusu"
@ -2168,17 +2172,17 @@ msgstr "Güvenlik duvarı arka ucu nftablesdır"
msgid "Direct passthrough rules exist"
msgstr "Doğrudan geçiş kuralları mevcut"
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Dahili ağlar için {name} ({details}) bağlantı noktası kullanılabilir"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Harici ağlar için {name} ({details}) bağlantı noktası kullanılabilir"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Harici ağlar için {name} ({details}) bağlantı noktası kullanılamaz"
@ -3239,7 +3243,7 @@ msgstr "{domain} etki alanı için sertifika başarılı olarak silindi"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "{domain} etki alanı için sertifika silme başarısız oldu: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3256,7 +3260,7 @@ msgstr ""
"kullanıcılar, federasyon aracılığıyla diğer tüm Matrix sunucularındaki "
"kullanıcılarla sohbet edebilir."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3266,7 +3270,7 @@ msgstr ""
"ihtiyaç duyar. <a href={coturn_url}>Coturn</a> uygulamasını yükleyin veya "
"harici bir sunucu yapılandırın."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3840,15 +3844,15 @@ msgstr ""
msgid "Name Services"
msgstr "Ad Hizmetleri"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Tümü"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Tüm web uygulamaları"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Güvenli Kabuk"
@ -8318,34 +8322,34 @@ msgstr "Başlamak için bekleniyor: {name}"
msgid "Finished: {name}"
msgstr "Tamamlandı: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "{expression} paketi yükleme için mevcut değil"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "{package_name} paketi en son sürümdür ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "yükleniyor"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "indiriliyor"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "ortam değiştirme"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "yapılandırma dosyası: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Paket yöneticisini beklerken zaman aşımı oldu"
@ -8581,6 +8585,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "hata"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8796,11 +8806,11 @@ msgstr ""
"Tüm uygulama verileri ve yapılandırması kalıcı olarak kaybolacaktır. "
"Uygulama tekrar yeni olarak yüklenebilir."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Ayar değişmedi"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "{app_id} kaldırılmadan önce"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2023-08-31 19:50+0000\n"
"Last-Translator: Ihor Hordiichuk <igor_ck@outlook.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/freedombox/"
@ -29,7 +29,7 @@ msgstr "Джерело сторінки"
msgid "Static configuration {etc_path} is setup properly"
msgstr "Статична конфігурація {etc_path} налаштована належним чином"
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -108,6 +108,10 @@ msgstr "Мова, що використовується для надання ц
msgid "Use the language preference set in the browser"
msgstr "Використовувати мовні налаштування оглядача"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Сервер HTTP Apache"
@ -1821,7 +1825,7 @@ msgstr "Сервер відмовив у зʼєднанні"
msgid "Already up-to-date"
msgstr "Вже оновлено"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1829,7 +1833,7 @@ msgstr ""
"XMPP це відкритий і стандартизований протокол спілкування. Тут Ви можете "
"запустити і налаштувати свій XMPP-сервер ejabberd."
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1843,7 +1847,7 @@ msgstr ""
"ejabberd зможе <a href=\"{users_url}\">будь-який користувач із логіном "
"{box_name}</a>."
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1853,12 +1857,12 @@ msgstr ""
"застосунок <a href=\"{coturn_url}\">Coturn</a> або налаштуйте зовнішній "
"сервер."
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "Сервер чату"
@ -2176,17 +2180,17 @@ msgstr "Серверна частина брандмауера - nftables"
msgid "Direct passthrough rules exist"
msgstr "Існують правила прямого переходу"
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Порт {name} ({details}) доступний для внутрішніх мереж"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Порт {name} ({details}) доступний для зовнішніх мереж"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Порт {name} ({details}) недоступний для зовнішніх мереж"
@ -3246,7 +3250,7 @@ msgstr "Сертифікат успішно видалено для домену
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "Не вдалося видалити сертифікат для домену {domain}: {error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3263,7 +3267,7 @@ msgstr ""
"можуть спілкуватися з користувачами на інших серверах Matrix через "
"федеративність."
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
@ -3273,7 +3277,7 @@ msgstr ""
"Встановіть програму <a href=\"{coturn_url}\">Coturn</a> або налаштуйте "
"зовнішній сервер."
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3845,15 +3849,15 @@ msgstr ""
msgid "Name Services"
msgstr "Назва сервісів"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr "Усі"
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr "Усі вебзастосунки"
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "Захищена оболонка"
@ -8310,34 +8314,34 @@ msgstr "Очікування запуску: {name}"
msgid "Finished: {name}"
msgstr "Завершено: {name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr "Пакунок {expression} недоступний для встановлення"
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Пакунок {package_name} має останню версію ({latest_version})"
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "встановлення"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "завантаження"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "зміна медія"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "файл конфіґурації: {file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr "Час очікування менеджера пакунків"
@ -8572,6 +8576,12 @@ msgstr "Homebrew:"
msgid "RPM:"
msgstr "RPM:"
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "помилка"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -8788,11 +8798,11 @@ msgstr ""
"Усі дані програми та налаштування буде втрачено назавжди. Застосунок можна "
"встановити начисто ще раз."
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "Налаштування не змінено"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr "перед видаленням {app_id}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\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/"
@ -28,7 +28,7 @@ msgstr "Nguồn của trang"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -109,6 +109,10 @@ msgstr "Ngôn ngữ để sử dụng cho giao diện web"
msgid "Use the language preference set in the browser"
msgstr "Sử dụng cài đặt ngôn ngữ của trình duyệt"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Máy chủ HTTP Apache"
@ -1844,13 +1848,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1859,19 +1863,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -2166,17 +2170,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3091,7 +3095,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3101,14 +3105,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3596,15 +3600,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7489,34 +7493,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7752,6 +7756,12 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "lỗi"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7946,11 +7956,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Plinth\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2022-12-07 20:48+0000\n"
"Last-Translator: Eric <hamburger1024@duck.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
@ -28,7 +28,7 @@ msgstr "来源页面"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "FreedomBox"
@ -103,6 +103,10 @@ msgstr "此 web 管理界面的语言"
msgid "Use the language preference set in the browser"
msgstr "使用浏览器中设置的语言首选项"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP 服务"
@ -1730,7 +1734,7 @@ msgstr "服务器拒绝连接"
msgid "Already up-to-date"
msgstr "已是最新"
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
@ -1738,7 +1742,7 @@ msgstr ""
"XMPP 是一种开放标准的通信协议。在这里你可以运行并配置您的 XMPP 服务器,称为 "
"ejabberd。"
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1751,7 +1755,7 @@ msgstr ""
"a>。启用后,任何有 <a href=\"{users_url}\"> {box_name} 登录的用户</a>均可访"
"问 ejabberd。"
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
@ -1760,12 +1764,12 @@ msgstr ""
"ejabberd需要一个STUN/TURN服务器用于音频/视频呼叫。安装<a "
"href=\"{coturn_url}\">Coturn</a>应用程序或配置一个外部服务器。"
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr "ejabberd"
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr "聊天服务器"
@ -2054,17 +2058,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "内网端口 {name}{details})可用"
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "外网端口 {name}{details})可用"
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3022,7 +3026,7 @@ msgstr "成功删除域名 {domain} 的证书"
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr "删除 {domain} 域名证书失败:{error}"
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -3032,14 +3036,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr "Matrix Synapse"
@ -3528,15 +3532,15 @@ msgstr ""
msgid "Name Services"
msgstr "名称服务"
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr "安全 Shell"
@ -7518,34 +7522,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr "已完成:{name}"
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr "安装"
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr "下载中"
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr "媒体改变"
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr "配置文件:{file}"
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7776,6 +7780,12 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
#, fuzzy
#| msgid "error"
msgid "Error"
msgstr "错误"
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7974,11 +7984,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr "设置未改变"
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-28 20:05-0400\n"
"POT-Creation-Date: 2023-09-25 20:14-0400\n"
"PO-Revision-Date: 2021-12-23 12:50+0000\n"
"Last-Translator: pesder <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
@ -28,7 +28,7 @@ msgstr "來源頁面"
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
#: plinth/context_processors.py:23 plinth/views.py:94
#: plinth/context_processors.py:23 plinth/views.py:95
msgid "FreedomBox"
msgstr "自由盒子"
@ -105,6 +105,10 @@ msgstr "此網頁介面顯示的語言"
msgid "Use the language preference set in the browser"
msgstr "使用瀏覽器語言設定"
#: plinth/middleware.py:130
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
#: plinth/modules/apache/__init__.py:32
msgid "Apache HTTP Server"
msgstr "Apache HTTP 伺服器"
@ -1725,13 +1729,13 @@ msgstr ""
msgid "Already up-to-date"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:30
#: plinth/modules/ejabberd/__init__.py:29
msgid ""
"XMPP is an open and standardized communication protocol. Here you can run "
"and configure your XMPP server, called ejabberd."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:33
#: plinth/modules/ejabberd/__init__.py:32
#, python-brace-format
msgid ""
"To actually communicate, you can use the <a href=\"{jsxc_url}\">web client</"
@ -1740,19 +1744,19 @@ msgid ""
"any <a href=\"{users_url}\"> user with a {box_name} login</a>."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:41
#: plinth/modules/ejabberd/__init__.py:40
#, python-brace-format
msgid ""
"ejabberd needs a STUN/TURN server for audio/video calls. Install the <a "
"href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/ejabberd/__init__.py:61
msgid "ejabberd"
msgstr ""
#: plinth/modules/ejabberd/__init__.py:63
#: plinth/modules/matrixsynapse/__init__.py:57
#: plinth/modules/ejabberd/__init__.py:62
#: plinth/modules/matrixsynapse/__init__.py:56
msgid "Chat Server"
msgstr ""
@ -2045,17 +2049,17 @@ msgstr ""
msgid "Direct passthrough rules exist"
msgstr ""
#: plinth/modules/firewall/components.py:134
#: plinth/modules/firewall/components.py:135
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: plinth/modules/firewall/components.py:142
#: plinth/modules/firewall/components.py:143
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: plinth/modules/firewall/components.py:147
#: plinth/modules/firewall/components.py:148
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2970,7 +2974,7 @@ msgstr ""
msgid "Failed to delete certificate for domain {domain}: {error}"
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:27
#: plinth/modules/matrixsynapse/__init__.py:26
msgid ""
"<a href=\"https://matrix.org/docs/guides/faq.html\">Matrix</a> is an new "
"ecosystem for open, federated instant messaging and VoIP. Synapse is a "
@ -2980,14 +2984,14 @@ msgid ""
"converse with users on all other Matrix servers via federation."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:35
#: plinth/modules/matrixsynapse/__init__.py:34
#, python-brace-format
msgid ""
"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the "
"<a href={coturn_url}>Coturn</a> app or configure an external server."
msgstr ""
#: plinth/modules/matrixsynapse/__init__.py:56
#: plinth/modules/matrixsynapse/__init__.py:55
msgid "Matrix Synapse"
msgstr ""
@ -3471,15 +3475,15 @@ msgstr ""
msgid "Name Services"
msgstr ""
#: plinth/modules/names/components.py:12
#: plinth/modules/names/components.py:14
msgid "All"
msgstr ""
#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20
#: plinth/modules/names/components.py:18 plinth/modules/names/components.py:22
msgid "All web apps"
msgstr ""
#: plinth/modules/names/components.py:24
#: plinth/modules/names/components.py:26
msgid "Secure Shell"
msgstr ""
@ -7361,34 +7365,34 @@ msgstr ""
msgid "Finished: {name}"
msgstr ""
#: plinth/package.py:212
#: plinth/package.py:211
#, python-brace-format
msgid "Package {expression} is not available for install"
msgstr ""
#: plinth/package.py:225
#: plinth/package.py:224
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: plinth/package.py:373
#: plinth/package.py:372
msgid "installing"
msgstr ""
#: plinth/package.py:375
#: plinth/package.py:374
msgid "downloading"
msgstr ""
#: plinth/package.py:377
#: plinth/package.py:376
msgid "media change"
msgstr ""
#: plinth/package.py:379
#: plinth/package.py:378
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: plinth/package.py:407 plinth/package.py:432
#: plinth/package.py:406 plinth/package.py:431
msgid "Timeout waiting for package manager"
msgstr ""
@ -7624,6 +7628,10 @@ msgstr ""
msgid "RPM:"
msgstr ""
#: plinth/templates/error.html:10
msgid "Error"
msgstr ""
#: plinth/templates/first_setup.html:18
#, python-format
msgid ""
@ -7817,11 +7825,11 @@ msgid ""
"installed freshly again."
msgstr ""
#: plinth/views.py:241
#: plinth/views.py:242
msgid "Setting unchanged"
msgstr ""
#: plinth/views.py:478
#: plinth/views.py:479
#, python-brace-format
msgid "before uninstall of {app_id}"
msgstr ""

View File

@ -1,5 +1,7 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
from typing import ClassVar
from django.urls import reverse_lazy
from plinth import app
@ -8,7 +10,7 @@ from plinth import app
class Menu(app.FollowerComponent):
"""Component to manage a single menu item."""
_all_menus = set()
_all_menus: ClassVar[set['Menu']] = set()
def __init__(self, component_id, name=None, short_description=None,
icon=None, url_name=None, url_args=None, url_kwargs=None,

View File

@ -10,8 +10,11 @@ from django.conf import settings
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.exceptions import PermissionDenied
from django.db.utils import OperationalError
from django.shortcuts import render
from django.template.response import SimpleTemplateResponse
from django.utils.deprecation import MiddlewareMixin
from django.utils.translation import gettext as _
from stronghold.utils import is_view_func_public
from plinth import app as app_module
@ -114,3 +117,19 @@ class FirstSetupMiddleware(MiddlewareMixin):
'refresh_page_sec': 3
}
return render(request, 'first_setup.html', context)
class CommonErrorMiddleware(MiddlewareMixin):
"""Django middleware to handle common errors."""
@staticmethod
def process_exception(request, exception):
"""Show a custom error page when OperationalError is raised."""
if isinstance(exception, OperationalError):
message = _(
'System is possibly under heavy load. Please retry later.')
return SimpleTemplateResponse('error.html',
context={'message': message},
status=503)
return None

View File

@ -17,7 +17,7 @@ class Migration(migrations.Migration):
initial = True
dependencies = []
dependencies: list = []
operations = [
migrations.CreateModel(

View File

@ -8,7 +8,6 @@ import importlib
import logging
import pathlib
import re
from typing import Optional
import django
@ -142,8 +141,7 @@ def get_module_import_path(module_name: str) -> str:
return import_path
def _read_module_import_paths_from_file(
file_path: pathlib.Path) -> Optional[str]:
def _read_module_import_paths_from_file(file_path: pathlib.Path) -> str | None:
"""Read a module's import path from a file."""
with file_path.open() as file_handle:
for line in file_handle:

View File

@ -3,4 +3,4 @@
URLs for the Apache module.
"""
urlpatterns = []
urlpatterns: list = []

View File

@ -7,4 +7,4 @@ Application manifest for avahi.
# /etc/avahi/services. Currently, we don't intend to make that customizable.
# There is no necessity for backup and restore. This manifest will ensure that
# avahi enable/disable setting is preserved.
backup = {}
backup: dict = {}

View File

@ -6,4 +6,4 @@ Application manifest for backups.
# Currently, backup application does not have any settings. However, settings
# such as scheduler settings, backup location, secrets to connect to remove
# servers need to be backed up.
backup = {}
backup: dict = {}

View File

@ -7,7 +7,6 @@ import pathlib
import re
import subprocess
import tarfile
from typing import Optional, Union
from plinth.actions import privileged
from plinth.utils import Version
@ -22,8 +21,8 @@ class AlreadyMountedError(Exception):
@privileged
def mount(mountpoint: str, remote_path: str, ssh_keyfile: Optional[str] = None,
password: Optional[str] = None,
def mount(mountpoint: str, remote_path: str, ssh_keyfile: str | None = None,
password: str | None = None,
user_known_hosts_file: str = '/dev/null'):
"""Mount a remote ssh path via sshfs."""
try:
@ -31,7 +30,7 @@ def mount(mountpoint: str, remote_path: str, ssh_keyfile: Optional[str] = None,
except AlreadyMountedError:
return
kwargs = {}
input_ = None
# the shell would expand ~/ to the local home directory
remote_path = remote_path.replace('~/', '').replace('~', '')
# 'reconnect', 'ServerAliveInternal' and 'ServerAliveCountMax' allow the
@ -55,9 +54,9 @@ def mount(mountpoint: str, remote_path: str, ssh_keyfile: Optional[str] = None,
if not password:
raise ValueError('mount requires either a password or ssh_keyfile')
cmd += ['-o', 'password_stdin']
kwargs['input'] = password.encode()
input_ = password.encode()
subprocess.run(cmd, check=True, timeout=TIMEOUT, **kwargs)
subprocess.run(cmd, check=True, timeout=TIMEOUT, input=input_)
@privileged
@ -110,7 +109,7 @@ def setup(path: str):
def _init_repository(path: str, encryption: str,
encryption_passphrase: Optional[str] = None):
encryption_passphrase: str | None = None):
"""Initialize a local or remote borg repository."""
if encryption != 'none':
if not encryption_passphrase:
@ -121,14 +120,13 @@ def _init_repository(path: str, encryption: str,
@privileged
def init(path: str, encryption: str,
encryption_passphrase: Optional[str] = None):
def init(path: str, encryption: str, encryption_passphrase: str | None = None):
"""Initialize the borg repository."""
_init_repository(path, encryption, encryption_passphrase)
@privileged
def info(path: str, encryption_passphrase: Optional[str] = None) -> dict:
def info(path: str, encryption_passphrase: str | None = None) -> dict:
"""Show repository information."""
process = _run(['borg', 'info', '--json', path], encryption_passphrase,
stdout=subprocess.PIPE)
@ -136,7 +134,7 @@ def info(path: str, encryption_passphrase: Optional[str] = None) -> dict:
@privileged
def list_repo(path: str, encryption_passphrase: Optional[str] = None) -> dict:
def list_repo(path: str, encryption_passphrase: str | None = None) -> dict:
"""List repository contents."""
process = _run(['borg', 'list', '--json', '--format="{comment}"', path],
encryption_passphrase, stdout=subprocess.PIPE)
@ -150,8 +148,8 @@ def _get_borg_version():
@privileged
def create_archive(path: str, paths: list[str], comment: Optional[str] = None,
encryption_passphrase: Optional[str] = None):
def create_archive(path: str, paths: list[str], comment: str | None = None,
encryption_passphrase: str | None = None):
"""Create archive."""
existing_paths = filter(os.path.exists, paths)
command = ['borg', 'create', '--json']
@ -169,7 +167,7 @@ def create_archive(path: str, paths: list[str], comment: Optional[str] = None,
@privileged
def delete_archive(path: str, encryption_passphrase: Optional[str] = None):
def delete_archive(path: str, encryption_passphrase: str | None = None):
"""Delete archive."""
_run(['borg', 'delete', path], encryption_passphrase)
@ -199,7 +197,7 @@ def _extract(archive_path, destination, encryption_passphrase, locations=None):
@privileged
def export_tar(path: str, encryption_passphrase: Optional[str] = None):
def export_tar(path: str, encryption_passphrase: str | None = None):
"""Export archive contents as tar stream on stdout."""
_run(['borg', 'export-tar', path, '-', '--tar-filter=gzip'],
encryption_passphrase)
@ -214,7 +212,7 @@ def _read_archive_file(archive, filepath, encryption_passphrase):
@privileged
def get_archive_apps(path: str,
encryption_passphrase: Optional[str] = None) -> list[str]:
encryption_passphrase: str | None = None) -> list[str]:
"""Get list of apps included in archive."""
manifest_folder = os.path.relpath(MANIFESTS_FOLDER, '/')
borg_call = [
@ -266,7 +264,12 @@ def get_exported_archive_apps(path: str) -> list[str]:
for name in filenames:
if 'var/lib/plinth/backups-manifests/' in name \
and name.endswith('.json'):
manifest_data = tar_handle.extractfile(name).read()
file_handle = tar_handle.extractfile(name)
if not file_handle:
raise RuntimeError(
'Unable to extract app manifest from backup file.')
manifest_data = file_handle.read()
manifest = json.loads(manifest_data)
break
@ -281,7 +284,7 @@ def get_exported_archive_apps(path: str) -> list[str]:
@privileged
def restore_archive(archive_path: str, destination: str,
directories: list[str], files: list[str],
encryption_passphrase: Optional[str] = None):
encryption_passphrase: str | None = None):
"""Restore files from an archive."""
locations_all = directories + files
locations_all = [
@ -314,8 +317,7 @@ def _assert_app_id(app_id):
@privileged
def dump_settings(app_id: str, settings: dict[str, Union[int, float, bool,
str]]):
def dump_settings(app_id: str, settings: dict[str, int | float | bool | str]):
"""Dump an app's settings to a JSON file."""
_assert_app_id(app_id)
BACKUPS_DATA_PATH.mkdir(exist_ok=True)
@ -324,7 +326,7 @@ def dump_settings(app_id: str, settings: dict[str, Union[int, float, bool,
@privileged
def load_settings(app_id: str) -> dict[str, Union[int, float, bool, str]]:
def load_settings(app_id: str) -> dict[str, int | float | bool | str]:
"""Load an app's settings from a JSON file."""
_assert_app_id(app_id)
settings_path = BACKUPS_DATA_PATH / f'{app_id}-settings.json'
@ -334,7 +336,7 @@ def load_settings(app_id: str) -> dict[str, Union[int, float, bool, str]]:
return {}
def _get_env(encryption_passphrase: Optional[str] = None):
def _get_env(encryption_passphrase: str | None = None):
"""Create encryption and ssh kwargs out of given arguments."""
env = dict(os.environ, BORG_RELOCATED_REPO_ACCESS_IS_OK='yes',
LANG='C.UTF-8')

View File

@ -72,9 +72,9 @@ KNOWN_ERRORS = [
class BaseBorgRepository(abc.ABC):
"""Base class for all kinds of Borg repositories."""
flags = {}
flags: dict[str, bool] = {}
is_mounted = True
known_credentials = []
known_credentials: list[str] = []
def __init__(self, path, credentials=None, uuid=None, schedule=None,
**kwargs):

View File

@ -11,7 +11,6 @@ import secrets
import shutil
import string
import subprocess
from typing import Optional
import augeas
@ -124,7 +123,7 @@ def get_configuration() -> dict[str, object]:
@privileged
def add_password(permissions: list[str], comment: Optional[str] = None):
def add_password(permissions: list[str], comment: str | None = None):
"""Generate a password with given permissions."""
conf = conf_file_read()
permissions = _format_permissions(permissions)

View File

@ -17,4 +17,4 @@ clients = [{
# triggered on every Plinth domain change (and cockpit application install) and
# will set the value of allowed domains correctly. This is the only key the is
# customized in cockpit.conf.
backup = {}
backup: dict = {}

View File

@ -4,7 +4,6 @@
import os
import pathlib
import subprocess
from typing import Optional
import augeas
@ -29,7 +28,7 @@ def set_hostname(hostname: str):
@privileged
def set_domainname(domainname: Optional[str] = None):
def set_domainname(domainname: str | None = None):
"""Set system domainname in /etc/hosts."""
hostname = subprocess.check_output(['hostname']).decode().strip()
hosts_path = pathlib.Path('/etc/hosts')

View File

@ -2,8 +2,6 @@
"""App component for other apps to manage their STUN/TURN server configuration.
"""
from __future__ import annotations # Can be removed in Python 3.10
import base64
import hashlib
import hmac
@ -11,6 +9,7 @@ import json
import re
from dataclasses import dataclass, field
from time import time
from typing import ClassVar, Iterable
from plinth import app
@ -36,9 +35,9 @@ class TurnConfiguration:
that must be used by a STUN/TURN client after advice from the server.
"""
domain: str = None
domain: str | None = None
uris: list[str] = field(default_factory=list)
shared_secret: str = None
shared_secret: str | None = None
def __post_init__(self):
"""Generate URIs after object initialization if necessary."""
@ -76,8 +75,8 @@ class UserTurnConfiguration(TurnConfiguration):
time.
"""
username: str = None
credential: str = None
username: str | None = None
credential: str | None = None
def to_json(self) -> str:
"""Return a JSON representation of the configuration."""
@ -102,7 +101,7 @@ class TurnConsumer(app.FollowerComponent):
"""
_all = {}
_all: ClassVar[dict[str, 'TurnConsumer']] = {}
def __init__(self, component_id):
"""Initialize the component.
@ -115,7 +114,7 @@ class TurnConsumer(app.FollowerComponent):
self._all[component_id] = self
@classmethod
def list(cls) -> list[TurnConsumer]: # noqa
def list(cls) -> Iterable['TurnConsumer']:
"""Return a list of all Coturn components."""
return cls._all.values()

View File

@ -3,4 +3,4 @@
Application manifest for diagnostics.
"""
backup = {}
backup: dict = {}

View File

@ -3,6 +3,7 @@
import pathlib
import urllib
from typing import Any
from plinth.actions import privileged
@ -30,7 +31,7 @@ def _read_configuration(path, separator='='):
@privileged
def export_config() -> dict[str, object]:
def export_config() -> dict[str, bool | dict[str, dict[str, str | None]]]:
"""Return the old ez-ipupdate configuration in JSON format."""
input_config = {}
if _active_config.exists():
@ -68,12 +69,12 @@ def export_config() -> dict[str, object]:
update_url = domain['update_url']
try:
server = urllib.parse.urlparse(update_url).netloc
service_types = {
service_types: dict[str, str] = {
'dynupdate.noip.com': 'noip.com',
'dynupdate.no-ip.com': 'noip.com',
'freedns.afraid.org': 'freedns.afraid.org'
}
domain['service_type'] = service_types.get(server, 'other')
domain['service_type'] = service_types.get(str(server), 'other')
except ValueError:
pass
@ -86,7 +87,7 @@ def export_config() -> dict[str, object]:
and _active_config.exists()):
enabled = True
output_config = {'enabled': enabled, 'domains': {}}
output_config: dict[str, Any] = {'enabled': enabled, 'domains': {}}
if domain['domain']:
output_config['domains'][domain['domain']] = domain

View File

@ -3,7 +3,6 @@
import json
import logging
from typing import Tuple
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
@ -226,7 +225,7 @@ def update_turn_configuration(config: TurnConfiguration, managed=True,
privileged.configure_turn(json.loads(config.to_json()), managed)
def get_turn_configuration() -> Tuple[TurnConfiguration, bool]:
def get_turn_configuration() -> tuple[TurnConfiguration, bool]:
"""Get the latest STUN/TURN configuration."""
tc, managed = privileged.get_turn_config()
return TurnConfiguration(tc['domain'], tc['uris'],

View File

@ -8,7 +8,7 @@ import shutil
import socket
import subprocess
from pathlib import Path
from typing import Any, Optional, Tuple
from typing import Any
from ruamel.yaml import YAML, scalarstring
@ -28,7 +28,7 @@ MOD_IRC_DEPRECATED_VERSION = Version('18.06')
yaml = YAML()
yaml.allow_duplicate_keys = True
yaml.preserve_quotes = True
yaml.preserve_quotes = True # type: ignore [assignment]
TURN_URI_REGEX = r'(stun|turn):(.*):([0-9]{4})\?transport=(tcp|udp)'
@ -240,7 +240,7 @@ def set_domains(domains: list[str]):
@privileged
def mam(command: str) -> Optional[bool]:
def mam(command: str) -> bool | None:
"""Enable, disable, or get status of Message Archive Management (MAM)."""
if command not in ('enable', 'disable', 'status'):
raise ValueError('Invalid command')
@ -286,7 +286,11 @@ def mam(command: str) -> Optional[bool]:
def _generate_service(uri: str) -> dict:
"""Generate ejabberd mod_stun_disco service config from Coturn URI."""
pattern = re.compile(TURN_URI_REGEX)
typ, domain, port, transport = pattern.match(uri).groups()
match = pattern.match(uri)
if not match:
raise ValueError('URL does not match TURN URI')
typ, domain, port, transport = match.groups()
return {
"host": domain,
"port": int(port),
@ -304,7 +308,7 @@ def _generate_uris(services: list[dict]) -> list[str]:
@privileged
def get_turn_config() -> Tuple[dict[str, Any], bool]:
def get_turn_config() -> tuple[dict[str, Any], bool]:
"""Get the latest STUN/TURN configuration in JSON format."""
with open(EJABBERD_CONFIG, 'r', encoding='utf-8') as file_handle:
conf = yaml.load(file_handle)

View File

@ -10,7 +10,6 @@ See: https://rspamd.com/doc/modules/dkim_signing.html
"""
from dataclasses import dataclass
from typing import Union
@dataclass
@ -19,12 +18,12 @@ class Entry: # pylint: disable=too-many-instance-attributes
type_: str
value: str
domain: Union[str, None] = None
domain: str | None = None
class_: str = 'IN'
ttl: int = 60
priority: int = 10
weight: Union[int, None] = None
port: Union[int, None] = None
weight: int | None = None
port: int | None = None
def get_split_value(self):
"""If the record is TXT and value > 255, split it."""

View File

@ -23,7 +23,7 @@ class Service: # NOQA, pylint: disable=too-many-instance-attributes
wakeup: str
maxproc: str
command: str
options: str
options: dict[str, str]
def __str__(self) -> str:
parts = [
@ -49,7 +49,8 @@ def get_config(keys: list) -> dict:
output = _run(args)
result = {}
for line in filter(None, output.split('\n')):
lines: list[str] = list(filter(None, output.split('\n')))
for line in lines:
key, sep, value = line.partition('=')
if not sep:
raise ValueError('Invalid output detected')

View File

@ -32,7 +32,7 @@ default_config = {
])
}
submission_options = {
submission_options: dict[str, str] = {
'syslog_name': 'postfix/submission',
'smtpd_tls_security_level': 'encrypt',
'smtpd_client_restrictions': 'permit_sasl_authenticated,reject',
@ -43,7 +43,7 @@ submission_service = postconf.Service(service='submission', type_='inet',
wakeup='-', maxproc='-', command='smtpd',
options=submission_options)
smtps_options = {
smtps_options: dict[str, str] = {
'syslog_name': 'postfix/smtps',
'smtpd_tls_wrappermode': 'yes',
'smtpd_sasl_auth_enable': 'yes',

View File

@ -27,7 +27,7 @@ _description = [
'security threat from the Internet.'), box_name=cfg.box_name)
]
_port_details = {}
_port_details: dict[str, list[str]] = {}
logger = logging.getLogger(__name__)

View File

@ -5,6 +5,7 @@ App component for other apps to use firewall functionality.
import logging
import re
from typing import ClassVar
from django.utils.text import format_lazy
from django.utils.translation import gettext_lazy as _
@ -18,7 +19,7 @@ logger = logging.getLogger(__name__)
class Firewall(app.FollowerComponent):
"""Component to open/close firewall ports for an app."""
_all_firewall_components = {}
_all_firewall_components: ClassVar[dict[str, 'Firewall']] = {}
def __init__(self, component_id, name=None, ports=None, is_external=False):
"""Initialize the firewall component."""

View File

@ -3,4 +3,4 @@
Application manifest for firewall.
"""
backup = {}
backup: dict = {}

View File

@ -9,7 +9,7 @@ import re
import shutil
import subprocess
import time
from typing import Any, Optional
from typing import Any
from plinth import action_utils
from plinth.actions import privileged
@ -347,7 +347,7 @@ def repo_info(name: str) -> dict[str, str]:
@privileged
def create_repo(url: Optional[str] = None, name: Optional[str] = None,
def create_repo(url: 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):

View File

@ -1,8 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Configure I2P."""
from typing import Optional
from plinth.actions import privileged
from plinth.modules.i2p.helpers import RouterEditor, TunnelEditor
@ -19,8 +17,8 @@ def set_tunnel_property(name: str, property_: str, value: str):
@privileged
def add_favorite(name: str, url: str, description: Optional[str],
icon: Optional[str]):
def add_favorite(name: str, url: str, description: str | None,
icon: str | None):
"""Add a favorite to router.config."""
editor = RouterEditor()
editor.read_conf().add_favorite(name, url, description, icon).write_conf()

View File

@ -25,7 +25,7 @@ IkiWiki::Setup::Automator->import(
cgiurl => "/ikiwiki/$wikiname_short/ikiwiki.cgi",
cgiauthurl => "/ikiwiki-auth/$wikiname_short/ikiwiki.cgi",
cgi_wrapper => "/var/www/ikiwiki/$wikiname_short/ikiwiki.cgi",
add_plugins => [qw{goodstuff websetup comments calendar sidebar trail httpauth lockedit opendiscussion moderatedcomments userlist remove attachment}],
add_plugins => [qw{goodstuff websetup comments calendar sidebar trail httpauth lockedit moderatedcomments userlist remove attachment}],
rss => 1,
atom => 1,
syslog => 1,

View File

@ -6,7 +6,6 @@ import pathlib
import re
import shutil
import subprocess
from typing import Tuple
from plinth.actions import privileged
@ -43,7 +42,7 @@ def _get_title(site):
@privileged
def get_sites() -> list[Tuple[str, str]]:
def get_sites() -> list[tuple[str, str]]:
"""Get wikis and blogs."""
sites = []
if os.path.exists(SITE_PATH):

View File

@ -11,4 +11,4 @@ clients = [{
}]
}]
backup = {}
backup: dict = {}

View File

@ -11,4 +11,4 @@ clients = [{
}]
}]
backup = {}
backup: dict = {}

View File

@ -4,6 +4,7 @@
import logging
import pathlib
import threading
from typing import ClassVar
from plinth import app
from plinth.modules.names.components import DomainName
@ -38,7 +39,7 @@ class LetsEncrypt(app.FollowerComponent):
"""
_all = {}
_all: ClassVar[dict[str, 'LetsEncrypt']] = {}
def __init__(self, component_id, domains=None, daemons=None,
should_copy_certificates=False, private_key_path=None,

View File

@ -3,7 +3,6 @@
import logging
import os
from typing import List
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
@ -191,7 +190,7 @@ def get_configured_domain_name():
return config['server_name']
def get_turn_configuration() -> (List[str], str, bool):
def get_turn_configuration() -> tuple[TurnConfiguration, bool]:
"""Return TurnConfiguration if setup else empty."""
for file_path, managed in ((privileged.OVERRIDDEN_TURN_CONF_PATH, False),
(privileged.TURN_CONF_PATH, True)):

View File

@ -7,7 +7,6 @@ import json
import os
import pathlib
import shutil
from typing import Dict, List, Optional, Union
import requests
import yaml
@ -102,7 +101,7 @@ def get_config():
@privileged
def set_config(public_registration: bool,
registration_verification: Optional[str] = None):
registration_verification: str | None = None):
"""Enable/disable public user registration."""
if registration_verification == 'token':
_create_registration_token()
@ -243,7 +242,7 @@ def _get_access_token() -> str:
@privileged
def list_registration_tokens() -> List[Dict[str, Optional[Union[str, int]]]]:
def list_registration_tokens() -> list[dict[str, str | int | None]]:
"""Return the current list of registration tokens."""
if not action_utils.service_is_running('matrix-synapse'):
return []
@ -262,7 +261,7 @@ def _get_headers(access_token: str):
def _list_registration_tokens(
access_token: str) -> List[Dict[str, Optional[Union[str, int]]]]:
access_token: str) -> list[dict[str, str | int | None]]:
"""Use Admin API to fetch the list of registration tokens.
For details on registration tokens API, see:

View File

@ -1,8 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Configure Minetest server."""
from typing import Optional
import augeas
from plinth import action_utils
@ -13,10 +11,9 @@ AUG_PATH = '/files' + CONFIG_FILE + '/.anon'
@privileged
def configure(max_players: Optional[int] = None,
enable_pvp: Optional[bool] = None,
creative_mode: Optional[bool] = None,
enable_damage: Optional[bool] = None):
def configure(max_players: int | None = None, enable_pvp: bool | None = None,
creative_mode: bool | None = None,
enable_damage: bool | None = None):
"""Update configuration file and restart daemon if necessary."""
aug = load_augeas()
if max_players is not None:

View File

@ -5,7 +5,6 @@ Configure Mumble server.
import pathlib
import subprocess
from typing import Optional
import augeas
@ -33,7 +32,7 @@ def set_super_user_password(password: str):
@privileged
def get_domain() -> Optional[str]:
def get_domain() -> str | None:
"""Return domain name set in mumble or empty string."""
domain_file = pathlib.Path('/var/lib/mumble-server/domain-freedombox')
try:
@ -43,7 +42,7 @@ def get_domain() -> Optional[str]:
@privileged
def set_domain(domain_name: Optional[str]):
def set_domain(domain_name: str | None):
"""Write a file containing domain name."""
if domain_name:
domain_file = pathlib.Path('/var/lib/mumble-server/domain-freedombox')
@ -69,7 +68,7 @@ def change_root_channel_name(root_channel_name: str):
@privileged
def get_root_channel_name() -> Optional[str]:
def get_root_channel_name() -> str | None:
"""Return the currently configured Root channel name."""
aug = _load_augeas()
name = aug.get('.anon/registerName')

View File

@ -3,6 +3,8 @@
App component to introduce a new domain type.
"""
from typing import ClassVar
from django.utils.translation import gettext_lazy as _
from plinth import app
@ -39,7 +41,7 @@ class DomainType(app.FollowerComponent):
"""
_all = {}
_all: ClassVar[dict[str, 'DomainType']] = {}
def __init__(self, component_id, display_name, configuration_url,
can_have_certificate=True):
@ -90,7 +92,7 @@ class DomainName(app.FollowerComponent):
primary reason for making a domain name available as a component.
"""
_all = {}
_all: ClassVar[dict[str, 'DomainName']] = {}
def __init__(self, component_id, name, domain_type, services):
"""Initialize a domain name.

View File

@ -3,4 +3,4 @@
Application manifest for names.
"""
backup = {}
backup: dict = {}

View File

@ -2,7 +2,6 @@
"""Configure PageKite."""
import os
from typing import Union
import augeas
@ -118,7 +117,7 @@ def set_config(frontend: str, kite_name: str, kite_secret: str):
@privileged
def remove_service(service: dict[str, Union[str, bool]]):
def remove_service(service: dict[str, str]):
"""Search and remove the service(s) that match all given parameters."""
aug = _augeas_load()
service = utils.load_service(service)
@ -171,7 +170,7 @@ def _add_service(aug, service):
@privileged
def add_service(service: dict[str, Union[str, bool]]):
def add_service(service: dict[str, str]):
"""Add one service."""
aug = _augeas_load()
service = utils.load_service(service)

View File

@ -13,4 +13,4 @@ clients = [{
}]
}]
backup = {}
backup: dict = {}

View File

@ -3,4 +3,4 @@
Application manifest for power.
"""
backup = {}
backup: dict = {}

View File

@ -2,7 +2,6 @@
"""Configure Privacy App."""
import pathlib
from typing import Optional
import augeas
@ -30,7 +29,7 @@ def setup():
@privileged
def set_configuration(enable_popcon: Optional[bool] = None):
def set_configuration(enable_popcon: bool | None = None):
"""Update popcon configuration."""
aug = _load_augeas()
if enable_popcon:

View File

@ -3,4 +3,4 @@
Application manifest for privoxy.
"""
backup = {}
backup: dict = {}

View File

@ -7,7 +7,6 @@ import pathlib
import random
import string
from shutil import move
from typing import Union
from plinth import action_utils
from plinth.actions import privileged
@ -64,7 +63,7 @@ def setup():
@privileged
def get_config() -> dict[str, Union[int, str]]:
def get_config() -> dict[str, int | str]:
"""Read and print Shadowsocks configuration."""
config = open(SHADOWSOCKS_CONFIG_SYMLINK, 'r', encoding='utf-8').read()
return json.loads(config)
@ -86,7 +85,7 @@ def _merge_config(config):
@privileged
def merge_config(config: dict[str, Union[int, str]]):
def merge_config(config: dict[str, int | str]):
"""Configure Shadowsocks Client."""
_merge_config(config)

View File

@ -6,7 +6,6 @@ import os
import pathlib
import random
import string
from typing import Union
from plinth import action_utils
from plinth.actions import privileged
@ -47,7 +46,7 @@ def setup():
@privileged
def get_config() -> dict[str, Union[int, str]]:
def get_config() -> dict[str, int | str]:
"""Read and print Shadowsocks Server configuration."""
config = open(SHADOWSOCKS_CONFIG_SYMLINK, 'r', encoding='utf-8').read()
return json.loads(config)

View File

@ -3,4 +3,4 @@
Application manifest for storage.
"""
backup = {}
backup: dict = {}

View File

@ -14,7 +14,7 @@ gio = import_from_gi('Gio', '2.0')
_DBUS_NAME = 'org.freedesktop.UDisks2'
_INTERFACES = {
_INTERFACES: dict[str, str] = {
'Ata': 'org.freedesktop.UDisks2.Drive.Ata',
'Block': 'org.freedesktop.UDisks2.Block',
'Drive': 'org.freedesktop.UDisks2.Drive',
@ -28,14 +28,14 @@ _INTERFACES = {
'UDisks2': 'org.freedesktop.UDisks2',
}
_OBJECTS = {
_OBJECTS: dict[str, str] = {
'drives': '/org/freedesktop/UDisks2/drives/',
'jobs': '/org/freedesktop/UDisks2/jobs/',
'Manager': '/org/freedesktop/UDisks2/Manager',
'UDisks2': '/org/freedesktop/UDisks2',
}
_ERRORS = {
_ERRORS: dict[str, str] = {
'AlreadyMounted': 'org.freedesktop.UDisks2.Error.AlreadyMounted',
'Failed': 'org.freedesktop.UDisks2.Error.Failed',
}
@ -54,8 +54,8 @@ def _get_dbus_proxy(object_, interface):
class Proxy:
"""Base methods for abstraction over UDisks2 DBus proxy objects."""
interface = None
properties = {}
interface: str | None = None
properties: dict[str, tuple[str, str]] = {}
def __init__(self, object_path):
"""Return an object instance."""

View File

@ -10,7 +10,7 @@ import shutil
import socket
import subprocess
import time
from typing import Any, Optional, Union
from typing import Any
import augeas
@ -143,11 +143,10 @@ def _remove_proxy():
@privileged
def configure(use_upstream_bridges: Optional[bool] = None,
upstream_bridges: Optional[str] = None,
relay: Optional[bool] = None,
bridge_relay: Optional[bool] = None,
hidden_service: Optional[bool] = None):
def configure(use_upstream_bridges: bool | None = None,
upstream_bridges: str | None = None, relay: bool | None = None,
bridge_relay: bool | None = None,
hidden_service: bool | None = None):
"""Configure Tor."""
aug = augeas_load()
@ -193,7 +192,7 @@ def restart():
@privileged
def get_status() -> dict[str, Union[bool, str, dict[str, Any]]]:
def get_status() -> dict[str, bool | str | dict[str, Any]]:
"""Return dict with Tor status."""
aug = augeas_load()
return {
@ -254,8 +253,8 @@ def _get_ports() -> dict[str, str]:
def _get_orport() -> str:
"""Return the ORPort by querying running instance."""
cookie = open(TOR_AUTH_COOKIE, 'rb').read()
cookie = codecs.encode(cookie, 'hex').decode()
cookie_bytes = open(TOR_AUTH_COOKIE, 'rb').read()
cookie = codecs.encode(cookie_bytes, 'hex').decode()
commands = '''AUTHENTICATE {cookie}
GETINFO net/listeners/or
@ -270,6 +269,9 @@ QUIT
line = response.split(b'\r\n')[1].decode()
matches = re.match(r'.*=".+:(\d+)"', line)
if not matches:
raise ValueError('Invalid orport value returned by Tor')
return matches.group(1)
@ -320,8 +322,7 @@ def _disable():
action_utils.service_disable(SERVICE_NAME)
def _use_upstream_bridges(use_upstream_bridges: Optional[bool] = None,
aug=None):
def _use_upstream_bridges(use_upstream_bridges: bool | None = None, aug=None):
"""Enable use of upstream bridges."""
if use_upstream_bridges is None:
return
@ -360,8 +361,7 @@ def _set_upstream_bridges(upstream_bridges=None, aug=None):
aug.save()
def _enable_relay(relay: Optional[bool], bridge: Optional[bool],
aug: augeas.Augeas):
def _enable_relay(relay: bool | None, bridge: bool | None, aug: augeas.Augeas):
"""Enable Tor bridge relay."""
if relay is None and bridge is None:
return

View File

@ -5,7 +5,7 @@ import logging
import os
import shutil
import subprocess
from typing import Any, Optional, Union
from typing import Any
import augeas
@ -66,9 +66,9 @@ def _first_time_setup():
@privileged
def configure(use_upstream_bridges: Optional[bool] = None,
upstream_bridges: Optional[str] = None,
apt_transport_tor: Optional[bool] = None):
def configure(use_upstream_bridges: bool | None = None,
upstream_bridges: str | None = None,
apt_transport_tor: bool | None = None):
"""Configure Tor."""
aug = augeas_load()
@ -92,7 +92,7 @@ def restart():
@privileged
def get_status() -> dict[str, Union[bool, str, dict[str, Any]]]:
def get_status() -> dict[str, bool | str | dict[str, Any]]:
"""Return dict with Tor Proxy status."""
aug = augeas_load()
return {
@ -125,8 +125,7 @@ def _disable():
action_utils.service_disable(SERVICE_NAME)
def _use_upstream_bridges(use_upstream_bridges: Optional[bool] = None,
aug=None):
def _use_upstream_bridges(use_upstream_bridges: bool | None = None, aug=None):
"""Enable use of upstream bridges."""
if use_upstream_bridges is None:
return

View File

@ -5,7 +5,6 @@ Configuration helper for Transmission daemon.
import json
import pathlib
from typing import Union
from plinth import action_utils
from plinth.actions import privileged
@ -20,14 +19,15 @@ def get_configuration() -> dict[str, str]:
@privileged
def merge_configuration(configuration: dict[str, Union[str, bool]]):
def merge_configuration(configuration: dict[str, str | bool]):
"""Merge given JSON configuration with existing configuration."""
current_configuration = _transmission_config.read_bytes()
current_configuration = json.loads(current_configuration)
current_configuration_bytes = _transmission_config.read_bytes()
current_configuration = json.loads(current_configuration_bytes)
new_configuration = current_configuration
new_configuration.update(configuration)
new_configuration = json.dumps(new_configuration, indent=4, sort_keys=True)
new_configuration_bytes = json.dumps(new_configuration, indent=4,
sort_keys=True)
_transmission_config.write_text(new_configuration, encoding='utf-8')
_transmission_config.write_text(new_configuration_bytes, encoding='utf-8')
action_utils.service_reload('transmission-daemon')

View File

@ -3,7 +3,6 @@
import os
import subprocess
from typing import Optional
import augeas
@ -19,15 +18,16 @@ DB_BACKUP_FILE = '/var/lib/plinth/backups-data/ttrss-database.sql'
@privileged
def pre_setup():
"""Preseed debconf values before packages are installed."""
action_utils.debconf_set_selections(
['tt-rss tt-rss/database-type string pgsql',
'tt-rss tt-rss/purge boolean true',
'tt-rss tt-rss/dbconfig-remove boolean true',
'tt-rss tt-rss/dbconfig-reinstall boolean true'])
action_utils.debconf_set_selections([
'tt-rss tt-rss/database-type string pgsql',
'tt-rss tt-rss/purge boolean true',
'tt-rss tt-rss/dbconfig-remove boolean true',
'tt-rss tt-rss/dbconfig-reinstall boolean true'
])
@privileged
def get_domain() -> Optional[str]:
def get_domain() -> str | None:
"""Get the domain set for Tiny Tiny RSS."""
aug = load_augeas()
@ -41,7 +41,7 @@ def get_domain() -> Optional[str]:
@privileged
def set_domain(domain_name: Optional[str]):
def set_domain(domain_name: str | None):
"""Set the domain to be used by Tiny Tiny RSS."""
if not domain_name:
return

View File

@ -7,7 +7,6 @@ import pathlib
import re
import subprocess
import time
from typing import List, Tuple, Union
from plinth.action_utils import (apt_hold, apt_hold_flag, apt_hold_freedombox,
apt_unhold_freedombox, debconf_set_selections,
@ -81,7 +80,7 @@ Pin: release a=bullseye-backports
Pin-Priority: 500
'''
DIST_UPGRADE_OBSOLETE_PACKAGES: List[str] = []
DIST_UPGRADE_OBSOLETE_PACKAGES: list[str] = []
DIST_UPGRADE_PACKAGES_WITH_PROMPTS = [
'bind9', 'firewalld', 'janus', 'minetest-server', 'minidlna',
@ -90,7 +89,7 @@ DIST_UPGRADE_PACKAGES_WITH_PROMPTS = [
DIST_UPGRADE_PRE_INSTALL_PACKAGES = ['base-files']
DIST_UPGRADE_PRE_DEBCONF_SELECTIONS: List[str] = [
DIST_UPGRADE_PRE_DEBCONF_SELECTIONS: list[str] = [
# Tell grub-pc to continue without installing grub again.
'grub-pc grub-pc/install_devices_empty boolean true'
]
@ -198,7 +197,7 @@ def get_log() -> str:
def _get_protocol() -> str:
"""Return the protocol to use for newly added repository sources."""
try:
from plinth.modules.tor import utils
from plinth.modules.torproxy import utils
if utils.is_apt_transport_tor_enabled():
return 'tor+http'
except Exception:
@ -317,7 +316,7 @@ def _is_sufficient_free_space() -> bool:
return free_space >= DIST_UPGRADE_REQUIRED_FREE_SPACE
def _check_dist_upgrade(test_upgrade=False) -> Tuple[bool, str]:
def _check_dist_upgrade(test_upgrade=False) -> tuple[bool, str]:
"""Check if a distribution upgrade be performed.
Check for new stable release, if updates are enabled, and if there is
@ -589,7 +588,7 @@ def _start_dist_upgrade_service():
@privileged
def start_dist_upgrade(test: bool = False) -> dict[str, Union[str, bool]]:
def start_dist_upgrade(test: bool = False) -> dict[str, str | bool]:
"""Start dist upgrade process.
Check if a new stable release is available, and start dist-upgrade process

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