freedombox Debian release 24.10

-----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAmY5iaQWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICAq6EAC9evb65QS5nPPPGPmWQOFljMqn
 pSOhywc0+LgIbcks1fCbu3O1NF5Z7HGNO5eYSmwH6hIoDz1/+ffNJPahjcKkw32P
 hatwpcmZp03o3tgp2N41XlIkase2Z8PMsCKSa9B5Rdt+se4FhZQjQ9J3gY9iC5Fh
 ikMbXxhUwUZ/jHxMIH2Jq4rKHeXdw+VC4AHWqjtrVqsVSxkqc7zKycWUuhS5FiU5
 d6njtc3kpkDuebRlTBVC+/zPG3fwDvOsXpE/Z3fIfZY1k1OEojrj+pWOmP6RuS2C
 FYRDfjRfedA/cruBwF0pAnrTldffUDMnf++90wvcAHfZSqD9bon4CYuQ7bwbczyC
 9Z7HymqD3GYqLHxKe+mZCBS+JrPaUkZu4fI9mIP7Ue0oXC5LiFx4C/3DDqPbgdKK
 jIE5mERAmdeJKgyqBymsNUBC7I0iLcwfd7WmizQtRKvCo1vCwdJOd6cb4HwgrmuH
 Z52M091IR+fmEsdlgcInRKDWzk44Rac6rqx0GhYVF1vReU7bcNjSVdoMfB9mKpym
 DnOBMqLd17UBd+wrAg/z5+RUYrc2enTUexcx5Y+lnt34TmE+/vtyxCpP8bhMTH5n
 mkoQ09OWcuK5PWgo0A2wl8WUksWcmkWoe0Kex8rVdG4Z+HjLWRooDXmwq3X6rnkV
 ajDYVR5dKsgC+7Fwig==
 =DFoh
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAmY/2kAWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICBopEACvZ6u2nwCVK/Pv/rnO1QZyVtSx
 +aLhiccb/TNp9W/ZNzNZ485gkXIbrEGY99OYql7J4kGpXanPdZfOEAXkEX8ffdjV
 1MAi9pXYZQdmYon0fuJ/d9UThFUiu7lsQKH8lS9mpr4sXVRWoSFwNiNhNQDRb/Y7
 ycnOda6GO2UeKG/f0IIZj0mmpyc7sMPFy6u6ug8P1illAFwLl6GXspAtf8lTV2hG
 45BExzgCOOQ0LXeCpE49BKvOVrDX7sLL4/wzvAifwrPkxycZZjGz+JaN+VCdacjS
 yFagJ4TjJARcf4E0qhQeGOFyHK0VjJZQMqlOj2tnflxK9Dgw3/tApoczkH8YW7oc
 4j18KhDohf157ju14VMMlzV5vYaC8rC0v5H2809coi8HOv3fuuL2RpygV9ZysgUS
 G8O2rPS0WbC4xZikNuPpOUNvLTClTam8XO+PrkMCKzR/d9t1sV2axQVT1ljzRFYF
 76/8f2JJLhwBXbfjqQ4Ayd6f3n7mjN69UhFN2uWxfXBB+lbAw2a4BtJAwlLC72VV
 e7rXPxrFer7qaPhFpfGj/U04pmcaCCmHt5uubMai7qTENiuQ8eQ5OhvJLbat+Ikg
 3kCnWXvE3hNS4M888MWGDzvtZ91Hst2jBqUkRDXckg7Nvx74JBxVoxV3o/sLzy8i
 LDiN73fPxcBVJZ3tFg==
 =hcrZ
 -----END PGP SIGNATURE-----

Merge tag 'v24.10' into debian/bookworm-backports

freedombox Debian release 24.10
This commit is contained in:
James Valleroy 2024-05-11 16:51:06 -04:00
commit 41cdeeefd2
88 changed files with 5785 additions and 3288 deletions

55
debian/changelog vendored
View File

@ -1,3 +1,58 @@
freedombox (24.10) unstable; urgency=medium
[ Veiko Aasa ]
* storage: Add an option to include help text to directory selection form
* minidlna: Add media directory selection form
* minidlna: Explicitly include ssdp service to firewall configuration
* minidlna: Do not proxy minidlna web interface over Apache
* minidlna: Restart app when upgrading to reconfigure firewall
[ gallegonovato ]
* Translated using Weblate (Spanish)
[ Burak Yavuz ]
* Translated using Weblate (Turkish)
[ 大王叫我来巡山 ]
* Translated using Weblate (Chinese (Simplified))
[ Jiří Podhorecký ]
* Translated using Weblate (Czech)
[ Ray Kuo ]
* Translated using Weblate (Chinese (Traditional))
[ James Valleroy ]
* diagnostics: Add optional component_id to DiagnosticCheck
* app, component: Add repair method
* setup: Add method to run app repair
* diagnostics: Change "Re-run setup" to "Try to repair"
* letsencrypt: Re-obtain certificates during repair
* locale: Update translation strings
* doc: Fetch latest manual
[ Sunil Mohan Adapa ]
* letsencrypt: Remove unused imports
* nextcloud: Use systemd generator for creating container service
* nextcloud: Create network using systemd generator
* nextcloud: Drop network namespacing in container, use host network
* nextcloud: Use php-fpm container instead of apache container
* nextcloud: Wait on init sync lock
* nextcloud: Pull the image separately before starting systemd unit
* nextcloud: Ship instead of create cron timer related units
* nextcloud: Restart container when dependent services are restarted
* nextcloud: Allow re-running setup
* nextcloud: Implement enable/disable container
* nextcloud: Enable pretty URLs without /index.php in them
* notification: Handle more formatting errors
* nextcloud: Allow re-running setup when app is disabled
* nextcloud: Populated and maintain a list of trusted domains
* nextcloud: Enable app with experimental warning
* nextcloud: Warn that community provides the container not team
* nextcloud: Add fallback for when quadlet is not available
-- James Valleroy <jvalleroy@mailbox.org> Mon, 06 May 2024 21:00:03 -0400
freedombox (24.9~bpo12+1) bookworm-backports; urgency=medium
* Rebuild for bookworm-backports.

View File

@ -8,6 +8,43 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 24.10 (2024-05-06) ==
=== Highlights ===
* nextcloud: Enable app with experimental warning
* minidlna: Add media directory selection form
=== Other Changes ===
* app, component: Add repair method
* diagnostics: Add optional component_id to !DiagnosticCheck
* diagnostics: Change "Re-run setup" to "Try to repair"
* letsencrypt: Re-obtain certificates during repair
* letsencrypt: Remove unused imports
* locale: Update translations for Chinese (Simplified), Chinese (Traditional), Czech, Spanish, Turkish
* minidlna: Do not proxy minidlna web interface over Apache
* minidlna: Explicitly include ssdp service to firewall configuration
* minidlna: Restart app when upgrading to reconfigure firewall
* nextcloud: Add fallback for when quadlet is not available
* nextcloud: Allow re-running setup
* nextcloud: Allow re-running setup when app is disabled
* nextcloud: Create network using systemd generator
* nextcloud: Drop network namespacing in container, use host network
* nextcloud: Enable pretty URLs without /index.php in them
* nextcloud: Implement enable/disable container
* nextcloud: Populated and maintain a list of trusted domains
* nextcloud: Pull the image separately before starting systemd unit
* nextcloud: Restart container when dependent services are restarted
* nextcloud: Ship instead of create cron timer related units
* nextcloud: Use php-fpm container instead of apache container
* nextcloud: Use systemd generator for creating container service
* nextcloud: Wait on init sync lock
* nextcloud: Warn that community provides the container not team
* notification: Handle more formatting errors
* setup: Add method to run app repair
* storage: Add an option to include help text to directory selection form
== FreedomBox 24.9 (2024-04-22) ==
* action_utils, nextcloud: Make podman util more generic

View File

@ -59,7 +59,9 @@ snapshot = tgz
=== Enlaces externos ===
* Sitio web: https://git-scm.com
* Documentación de uso: https://git-scm.com/docs/gitweb
* Wiki de Debian: https://wiki.debian.org/CategoryGit
## END_INCLUDE

View File

@ -68,7 +68,9 @@ También se pueden instalar temas contribuidos por usuarios desde el Mercado de
=== Enlaces externos ===
* Sitio web: https://ikiwiki.info
* Mercado de temas: https://ikiwiki.info/theme_market/
* Documentación de uso: https://ikiwiki.info
* Foro de usuarios: https://ikiwiki.info/forum/
* Mercado de temas: https://ikiwiki.info/theme_market/
## END_INCLUDE

View File

@ -19,12 +19,18 @@ Si tu !FreedomBox está detras de un router necesitarás configurar la redirecci
* TCP 6523
=== Enlaces extenos ===
=== Enlaces externos ===
* Sitio web: https://gobby.github.io/libinfinity
* Software cliente para Gobby: https://gobby.github.io
* Wiki de Gobby: https://github.com/gobby/gobby/wiki
==== Aplicaciones Cliente ====
!FreedomBox recomienda algunas aplicaciones cliente. Selecciona su icono en la página de ''Aplicaciones'' y haz clic en el botón'''> Aplicaciones Cliente'''.
* El cliente principal de Infinoted se llama "Gobby: https://gobby.github.io
* Documentación de uso: https://github.com/gobby/gobby/wiki
* Wiki de Gobby: https://github.com/gobby/gobby/wiki
## END_INCLUDE
Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]].

View File

@ -46,7 +46,7 @@ Si tu !FreedomBox está detrás de un router y quieres conectarte a otros servid
* Sitio web: https://www.jsxc.org
* Documentación de uso: https://www.jsxc.org/manual.html
* Manual de !FreedomBox del servidor ejabberd: [[FreedomBox/Manual/ejabberd|https://wiki.debian.org/FreedomBox/Manual/ejabberd]]
* Manual de !FreedomBox del servidor ejabberd: [[es/FreedomBox/Manual/ejabberd|https://wiki.debian.org/es/FreedomBox/Manual/ejabberd]]
## END_INCLUDE

View File

@ -86,6 +86,13 @@ Si tu !FreedomBox está detrás de un router, necesitarás configurar la redirec
* Matrix en el wiki de Debian : https://wiki.debian.org/Matrix
* Video tutorial para instalar Matrix Synapse sobre una instancia en la nube: https://youtu.be/8snpMHHbymI
==== Aplicaciones cliente ====
!FreedomBox recomienda algunas aplicaciones cliente. Selecciona su icono en la página de ''Aplicaciones'' y haz clic en el botón'''> Aplicaciones Cliente'''.
* [[https://wiki.debian.org/Matrix#Clients|Software cliente para Matrix en el wiki de Debian]]
## END_INCLUDE
Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]].

View File

@ -8,6 +8,43 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 24.10 (2024-05-06) ==
=== Highlights ===
* nextcloud: Enable app with experimental warning
* minidlna: Add media directory selection form
=== Other Changes ===
* app, component: Add repair method
* diagnostics: Add optional component_id to !DiagnosticCheck
* diagnostics: Change "Re-run setup" to "Try to repair"
* letsencrypt: Re-obtain certificates during repair
* letsencrypt: Remove unused imports
* locale: Update translations for Chinese (Simplified), Chinese (Traditional), Czech, Spanish, Turkish
* minidlna: Do not proxy minidlna web interface over Apache
* minidlna: Explicitly include ssdp service to firewall configuration
* minidlna: Restart app when upgrading to reconfigure firewall
* nextcloud: Add fallback for when quadlet is not available
* nextcloud: Allow re-running setup
* nextcloud: Allow re-running setup when app is disabled
* nextcloud: Create network using systemd generator
* nextcloud: Drop network namespacing in container, use host network
* nextcloud: Enable pretty URLs without /index.php in them
* nextcloud: Implement enable/disable container
* nextcloud: Populated and maintain a list of trusted domains
* nextcloud: Pull the image separately before starting systemd unit
* nextcloud: Restart container when dependent services are restarted
* nextcloud: Ship instead of create cron timer related units
* nextcloud: Use php-fpm container instead of apache container
* nextcloud: Use systemd generator for creating container service
* nextcloud: Wait on init sync lock
* nextcloud: Warn that community provides the container not team
* notification: Handle more formatting errors
* setup: Add method to run app repair
* storage: Add an option to include help text to directory selection form
== FreedomBox 24.9 (2024-04-22) ==
* action_utils, nextcloud: Make podman util more generic

View File

@ -3,4 +3,4 @@
Package init file.
"""
__version__ = '24.9'
__version__ = '24.10'

View File

@ -11,6 +11,8 @@ import subprocess
import tempfile
from contextlib import contextmanager
import augeas
logger = logging.getLogger(__name__)
UWSGI_ENABLED_PATH = '/etc/uwsgi/apps-enabled/{config_name}.ini'
@ -489,59 +491,187 @@ def is_package_manager_busy():
return False
def podman_run(network_name: str, subnet: str, bridge_ip: str, host_port: str,
container_port: str, container_ip: str, container_name: str,
image_name: str, extra_run_options: list[str] | None = None,
extra_network_options: list[str] | None = None):
"""Remove, recreate and run a podman container."""
try:
service_stop(container_name)
subprocess.run(['podman', 'network', 'rm', '--force', network_name],
check=False)
except subprocess.CalledProcessError:
pass
def podman_create(container_name: str, image_name: str, volume_name: str,
volume_path: str, volumes: dict[str, str] | None = None,
env: dict[str, str] | None = None,
binds_to: list[str] | None = None):
"""Remove and recreate a podman container."""
service_stop(f'{volume_name}-volume.service')
service_stop(container_name)
network_create_command = [
'podman', 'network', 'create', '--driver', 'bridge', '--subnet',
subnet, '--gateway', bridge_ip, '--dns', bridge_ip, '--interface-name',
network_name, network_name
] + (extra_network_options or [])
# Data is kept
subprocess.run(['podman', 'volume', 'rm', '--force', volume_name],
check=False)
# Create bridge network
subprocess.run(network_create_command, check=True)
directory = pathlib.Path('/etc/containers/systemd')
directory.mkdir(parents=True, exist_ok=True)
args = [
'podman', 'run', '--detach', '--network', network_name, '--ip',
container_ip, '--name', container_name, '--restart', 'unless-stopped',
'--quiet'
]
# Only listen on localhost. This is to prevent exposing the host port to
# the internet.
args += ['--publish', f'127.0.0.1:{host_port}:{container_port}']
# Enable automatic updates.
args += ['--label', 'io.containers.autoupdate=registry']
# If another container with the same name already exists, replace and
# remove it.
args += ['--replace']
args += (extra_run_options or []) + [image_name]
subprocess.run(args, check=True)
# Fetch the image before creating the container. The systemd service for
# the container won't timeout due to slow internet connectivity.
subprocess.run(['podman', 'image', 'pull', image_name], check=True)
# Create service file for starting/stopping container using systemd
pathlib.Path(volume_path).mkdir(parents=True, exist_ok=True)
# Create storage volume
volume_file = directory / f'{volume_name}.volume'
contents = f'''[Volume]
Device={volume_path}
Driver=local
VolumeName={volume_name}
Options=bind
'''
volume_file.write_text(contents)
service_file = directory / f'{container_name}.container'
volume_lines = '\n'.join([
f'Volume={source}:{dest}' for source, dest in (volumes or {}).items()
])
env_lines = '\n'.join(
[f'Environment={key}={value}' for key, value in (env or {}).items()])
bind_lines = '\n'.join(f'BindsTo={service}\nAfter={service}'
for service in (binds_to or []))
contents = f'''[Unit]
Requires={volume_name}-volume.service
After={volume_name}-volume.service
{bind_lines}
[Container]
AutoUpdate=registry
ContainerName=%N
{env_lines}
Image={image_name}
Network=host
{volume_lines}
[Service]
Restart=always
[Install]
WantedBy=default.target
'''
service_file.write_text(contents)
# Remove the fallback service file when upgrading from bookworm to trixie.
# Re-running setup should be sufficient.
_podman_create_fallback_service_file(container_name, image_name,
volume_name, volume_path, volumes,
env, binds_to)
service_daemon_reload()
def _podman_create_fallback_service_file(container_name: str, image_name: str,
volume_name: str, volume_path: str,
volumes: dict[str, str] | None = None,
env: dict[str, str] | None = None,
binds_to: list[str] | None = None):
"""Create a systemd unit file if systemd generator is not available."""
service_file = pathlib.Path(
'/etc/systemd/system') / f'{container_name}.service'
with service_file.open('wb') as file_handle:
subprocess.run(
['podman', 'generate', 'systemd', '--new', container_name],
stdout=file_handle, check=True)
f'/etc/systemd/system/{container_name}.service')
generator = '/usr/lib/systemd/system-generators/podman-system-generator'
if pathlib.Path(generator).exists():
# If systemd generator is present, during an upgrade, remove the
# .service file (perhaps created when generator is not present).
service_file.unlink(missing_ok=True)
return
service_file.parent.mkdir(parents=True, exist_ok=True)
bind_lines = '\n'.join(f'BindsTo={service}\nAfter={service}'
for service in (binds_to or []))
require_mounts_for = '\n'.join((f'RequiresMountsFor={host_path}'
for host_path in (volumes or {})
if host_path.startswith('/')))
env_args = ' '.join(
(f'--env {key}={value}' for key, value in (env or {}).items()))
volume_args = ' '.join(
(f'-v {host_path}:{container_path}'
for host_path, container_path in (volumes or {}).items()))
# Similar to the file quadlet systemd generator produces but with volume
# related commands merged.
contents = f'''[Unit]
{bind_lines}
RequiresMountsFor=%t/containers
{require_mounts_for}
[Service]
Restart=always
Environment=PODMAN_SYSTEMD_UNIT=%n
KillMode=mixed
ExecStop=/usr/bin/podman rm -v -f -i --cidfile=%t/%N.cid
ExecStopPost=-/usr/bin/podman rm -v -f -i --cidfile=%t/%N.cid
Delegate=yes
Type=notify
NotifyAccess=all
SyslogIdentifier=%N
ExecStartPre=/usr/bin/rm -f %t/%N.cid
ExecStartPre=/usr/bin/podman volume rm --force {volume_name}
ExecStartPre=/usr/bin/podman volume create --driver=local --opt device={volume_path} --opt o=bind {volume_name}
ExecStart=/usr/bin/podman run --name=%N --cidfile=%t/%N.cid --replace --rm --cgroups=split --network=host --sdnotify=conmon --detach --label io.containers.autoupdate=registry {volume_args} {env_args} {image_name}
[Install]
WantedBy=default.target
''' # noqa: E501
service_file.write_text(contents, encoding='utf-8')
service_daemon_reload()
def podman_uninstall(container_name: str, network_name: str, volume_name: str,
image_name: str):
def _podman_augeus(container_name: str):
"""Return an augues instance to edit container configuration file."""
aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD +
augeas.Augeas.NO_MODL_AUTOLOAD)
container = f'/etc/containers/systemd/{container_name}.container'
aug.transform('Systemd', container)
aug.set('/augeas/context', '/files' + container)
aug.load()
return aug
def podman_is_enabled(container_name: str) -> bool:
"""Return whether the container to start on boot."""
aug = _podman_augeus(container_name)
aug = _podman_augeus(container_name)
value = 'default.target'
key = 'Install/WantedBy'
return any(
(aug.get(match_ + '/value') == value for match_ in aug.match(key)))
def podman_enable(container_name: str):
"""Enable container to start on boot."""
aug = _podman_augeus(container_name)
value = 'default.target'
key = 'Install/WantedBy'
found = any(
(aug.get(match_ + '/value') == value for match_ in aug.match(key)))
if not found:
aug.set(f'{key}[last() +1]/value', value)
aug.save()
def podman_disable(container_name: str):
"""Disable container to start on boot."""
aug = _podman_augeus(container_name)
aug.remove('Install/WantedBy')
aug.save()
def podman_uninstall(container_name: str, volume_name: str, image_name: str,
volume_path: str):
"""Remove a podman container's components and systemd unit."""
subprocess.run(['podman', 'network', 'rm', network_name], check=True)
subprocess.run(['podman', 'volume', 'rm', volume_name], check=True)
subprocess.run(['podman', 'image', 'rm', image_name], check=True)
subprocess.run(['podman', 'volume', 'rm', '--force', volume_name],
check=True)
subprocess.run(['podman', 'image', 'rm', '--ignore', image_name],
check=True)
volume_file = pathlib.Path(
'/etc/containers/systemd/') / f'{volume_name}.volume'
volume_file.unlink(missing_ok=True)
service_file = pathlib.Path(
'/etc/containers/systemd/') / f'{container_name}.container'
service_file.unlink(missing_ok=True)
# Remove fallback service file
service_file = pathlib.Path(
'/etc/systemd/system/') / f'{container_name}.service'
service_file.unlink(missing_ok=True)
shutil.rmtree(volume_path, ignore_errors=True)
service_daemon_reload()

View File

@ -211,7 +211,6 @@ class App:
"""Update the status of all follower components.
Do not query or update the status of the leader components.
"""
for component in self.components.values():
if not component.is_leader:
@ -222,15 +221,14 @@ class App:
Return value must be a list of results. Each result is a
:class:`~plinth.diagnostic_check.DiagnosticCheck` with a
unique check_id, a user visible description of the test, and the
result. The test result is a string enumeration from 'failed',
'passed', 'error', 'warning' and 'not_done'.
unique check_id, a user visible description of the test, the result,
test parameters, and the component ID. The test result is a string
enumeration from 'failed', 'passed', 'error', 'warning' and 'not_done'.
Results are typically collected by diagnosing each component of the app
and then supplementing the results with any app level diagnostic tests.
Also see :meth:`.has_diagnostics`.
"""
results = []
for component in self.components.values():
@ -255,7 +253,6 @@ class App:
it is assumed that it is for implementing diagnostic tests and this
method returns True for such an app. Override this method if this
default behavior does not fit the needs.
"""
# App implements some diagnostics
if self.__class__.diagnose is not App.diagnose:
@ -268,6 +265,40 @@ class App:
return False
def repair(self, failed_checks: _list_type) -> bool:
"""Try to fix failed diagnostics.
The default implementation asks relevant components to repair, and then
requests re-run setup for the app.
failed_checks is a list of DiagnosticChecks that had failed or resulted
in a warning. The list will be split up by component_id, and passed to
the appropriate components. Remaining failed diagnostics do not have a
related component, and should be handled by the app.
Returns whether the app setup should be re-run.
"""
should_rerun_setup = False
# Group the failed_checks by component
components_failed_checks = collections.defaultdict(list)
for failed_check in failed_checks:
if failed_check.component_id:
components_failed_checks[failed_check.component_id].append(
failed_check)
else:
# There is a failed check with no related component.
should_rerun_setup = True
# Repair each component that has failed checks
for component_id, component in self.components.items():
if components_failed_checks[component_id]:
result = component.repair(
components_failed_checks[component_id])
should_rerun_setup = should_rerun_setup or result
return should_rerun_setup
class Component:
"""Interface for an app component.
@ -314,12 +345,11 @@ class Component:
Return value must be a list of results. Each result is a
:class:`~plinth.diagnostic_check.DiagnosticCheck` with a
unique check_id, a user visible description of the test, and the
result. The test result is a string enumeration from 'failed',
'passed', 'error', 'warning' and 'not_done'.
unique check_id, a user visible description of the test, the result,
test parameters, and the component ID. The test result is a string
enumeration from 'failed', 'passed', 'error', 'warning' and 'not_done'.
Also see :meth:`.has_diagnostics`.
"""
return []
@ -333,10 +363,25 @@ class Component:
is assumed that it is for implementing diagnostic tests and this method
returns True for such a component. Override this method if this default
behavior does not fit the needs.
"""
return self.__class__.diagnose is not Component.diagnose
def repair(self, failed_checks: list) -> bool:
"""Try to fix failed diagnostics.
The default implementation only requests re-run setup for the app.
Returns whether the app setup should be re-run by the caller.
This method should be overridden by components that implement
diagnose(), if there is a known way to fix failed checks. The return
value can be changed to False to avoid causing a re-run setup.
failed_checks is a list of DiagnosticChecks related to this component
that had failed or warning result.
"""
return True
class FollowerComponent(Component):
"""Interface for an app component that follows other components.

View File

@ -104,7 +104,7 @@ class DropinConfigs(app_module.FollowerComponent):
parameters: DiagnosticCheckParameters = {'etc_path': str(etc_path)}
results.append(
DiagnosticCheck(check_id, description, result_string,
parameters))
parameters, self.component_id))
return results

View File

@ -110,7 +110,9 @@ class Daemon(app.LeaderComponent):
results = []
results.append(self._diagnose_unit_is_running())
for port in self.listen_ports:
results.append(diagnose_port_listening(port[0], port[1]))
results.append(
diagnose_port_listening(port[0], port[1], None,
self.component_id))
return results
@ -124,7 +126,8 @@ class Daemon(app.LeaderComponent):
'service_name': str(self.unit)
}
return DiagnosticCheck(check_id, description, result, parameters)
return DiagnosticCheck(check_id, description, result, parameters,
self.component_id)
class RelatedDaemon(app.FollowerComponent):
@ -200,7 +203,8 @@ def app_is_running(app_):
def diagnose_port_listening(
port: int, kind: str = 'tcp',
listen_address: str | None = None) -> DiagnosticCheck:
listen_address: str | None = None,
component_id: str | None = None) -> DiagnosticCheck:
"""Run a diagnostic on whether a port is being listened on.
Kind must be one of inet, inet4, inet6, tcp, tcp4, tcp6, udp,
@ -222,7 +226,7 @@ def diagnose_port_listening(
return DiagnosticCheck(check_id, description,
Result.PASSED if result else Result.FAILED,
parameters)
parameters, component_id)
def _check_port(port: int, kind: str = 'tcp',
@ -272,7 +276,8 @@ def _check_port(port: int, kind: str = 'tcp',
def diagnose_netcat(host: str, port: int, remote_input: str = '',
negate: bool = False) -> DiagnosticCheck:
negate: bool = False,
component_id: str | None = None) -> DiagnosticCheck:
"""Run a diagnostic using netcat."""
try:
process = subprocess.Popen(['nc', host, str(port)],
@ -298,4 +303,5 @@ def diagnose_netcat(host: str, port: int, remote_input: str = '',
check_id = f'daemon-netcat-negate-{host}-{port}'
description = gettext_noop('Cannot connect to {host}:{port}')
return DiagnosticCheck(check_id, description, result, parameters)
return DiagnosticCheck(check_id, description, result, parameters,
component_id)

View File

@ -30,6 +30,7 @@ class DiagnosticCheck:
description: str
result: Result = Result.NOT_DONE
parameters: DiagnosticCheckParameters = field(default_factory=dict)
component_id: str | None = None
@property
def translated_description(self):
@ -65,6 +66,7 @@ class CheckJSONDecoder(json.JSONDecoder):
"""Convert tagged data to DiagnosticCheck."""
if data.get('__class__') == 'DiagnosticCheck':
return DiagnosticCheck(data['check_id'], data['description'],
data['result'], data['parameters'])
data['result'], data['parameters'],
data.get('component_id'))
return data

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2023-10-19 06:18+0000\n"
"Last-Translator: Shaik <arifashaik807@gmail.com>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/freedombox/"
@ -30,27 +30,27 @@ msgstr "تم إعداد التكوين الثابت {etc_path} بشكل صحيح
msgid "FreedomBox"
msgstr "صندوق الحرية"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "الخدمة {service_name} نشِطة"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "يستمع لمنفذ {kind} {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "يستمع لمنفذ {kind} {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "اتصل بـ {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "يتعذر الاتصال بـ {host}:{port}"
@ -137,12 +137,12 @@ msgstr "خادم ويب"
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "رابط النفاذ {url}"
@ -847,7 +847,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1451,8 +1451,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1492,10 +1491,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1653,7 +1657,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2001,12 +2005,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2924,10 +2928,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3367,7 +3367,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3378,28 +3378,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3418,11 +3412,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4546,7 +4536,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4555,29 +4545,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4585,15 +4575,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4601,11 +4598,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7434,76 +7431,108 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "خطأ أثناء تثبيت التطبيق: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "خطأ أثناء تثبيت التطبيق: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "خطأ أثناء تثبيت التطبيق: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "ثُبت التطبيق."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "خطأ أثناء تثبيت التطبيق: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Error installing application: {error}"
msgid "Uninstalling app"
msgstr "خطأ أثناء تثبيت التطبيق: {error}"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "خطأ أثناء تثبيت التطبيق: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "ثُبت التطبيق."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7836,6 +7865,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +29,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -136,12 +136,12 @@ msgstr "خادم ويب"
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -846,7 +846,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1450,8 +1450,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1491,10 +1490,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1652,7 +1656,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2002,12 +2006,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2927,10 +2931,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3372,7 +3372,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3383,28 +3383,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3423,11 +3417,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4551,7 +4541,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4560,29 +4550,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4590,15 +4580,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4606,11 +4603,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7439,76 +7436,108 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "خطأ في تثبيت التطبيق:{error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "خطأ في تثبيت التطبيق:{error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "خطأ في تثبيت التطبيق:{error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "تم تثبيت التطبيق."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "خطأ في تثبيت التطبيق:{error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Error installing application: {error}"
msgid "Uninstalling app"
msgstr "خطأ في تثبيت التطبيق:{error}"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "خطأ في تثبيت التطبيق:{error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "تم تثبيت التطبيق."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7841,6 +7870,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -25,27 +25,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -132,12 +132,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -842,7 +842,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1446,8 +1446,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1487,10 +1486,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1648,7 +1652,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -1996,12 +2000,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2919,10 +2923,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3360,7 +3360,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3371,28 +3371,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3411,11 +3405,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4539,7 +4529,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4548,29 +4538,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4578,15 +4568,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4594,11 +4591,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7426,67 +7423,97 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#, python-brace-format
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:78
#, python-brace-format
msgid "Error updating app: {error}"
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:82
msgid "App installed."
#: setup.py:81 setup.py:151
#, python-brace-format
msgid "Error repairing app: {error}"
msgstr ""
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr ""
#: setup.py:88
msgid "App installed."
msgstr ""
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, python-brace-format
msgid "Error running diagnostics: {error}"
msgstr ""
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr ""
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr ""
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr ""
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7819,6 +7846,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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/"
@ -28,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Услугата {service_name} работи"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Слушане на {kind} порт {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Слушане на {kind} порт {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Свързване с {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Не може да се свърже с {host}:{port}"
@ -142,12 +142,12 @@ msgstr "Уеб сървър"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} интерфейс (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Достъп до URL {url} на tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Достъп до URL {url}"
@ -912,7 +912,7 @@ msgstr "Премахване"
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1566,8 +1566,7 @@ msgstr "Приложение: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1616,10 +1615,15 @@ msgstr "Проверка"
msgid "Result"
msgstr "Резултат"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Диагностична проверка"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1777,7 +1781,7 @@ msgstr "Състояние"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Домейн"
@ -2135,12 +2139,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "Порт {name} ({details}) достъпен за вътрешните мрежи"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Порт {name} ({details}) достъпен за външните мрежи"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Порт {name} ({details}) недостъпен за външните мрежи"
@ -3089,10 +3093,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Сертификати"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Не може да бъде извършена проба: Не са настроени домейни."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3542,7 +3542,7 @@ msgstr ""
msgid "Address"
msgstr "Адрес"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3553,28 +3553,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3593,11 +3587,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Медийният каталог е обновен"
@ -4796,7 +4786,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4805,33 +4795,33 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
#, fuzzy
#| msgid "Uninstalling an app is an exprimental feature."
msgid "This app is experimental."
msgstr "Премахването на приложения е експериментална възможност."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Напред"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4841,17 +4831,24 @@ msgstr ""
msgid "Not set"
msgstr "Името на хоста е зададено"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Account"
msgid "Administrator password"
msgstr "Профил на администратора"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
@ -4868,11 +4865,11 @@ msgstr ""
"често срещана парола, минималната дължина е <strong>10 знака</strong> . "
"Оставете полето празно, за да запазите текущата парола."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7875,67 +7872,103 @@ msgstr "Пакетът „{expression}“ е недостъпен за инст
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Времето за изчакване на диспечера на пакети е изтекло"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Инсталиране на приложение"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Обновяване на приложение"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Грешка при инсталиране на приложението: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Грешка при обновяване на приложението: {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Грешка при обновяване на приложението: {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "Приложението е инсталирано."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "Приложението е обновено"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Обновяване на приложение"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Грешка при премахване на приложението: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "Приложението е обновено"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Премахване на приложение"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Грешка при премахване на приложението: {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "Приложението е премахнато."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Обновяване на пакетите на приложението"
@ -8278,6 +8311,10 @@ msgstr "Обновяване"
msgid "Backup"
msgstr "Резервно копие"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -8309,6 +8346,9 @@ msgstr "преди премахване на {app_id}"
msgid "Gujarati"
msgstr "Гуджарати"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Не може да бъде извършена проба: Не са настроени домейни."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Настройките на моментните снимки на хранилището са променени"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "ফ্রিডমবক্স"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "সেবা {service_name} চলছে"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} পোর্টে শ্রবণ {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} পোর্টে শোনা {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host} এর সাথে সংযুক্ত: {port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host} এ সংযুক্ত হতে পারে না: {port}"
@ -135,12 +135,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -845,7 +845,7 @@ msgstr "মুছো"
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1461,8 +1461,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1505,10 +1504,15 @@ msgstr "পরীক্ষা"
msgid "Result"
msgstr "ফলাফল"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1666,7 +1670,7 @@ msgstr "অবস্থা"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "ডোমেন"
@ -2028,12 +2032,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2951,10 +2955,6 @@ msgstr ""
msgid "Certificates"
msgstr "অনুমতিপত্র"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3396,7 +3396,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3407,28 +3407,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3447,11 +3441,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4575,7 +4565,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4584,29 +4574,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4614,15 +4604,24 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Domain"
msgid "Override domain"
msgstr "ডোমেন"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4630,11 +4629,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7468,67 +7467,98 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#, python-brace-format
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:78
#, python-brace-format
msgid "Error updating app: {error}"
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:82
msgid "App installed."
#: setup.py:81 setup.py:151
#, python-brace-format
msgid "Error repairing app: {error}"
msgstr ""
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr ""
#: setup.py:88
msgid "App installed."
msgstr ""
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Diagnostics"
msgid "Error running diagnostics: {error}"
msgstr "কারণ নির্ণয়"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr ""
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr ""
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr ""
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7863,6 +7893,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"PO-Revision-Date: 2023-11-20 05:11+0000\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-04-24 07:07+0000\n"
"Last-Translator: Jiří Podhorecký <j.podhorecky@volny.cz>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/freedombox/"
"freedombox/cs/>\n"
@ -16,8 +16,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 5.2\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
"X-Generator: Weblate 5.5.1-dev\n"
#: config.py:103
#, python-brace-format
@ -28,27 +28,27 @@ msgstr "Statická konfigurace {etc_path} je nastavena správně"
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Služba {service_name} je spuštěná"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Spojení očekáváno na {kind} portu {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Spojení očekáváno na {kind} portu {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Připojit k {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Nedaří se připojit k {host}:{port}"
@ -102,14 +102,12 @@ msgid "Use the language preference set in the browser"
msgstr "Použít upřednostňovaný jazyk nastavený ve webovém prohlížeči"
#: menu.py:106
#, fuzzy
#| msgid "Public Visibility"
msgid "Visibility"
msgstr "Viditelnost na veřejnosti"
msgstr "Viditelnost"
#: menu.py:108
msgid "Data"
msgstr ""
msgstr "Data"
#: menu.py:110 templates/base.html:131
msgid "System"
@ -121,10 +119,8 @@ msgid "Security"
msgstr "Zabezpečení"
#: menu.py:114
#, fuzzy
#| msgid "Server Administration"
msgid "Administration"
msgstr "Správa serveru"
msgstr "Správa"
#: middleware.py:131
msgid "System is possibly under heavy load. Please retry later."
@ -143,12 +139,12 @@ msgstr "Webový server"
msgid "{box_name} Web Interface (Plinth)"
msgstr "Webové rozhraní {box_name} (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Přístup na URL adrese {url} na tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Přístup na URL adrese {url}"
@ -913,7 +909,7 @@ msgstr "Smazat"
msgid "Admin"
msgstr "správce"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1556,28 +1552,20 @@ msgid "Go to diagnostics results"
msgstr "Přejít na výsledky diagnostiky"
#: modules/diagnostics/forms.py:11
#, fuzzy
#| msgid "Enable Subdomains"
msgid "Enable daily run"
msgstr "Zapnout podřízené domény"
msgstr "Zapnout denní rutiny"
#: modules/diagnostics/forms.py:12
#, fuzzy
#| msgid "When enabled, FreedomBox automatically updates once a day."
msgid "When enabled, diagnostic checks will run once a day."
msgstr "Když je zapnuto, FreedomBox se jednou denně automaticky zaktualizuje."
msgstr "Když je zapnuto, diagnostické kontroly proběhnou jednou denně."
#: modules/diagnostics/templates/diagnostics.html:11
#, fuzzy
#| msgid "Diagnostics"
msgid "Diagnostics Run"
msgstr "Diagnostika"
msgstr "Spuštění Diagnostiky"
#: modules/diagnostics/templates/diagnostics.html:17
#, fuzzy
#| msgid "Run Diagnostics"
msgid "Run Diagnostics Now"
msgstr "Spustit diagnostiku"
msgstr "Spustit diagnostiku teď"
#: modules/diagnostics/templates/diagnostics.html:22
msgid "View Results"
@ -1594,9 +1582,8 @@ msgstr "Aplikace: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Znovu spustit nastavení"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1638,10 +1625,15 @@ msgstr "Vyzkoušet"
msgid "Result"
msgstr "Výsledek"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Diagnostické testy"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1832,7 +1824,7 @@ msgstr "Stav"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Doména"
@ -2230,12 +2222,12 @@ msgstr "Existují pravidla přímého prostupu"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) dostupný pro interní sítě"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) dostupný pro externí sítě"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} {details} je nedostupný pro externí sítě"
@ -3308,10 +3300,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Certifikáty"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Nelze testovat: Nejsou nakonfigurovány žádné domény."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Stav certifikátu"
@ -3383,10 +3371,9 @@ msgstr ""
"trvat, než se změna projeví."
#: modules/letsencrypt/views.py:46
#, fuzzy, python-brace-format
#| msgid "Failed to revoke certificate for domain {domain}: {error}"
#, python-brace-format
msgid "Failed to revoke certificate for domain {domain}"
msgstr "Nepodařilo se odvolat platnost certifikátu prodoménu {domain}: {error}"
msgstr "Nepodařilo se odvolat platnost certifikátu pro doménu {domain}"
#: modules/letsencrypt/views.py:59 modules/letsencrypt/views.py:77
#, python-brace-format
@ -3394,10 +3381,9 @@ msgid "Certificate successfully obtained for domain {domain}"
msgstr "Úspěšně obdržen certifikát pro doménu {domain}"
#: modules/letsencrypt/views.py:64 modules/letsencrypt/views.py:82
#, fuzzy, python-brace-format
#| msgid "Failed to obtain certificate for domain {domain}: {error}"
#, python-brace-format
msgid "Failed to obtain certificate for domain {domain}"
msgstr "Nepodařilo se získat certifikát pro doménu {domain}: {error}"
msgstr "Nepodařilo se získat certifikát pro doménu {domain}"
#: modules/letsencrypt/views.py:95
#, python-brace-format
@ -3405,10 +3391,9 @@ msgid "Certificate successfully deleted for domain {domain}"
msgstr "Certifikát pro doménu {domain} úspěšně smazán"
#: modules/letsencrypt/views.py:100
#, fuzzy, python-brace-format
#| msgid "Failed to delete certificate for domain {domain}: {error}"
#, python-brace-format
msgid "Failed to delete certificate for domain {domain}"
msgstr "Nepodařilo se smazat certifikát pro doménu {domain}: {error}"
msgstr "Nepodařilo se smazat certifikát pro doménu {domain}"
#: modules/matrixsynapse/__init__.py:26
msgid ""
@ -3833,7 +3818,7 @@ msgstr "Pokud je vypnuto, postavy hráčů nemohou zemřít nebo se zranit."
msgid "Address"
msgstr "Adresa"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3851,34 +3836,23 @@ msgstr ""
"televizory a herní systémy (například PS3 a Xbox 360) nebo aplikace, jako "
"jsou totem a Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Server pro streamování médií"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Simple Media Server"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Adresář souborů médií"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Adresář, do kterého bude server MiniDLNA načítat obsah. Všechny jeho "
"podadresáře budou rovněž prohledávány kvůli mediálním souborům. Pokud "
"změníte výchozí nastavení, ujistěte se, že nový adresář existuje a že je "
"čitelný pro uživatele \"minidlna\". Obvykle budou fungovat jakékoli adresáře "
"médií uživatele (\"/home/username/\")."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3896,11 +3870,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Zadaný adresář neexistuje."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Aktualizovaný adresář médií"
@ -5180,7 +5150,7 @@ msgstr "Připojení {name} smazáno."
msgid "Failed to delete connection: Connection not found."
msgstr "Smazání připojení se nezdařilo: Připojení nenalezeno."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5188,87 +5158,104 @@ msgid ""
"and mobile clients. The Nextcloud server provides a well integrated web "
"interface."
msgstr ""
"Nextcloud je samostatně hostovaná platforma pro produktivitu, která "
"poskytuje soukromé a bezpečné funkce pro sdílení souborů, spolupráci a "
"další. Nextcloud zahrnuje server Nextcloud, klientské aplikace pro stolní "
"počítače a mobilní klienty. Server Nextcloud poskytuje dobře integrované "
"webové rozhraní."
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
"Nextcloud mohou používat všichni uživatelé služby FreedomBox. Chcete-li "
"provést správu "
#: modules/nextcloud/__init__.py:29
#, python-brace-format
#: modules/nextcloud/__init__.py:34
#, fuzzy, python-brace-format
#| msgid ""
#| "Please note that Nextcloud is installed and run inside a container "
#| "provided by the Nextcloud project. Security, quality, privacy and legal "
#| "reviews are done by the upstream project and not by Debian/{box_name}. "
#| "Updates are performed following an independent cycle."
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
"Upozorňujeme, že Nextcloud je nainstalován a spuštěn v kontejneru "
"poskytnutém projektem Nextcloud. Bezpečnost, kvalitu, ochranu soukromí a "
"právní kontrolu provádí projekt upstream, nikoli Debian/{box_name}. "
"Aktualizace jsou prováděny podle nezávislého cyklu."
#: modules/nextcloud/__init__.py:35
#, fuzzy
#| msgid "Uninstalling an app is an experimental feature."
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr "Odinstalování aplikace je exprimentální funkce."
msgstr "Tato aplikace je experimentální."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Další"
msgstr "Nextcloud"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
msgstr "Ukládání souborů a spolupráce"
#: modules/nextcloud/forms.py:19
#, fuzzy
#| msgid "Hostname set"
msgid "Not set"
msgstr "Nastavení názvu stroje"
msgstr "Nenastaveno"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Doména serveru"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#, fuzzy
#| msgid "Administrator Password"
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"Používá se v MediaWiki k vytváření adres URL, které odkazují na wiki, "
"například v zápatí, kanálech a e-mailech. Příklad: \"myfreedombox.example."
"org\" nebo \"example.onion\"."
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr "Heslo k účtu správce"
#: modules/nextcloud/forms.py:31
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
#| "password cannot be a common one and the minimum required length is "
#| "<strong>10 characters</strong>. Leave this field blank to keep the "
#| "current password."
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
"required length is <strong>10 characters</strong>. Leave this field blank to "
"keep the current password."
msgstr ""
"Nastavte nové heslo pro účet správce MediaWiki (admin). Heslo nemůže být "
"běžné a minimální požadovaná délka je <strong>10 znaků</strong>. Chcete-li "
"zachovat aktuální heslo, ponechte toto pole prázdné."
"Nastavte nové heslo pro účet správce Nextcloud (nextcloud-admin). Heslo "
"nemůže být běžné a minimální požadovaná délka je <strong>10 znaků</strong>. "
"Chcete-li zachovat aktuální heslo, ponechte toto pole prázdné."
#: modules/nextcloud/forms.py:38
#, fuzzy
#| msgid "Default zone is external"
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr "Výchozí zóna je externí"
msgstr "Výchozí region telefonu"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
msgstr ""
"Výchozí telefonní předvolba je vyžadována pro ověření telefonních čísel v "
"nastavení profilu bez kódu země."
#: modules/nextcloud/views.py:53
#, fuzzy
#| msgid "Password update failed. Please choose a stronger password"
msgid "Password update failed. Please choose a stronger password."
msgstr "Aktualizace hesla se nezdařila. Zvolte prosím silnější heslo"
msgstr "Aktualizace hesla se nezdařila. Zvolte prosím silnější heslo."
#: modules/openvpn/__init__.py:20
#, python-brace-format
@ -6769,20 +6756,16 @@ msgid "Created snapshot."
msgstr "Zachycený stav pořízen."
#: modules/snapshot/views.py:160
#, fuzzy
#| msgid "Configuration updated."
msgid "Configuration update failed."
msgstr "Nastavení aktualizována."
msgstr "Aktualizace konfigurace se nezdařila."
#: modules/snapshot/views.py:184
msgid "Deleted selected snapshots"
msgstr "Označené zachycené stavy smazány"
#: modules/snapshot/views.py:186
#, fuzzy
#| msgid "Deleting LDAP user failed."
msgid "Deleting snapshot failed."
msgstr "Smazání LDAP uživatele se nezdařilo."
msgstr "Smazání snapshotu se nezdařilo."
#: modules/snapshot/views.py:189
msgid "Snapshot is currently in use. Please try again later."
@ -7012,18 +6995,16 @@ msgid ""
"You cannot save configuration changes. Try rebooting the system. If the "
"problem persists after a reboot, check the storage device for errors."
msgstr ""
"Změny konfigurace nelze uložit. Zkuste restartovat systém. Pokud problém "
"přetrvává i po restartu, zkontrolujte, zda úložné zařízení neobsahuje chyby."
#: modules/storage/__init__.py:382
#, fuzzy
#| msgid "Root Filesystem"
msgid "Read-only root filesystem"
msgstr "Kořenový souborový systém"
msgstr "Kořenový souborový systém pouze pro čtení"
#: modules/storage/__init__.py:392
#, fuzzy
#| msgid "Go to Networks"
msgid "Go to Power"
msgstr "Přejít na Sí"
msgstr "Přejít na Síť"
#: modules/storage/forms.py:63
msgid "Invalid directory name."
@ -7134,10 +7115,8 @@ msgid "Device can be safely unplugged."
msgstr "Zařízení je možné bezpečně odebrat."
#: modules/storage/views.py:93
#, fuzzy
#| msgid "Error ejecting device: {error_message}"
msgid "Error ejecting device."
msgstr "Chyba při vysouvání zařízení: {error_message}"
msgstr "Chyba při vysouvání zařízení."
#: modules/syncthing/__init__.py:23
msgid ""
@ -7739,10 +7718,8 @@ msgid "Test distribution upgrade now"
msgstr "Otestujte aktualizaci distribuce"
#: modules/upgrades/views.py:73
#, fuzzy
#| msgid "Error when configuring unattended-upgrades: {error}"
msgid "Error when configuring unattended-upgrades"
msgstr "Chyba při nastavování bezobslužných aktualizací: {error}"
msgstr "Chyba při nastavování bezobslužných aktualizací"
#: modules/upgrades/views.py:120
msgid "Upgrade process started."
@ -7815,6 +7792,7 @@ msgstr ""
msgid ""
"Optional. Used to send emails to reset password and important notifications."
msgstr ""
"Volitelně. Slouží k zasílání e-mailů pro reset hesla a důležitých oznámení."
#: modules/users/forms.py:106
msgid ""
@ -8535,77 +8513,112 @@ msgid "Finished: {name}"
msgstr "Dokončeno: {name}"
#: package.py:206
#, fuzzy, python-brace-format
#| msgid "Package {expression} is not available for install"
#, python-brace-format
msgid "Package {package_expression} is not available for install"
msgstr "Balíček {expression} není k dispozici pro instalaci"
msgstr "Balíček {package_expression} není k dispozici pro instalaci"
#: package.py:226
#, python-brace-format
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Balíček {package_name} je nejnovější verze ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "Instalace"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "stahování"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "změna média"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "soubor s nastaveními: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Časový limit čekání na správce balíčků"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Instalace aplikací"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Aktualizace aplikací"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Chyba při instalaci aplikace: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Chyba při aktualizaci aplikace: {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Chyba při aktualizaci aplikace: {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "Aplikace nainstalována."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "Aplikace aktualizována"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Aktualizace aplikací"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Chyba při odinstalaci aplikace: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "Aplikace aktualizována"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Odinstalování aplikace"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Chyba při odinstalaci aplikace: {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "Aplikace odinstalována."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Aktualizace balíčků aplikací"
@ -8976,6 +8989,10 @@ msgstr "Aktualizovat"
msgid "Backup"
msgstr "Záloha"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Znovu spustit nastavení"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -9007,6 +9024,31 @@ msgstr "před odinstalací {app_id}"
msgid "Gujarati"
msgstr "gudžarátština"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Nelze testovat: Nejsou nakonfigurovány žádné domény."
#~ msgid "Media streaming server"
#~ msgstr "Server pro streamování médií"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Adresář, do kterého bude server MiniDLNA načítat obsah. Všechny jeho "
#~ "podadresáře budou rovněž prohledávány kvůli mediálním souborům. Pokud "
#~ "změníte výchozí nastavení, ujistěte se, že nový adresář existuje a že je "
#~ "čitelný pro uživatele \"minidlna\". Obvykle budou fungovat jakékoli "
#~ "adresáře médií uživatele (\"/home/username/\")."
#~ msgid "Specified directory does not exist."
#~ msgstr "Zadaný adresář neexistuje."
#~ msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#~ msgstr "Příklady: \"myfreedombox.example.org\" nebo \"example.onion\"."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Nastavení zachycování stavů úložiště aktualizováno"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +30,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Tjenesten {service_name} er aktiv"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Lytter på {kind} port {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Lytter på {kind} port {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Forbind til {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Kan ikke forbinde til {host}:{port}"
@ -149,12 +149,12 @@ msgstr "Webserver"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Web-brugerflade (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Tilgå URL {url} på tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Tilgå URL {url}"
@ -927,7 +927,7 @@ msgstr "Slet"
msgid "Admin"
msgstr "Admin"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1615,11 +1615,8 @@ msgstr "Applikation: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Start opsætning"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1667,10 +1664,15 @@ msgstr "Test"
msgid "Result"
msgstr "Resultat"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Diagnostisk Test"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1870,7 +1872,7 @@ msgstr "Status"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Domæne"
@ -2276,12 +2278,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) er tilgængelig for interne netværk"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) er tilgængelig for eksterne netværk"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) er ikke tilgængelig for eksterne netværk"
@ -3369,10 +3371,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Certifikat Status"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Certifikat Status"
@ -3881,7 +3879,7 @@ msgstr ""
msgid "Address"
msgstr "Adresse"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3892,30 +3890,24 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
#, fuzzy
#| msgid "Mumble Voice Chat Server"
msgid "Simple Media Server"
msgstr "Mumble Tale-tjenesteserver"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3934,11 +3926,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -5189,7 +5177,7 @@ msgstr "Slettede forbindelse {name}."
msgid "Failed to delete connection: Connection not found."
msgstr "Kunne ikke slette forbindelse: Forbindelse ikke fundet."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5198,31 +5186,31 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Næste"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5232,17 +5220,26 @@ msgstr ""
msgid "Not set"
msgstr "Værtsnavn gemt"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Serverdomæne"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Account"
msgid "Administrator password"
msgstr "Administratorkonto"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -5250,13 +5247,13 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default"
msgid "Default phone region"
msgstr "Standard"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8602,80 +8599,116 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "Installerer"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "downloader"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "medie-ændring"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "konfigurationsfil: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "Installer applikationer"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Kunne ikke installere applikation: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Kunne ikke installere applikation: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Kunne ikke installere applikation: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Applikation installeret."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "Seneste opdatering"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Enable Shaarli"
msgid "Repairing app"
msgstr "Aktiver Shaarli"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Kunne ikke installere applikation: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "Seneste opdatering"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "Installer applikationer"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Kunne ikke installere applikation: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Applikation installeret."
#: setup.py:493
#: setup.py:581
#, fuzzy
#| msgid "Upgrade Packages"
msgid "Updating app packages"
@ -9054,6 +9087,12 @@ msgstr "Opdater"
msgid "Backup"
msgstr "Sikkerhedskopiering"
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Start opsætning"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-04-08 07:01+0000\n"
"Last-Translator: Johannes Keyser <joke@fsfe.org>\n"
"Language-Team: German <https://hosted.weblate.org/projects/freedombox/"
@ -30,27 +30,27 @@ msgstr "Statische Konfiguration {etc_path} ist richtig eingerichtet"
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Der Dienst {service_name} wird ausgeführt"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Gebunden auf {kind} Port {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Gebunden an {kind} Port {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Verbinden mit {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Verbindung mit {host}:{port} fehlgeschlagen"
@ -144,12 +144,12 @@ msgstr "Webserver"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Weboberfläche (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Zugangs-URL {url} über TCP{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Zugangs-URL {url}"
@ -936,7 +936,7 @@ msgstr "Löschen"
msgid "Admin"
msgstr "Admin"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1621,9 +1621,8 @@ msgstr "App: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Einrichtung erneut ausführen"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1665,10 +1664,15 @@ msgstr "Testen"
msgid "Result"
msgstr "Ergebnis"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Diagnose"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1861,7 +1865,7 @@ msgstr "Status"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Domain"
@ -2264,12 +2268,12 @@ msgstr "Regeln für direktes Durchleiten existieren"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port -Name {name}({details}) für interne Netzwerke verfügbar"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port -Name {name} ({details}) für externe Netzwerke verfügbar"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port -Name {name} ({details}) für externe Netzwerke nicht verfügbar"
@ -3370,10 +3374,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Zertifikate"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Kann nicht testen: Es sind keine Domains konfiguriert."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Zertifikatstatus"
@ -3908,7 +3908,7 @@ msgstr ""
msgid "Address"
msgstr "Adresse"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3926,35 +3926,23 @@ msgstr ""
"Smartphones, Fernseher und Gaming-Systeme (wie PS3 und Xbox 360) oder "
"Anwendungen wie Totem und Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Medien-Streaming-Server"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Einfacher Medienserver"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Verzeichnis für Mediendateien"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Verzeichnis, in dem MiniDLNA Server nach Inhalten sucht. Alle "
"Unterverzeichnisse davon werden ebenfalls nach Mediendateien durchsucht. "
"Wenn Sie die Standardeinstellung ändern, stellen Sie sicher, dass das neue "
"Verzeichnis vorhanden und für den Benutzer \"minidlna\" lesbar ist. Alle "
"Benutzermedienverzeichnisse (\"/ home / username /\") funktionieren "
"normalerweise."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3972,11 +3960,7 @@ msgstr "Yaacc"
msgid "totem"
msgstr "Totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Das angegebene Verzeichnis ist nicht vorhanden."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Aktualisiertes Medienverzeichnis"
@ -5274,7 +5258,7 @@ msgstr "Verbindung {name} gelöscht."
msgid "Failed to delete connection: Connection not found."
msgstr "Konnte Verbindung nicht löschen: Verbindung nicht gefunden."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5283,33 +5267,33 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
#, fuzzy
#| msgid "Uninstalling an app is an experimental feature."
msgid "This app is experimental."
msgstr "Das Deinstallieren einer App ist eine experimentelle Funktion."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Weiter"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5319,17 +5303,34 @@ msgstr ""
msgid "Not set"
msgstr "Hostname gesetzt"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Serverdomain"
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"Wird von MediaWiki verwendet, um URLs zu generieren, die auf das Wiki "
"verweisen, z.B. in der Fußzeile, in Feeds und E-Mails. Beispiele: "
"\"myfreedombox.example.org\" oder \"example.onion\"."
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Administrator-Passwort"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
@ -5347,13 +5348,13 @@ msgstr ""
"<strong>10 Zeichen</strong> lang sein. Lassen Sie das Feld leer, bleibt das "
"derzeitige Passwort bestehen."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default zone is external"
msgid "Default phone region"
msgstr "Standard-Zone ist extern"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8717,67 +8718,103 @@ msgstr "Paket {package_expression} ist nicht zur Installation verfügbar"
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Paket {package_name} ist die aktuellste Version ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "Installation läuft"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "herunterladen"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "Medienwechsel"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "Konfigurationsdatei: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Zeitüberschreitung beim Warten auf den Paket-Manager"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Installation der App"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Aktualisieren der App"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Fehler bei der Installation der App: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Fehler beim Aktualisieren der App: {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Fehler beim Aktualisieren der App: {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "App installiert."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "App aktualisiert"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Aktualisieren der App"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Fehler bei der Deinstallation der App: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "App aktualisiert"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Deinstallation der App"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Fehler bei der Deinstallation der App: {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "App deinstalliert."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Aktualisieren von App-Paketen"
@ -9152,6 +9189,10 @@ msgstr "Aktualisieren"
msgid "Backup"
msgstr "Sicherungskopie"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Einrichtung erneut ausführen"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -9183,6 +9224,29 @@ msgstr "vor der Deinstallation von {app_id}"
msgid "Gujarati"
msgstr "Gujarati"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Kann nicht testen: Es sind keine Domains konfiguriert."
#~ msgid "Media streaming server"
#~ msgstr "Medien-Streaming-Server"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Verzeichnis, in dem MiniDLNA Server nach Inhalten sucht. Alle "
#~ "Unterverzeichnisse davon werden ebenfalls nach Mediendateien durchsucht. "
#~ "Wenn Sie die Standardeinstellung ändern, stellen Sie sicher, dass das "
#~ "neue Verzeichnis vorhanden und für den Benutzer \"minidlna\" lesbar ist. "
#~ "Alle Benutzermedienverzeichnisse (\"/ home / username /\") funktionieren "
#~ "normalerweise."
#~ msgid "Specified directory does not exist."
#~ msgstr "Das angegebene Verzeichnis ist nicht vorhanden."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Konfiguration der Speicherauszüge aktualisiert"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +26,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -133,12 +133,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -843,7 +843,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1447,8 +1447,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1488,10 +1487,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1649,7 +1653,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -1997,12 +2001,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2920,10 +2924,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3361,7 +3361,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3372,28 +3372,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3412,11 +3406,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4540,7 +4530,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4549,29 +4539,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4579,15 +4569,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4595,11 +4592,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7427,67 +7424,97 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#, python-brace-format
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:78
#, python-brace-format
msgid "Error updating app: {error}"
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:82
msgid "App installed."
#: setup.py:81 setup.py:151
#, python-brace-format
msgid "Error repairing app: {error}"
msgstr ""
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr ""
#: setup.py:88
msgid "App installed."
msgstr ""
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, python-brace-format
msgid "Error running diagnostics: {error}"
msgstr ""
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr ""
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr ""
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr ""
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7820,6 +7847,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,29 +28,29 @@ msgstr ""
msgid "FreedomBox"
msgstr "Freedombox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Το πρόγραμμα {service_name} είναι ενεργοποιημένο"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
"Το πρόγραμμα είναι προσβάσιμο στο πρωτόκολλο {kind} στη διεύθυνση "
"{listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Το πρόγραμμα είναι προσβάσιμο στο πρωτόκολλο {kind} στη θύρα {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Συνδεθείτε στη διεύθυνση {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Δεν είναι δυνατή η σύνδεση στη διεύθυνση {host}:{port}"
@ -151,12 +151,12 @@ msgstr "Διακομιστής Διαδικτύου (Web Server)"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Εφαρμογή Διαδικτύου (Πλίνθος)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Πρόσβαση διεύθυνσης {url} στο πρωτόκολλο tcp {kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Πρόσβαση στη διεύθυνση URL {url}"
@ -949,7 +949,7 @@ msgstr "Διαγραφή"
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1661,11 +1661,8 @@ msgstr "Εφαρμογή: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Έναρξη εγκατάστασης"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1713,10 +1710,15 @@ msgstr "Τεστ"
msgid "Result"
msgstr "Αποτέλεσμα"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Διαγνωστικός έλεγχος"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1926,7 +1928,7 @@ msgstr "Κατάσταση"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Όνομα διαδικτύου"
@ -2333,12 +2335,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "Θύρα {name} ({details}) διαθέσιμη για εσωτερικά δίκτυα"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Η θύρα {name} ({details}) είναι διαθέσιμη για εξωτερικά δίκτυα"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Η θύρα {name} ({details}) δεν είναι διαθέσιμη για εξωτερικά δίκτυα"
@ -3446,10 +3448,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Πιστοποιητικά"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Κατάσταση πιστοποιητικού"
@ -4003,7 +4001,7 @@ msgstr ""
msgid "Address"
msgstr "Διεύθυνση"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -4022,34 +4020,23 @@ msgstr ""
"βίντεο παιχνιδιών (όπως το PS3 και το Xbox 360) ή εφαρμογές όπως το Totem "
"και Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Διακομιστής ροής πολυμέσων"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Απλός διακομιστής πολυμέσων"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Κατάλογος αρχείων πολυμέσων"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Κατάλογος που o διακομιστής MiniDLNA θα διαβάσει για το περιεχόμενο. Όλοι οι "
"δευτερεύοντες κατάλογοι αυτού του είδους θα σαρωθούν επίσης για αρχεία "
"πολυμέσων. Εάν αλλάξετε την προεπιλογή, βεβαιωθείτε ότι ο νέος κατάλογος "
"υπάρχει και είναι αναγνώσιμος από το χρήστη \"minidlna\". Οι κατάλογοι "
"πολυμέσων χρήστών (\"/home/όνομα-χρήστη/\") συνήθως λειτουργούν."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -4067,11 +4054,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Ο καθορισμένος κατάλογος δεν υπάρχει."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "O κατάλογος πολυμέσων ενημερώθηκε"
@ -5325,7 +5308,7 @@ msgstr "Η σύνδεση {name} διαγράφηκε."
msgid "Failed to delete connection: Connection not found."
msgstr "Απέτυχε η διαγραφή της σύνδεσης: η σύνδεση δεν βρέθηκε."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5334,31 +5317,31 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Επόμενο"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5368,17 +5351,26 @@ msgstr ""
msgid "Not set"
msgstr "To όνομα του υπολογιστη ρυθμίστηκε επιτυχώς"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Όνομα διαδικτύου διακομιστή"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Κωδικός Πρόσβασης Διαχειριστή"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). Leave "
@ -5393,13 +5385,13 @@ msgstr ""
"wiki. Αφήστε αυτό το πεδίο κενό για να διατηρήσετε τον τρέχοντα κωδικό "
"πρόσβασης."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default Skin"
msgid "Default phone region"
msgstr "Προεπιλεγμένη εμφάνιση"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8868,82 +8860,118 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "Εγκαθίσταται"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "Λήψη"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "Αλλαγή μέσου"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "αρχείο ρυθμίσεων: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "Εγκαταστήσετε Εφαρμογές"
#: setup.py:41
#: setup.py:44
#, fuzzy
#| msgid "Updating..."
msgid "Updating app"
msgstr "Eνημερώνεται..."
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Σφάλμα κατά την εγκατάσταση της εφαρμογής: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Σφάλμα κατά την εγκατάσταση της εφαρμογής: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Σφάλμα κατά την εγκατάσταση της εφαρμογής: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Η εφαρμογή εγκαταστάθηκε."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "Τελευταία ενημέρωση"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating..."
msgid "Repairing app"
msgstr "Eνημερώνεται..."
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Σφάλμα κατά την εγκατάσταση της εφαρμογής: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "Τελευταία ενημέρωση"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "Εγκαταστήσετε Εφαρμογές"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Σφάλμα κατά την εγκατάσταση της εφαρμογής: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Η εφαρμογή εγκαταστάθηκε."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -9338,6 +9366,12 @@ msgstr "Ενημερωμένη έκδοση"
msgid "Backup"
msgstr "Αντίγραφα ασφαλείας"
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Έναρξη εγκατάστασης"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -9370,6 +9404,25 @@ msgstr ""
msgid "Gujarati"
msgstr "Gujarati"
#~ msgid "Media streaming server"
#~ msgstr "Διακομιστής ροής πολυμέσων"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Κατάλογος που o διακομιστής MiniDLNA θα διαβάσει για το περιεχόμενο. Όλοι "
#~ "οι δευτερεύοντες κατάλογοι αυτού του είδους θα σαρωθούν επίσης για αρχεία "
#~ "πολυμέσων. Εάν αλλάξετε την προεπιλογή, βεβαιωθείτε ότι ο νέος κατάλογος "
#~ "υπάρχει και είναι αναγνώσιμος από το χρήστη \"minidlna\". Οι κατάλογοι "
#~ "πολυμέσων χρήστών (\"/home/όνομα-χρήστη/\") συνήθως λειτουργούν."
#~ msgid "Specified directory does not exist."
#~ msgstr "Ο καθορισμένος κατάλογος δεν υπάρχει."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Η ρύθμιση παραμέτρων των στιγμιότυπων αποθήκευσης Ενημερώθηκε"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"PO-Revision-Date: 2024-04-10 04:54+0000\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-04-24 07:07+0000\n"
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/freedombox/"
"freedombox/es/>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Generator: Weblate 5.5.1-dev\n"
#: config.py:103
#, python-brace-format
@ -28,27 +28,27 @@ msgstr "La configuración fija {etc_path} está configurada correctamente"
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "{service_name} se está ejecutando"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Escuchando en el puerto {kind} {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Escuchando en el puerto {port} {kind}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Conectar a {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "No se pudo conectar a {host}:{port}"
@ -143,12 +143,12 @@ msgstr "Servidor Web"
msgid "{box_name} Web Interface (Plinth)"
msgstr "Interfaz web (Plinth) de {box_name}"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Acceso a {url} en tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Acceso a {url}"
@ -927,7 +927,7 @@ msgstr "Eliminar"
msgid "Admin"
msgstr "Admin"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1611,9 +1611,8 @@ msgstr "Aplicación: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Volver a ejecutar la configuración"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1655,10 +1654,15 @@ msgstr "Test"
msgid "Result"
msgstr "Resultado"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Test de diagnóstico"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1845,7 +1849,7 @@ msgstr "Estado"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Dominio"
@ -2244,12 +2248,12 @@ msgstr "Existen normas de transferencia directa"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Puerto {name} ({details}) disponible para redes internas"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Puerto {name} ({details}) disponible para redes externas"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Puerto {name} ({details}) no disponible para redes externas"
@ -3332,10 +3336,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Certificados"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "No puedo probar: No hay dominios configurados."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Estado del certificado"
@ -3864,7 +3864,7 @@ msgstr ""
msgid "Address"
msgstr "Dirección"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3881,33 +3881,23 @@ msgstr ""
"reproductores portátiles, teléfonos móviles, televisores, consolas como PS3 "
"y Xbox o aplicaciones como Totem y Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Servidor de emisión multimedia"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Servidor multimedia básico"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Directorio de archivos multimedia"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Es la carpeta en el que MiniDLNA buscará los contenidos, incluyendo las "
"subcarpetas. Si modifica su valor asegúrese de que la nueva carpeta existe y "
"es accesible el usuario \"minidlna\". Se pueden usar carpetas en el "
"directorio del usuario (\"/home/username\")."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3925,11 +3915,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "Totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "La carpeta especificada no existe."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Carpeta multimedia actualizada"
@ -5203,7 +5189,7 @@ msgstr "Conexión {name} eliminada."
msgid "Failed to delete connection: Connection not found."
msgstr "Ha fallado la eliminación de la conexión: no se encontró."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5217,51 +5203,74 @@ msgstr ""
"aplicaciones cliente para ordenadores de sobremesa y clientes móviles. El "
"servidor Nextcloud proporciona una interfaz web bien integrada."
#: modules/nextcloud/__init__.py:25
#, fuzzy
#| msgid "All users of FreedomBox can use Nextcloud."
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr "Todos los usuarios de FreedomBox pueden utilizar Nextcloud."
msgstr ""
"Todos los usuarios de FreedomBox pueden utilizar Nextcloud. Para realizar "
"tareas administrativas "
#: modules/nextcloud/__init__.py:29
#, python-brace-format
#: modules/nextcloud/__init__.py:34
#, fuzzy, python-brace-format
#| msgid ""
#| "Please note that Nextcloud is installed and run inside a container "
#| "provided by the Nextcloud project. Security, quality, privacy and legal "
#| "reviews are done by the upstream project and not by Debian/{box_name}. "
#| "Updates are performed following an independent cycle."
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
"Ten en cuenta que Nextcloud se instala y ejecuta dentro de un contenedor "
"proporcionado por el proyecto Nextcloud. Las revisiones de seguridad, "
"calidad, privacidad y legales las realiza el proyecto original y no Debian/"
"{box_name} . Las actualizaciones se realizan siguiendo un ciclo "
"independiente."
#: modules/nextcloud/__init__.py:35
#, fuzzy
#| msgid "Uninstalling an app is an experimental feature."
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr "Desinstalar una aplicación es una función experimental."
msgstr "Esta aplicación es experimental."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr "Nextcloud"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr "Almacenamiento de archivos y colaboración"
#: modules/nextcloud/forms.py:19
#, fuzzy
#| msgid "Hostname set"
msgid "Not set"
msgstr "Asignar nombre de anfitrión"
msgstr "No establecido"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Dominio del servidor"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr "Ejemplos: \"myfreedombox.example.org\" o \"example.onion\"."
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"Lo usa MediaWiki para generar URLs que apunten al wiki como piés de página, "
"feeds y enlaces desde e-mail. Ejemplos: \"myfreedombox.ejemplo.org\" o "
"\"ejemplo.onion\"."
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr "Contraseña del administrador"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -5273,11 +5282,11 @@ msgstr ""
"mínima requerida es <strong>10 caracteres</strong>. Deje este campo en "
"blanco para conservar la contraseña actual."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr "Región telefónica por defecto"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -5287,8 +5296,7 @@ msgstr ""
#: modules/nextcloud/views.py:53
msgid "Password update failed. Please choose a stronger password."
msgstr ""
"Error en la actualización de la contraseña. Elija una contraseña más segura."
msgstr "Error al actualizar la contraseña. Elija una contraseña más segura."
#: modules/openvpn/__init__.py:20
#, python-brace-format
@ -8584,67 +8592,103 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "El paquete {package_name} es la última versión ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "instalando"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "descargando"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "cambio de medio"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "archivo de configuración: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Tiempo máximo esperando al administrador de paquetes"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Instalando app"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Actualizando app"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Error al instalar la app: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Error al actualizar la app: {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Error al actualizar la app: {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "App instalada."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "App actualizada"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Actualizando app"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Error desinstalando la aplicación: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "App actualizada"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Instalando app"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Error desinstalando la aplicación: {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "Aplicación desinstalada."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Actualizando los paquetes de la app"
@ -9015,6 +9059,10 @@ msgstr "Actualización"
msgid "Backup"
msgstr "Copia de seguridad"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Volver a ejecutar la configuración"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -9046,6 +9094,30 @@ msgstr "antes de desinstalar {app_id}"
msgid "Gujarati"
msgstr "Gujarati"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "No puedo probar: No hay dominios configurados."
#~ msgid "Media streaming server"
#~ msgstr "Servidor de emisión multimedia"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Es la carpeta en el que MiniDLNA buscará los contenidos, incluyendo las "
#~ "subcarpetas. Si modifica su valor asegúrese de que la nueva carpeta "
#~ "existe y es accesible el usuario \"minidlna\". Se pueden usar carpetas en "
#~ "el directorio del usuario (\"/home/username\")."
#~ msgid "Specified directory does not exist."
#~ msgstr "La carpeta especificada no existe."
#~ msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#~ msgstr "Ejemplos: \"myfreedombox.example.org\" o \"example.onion\"."
#~ msgid "To perform administrative actions, use the "
#~ msgstr "Para realizar acciones administrativas, utilice "

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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/"
@ -29,27 +29,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "سرویس {service_name} در حال اجراست"
#: daemon.py:218
#: daemon.py:222
#, fuzzy, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "در حال گوش دادن به پورت {kind} در {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, fuzzy, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "در حال گوش دادن به پورت {kind} یعنی {port}"
#: daemon.py:291
#: daemon.py:296
#, fuzzy, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "اتصال به {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, fuzzy, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "نمی‌توان به {host}:{port} وصل شد"
@ -145,12 +145,12 @@ msgstr "سرور وب"
msgid "{box_name} Web Interface (Plinth)"
msgstr "رابط وب {box_name} (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, fuzzy, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "دسترسی به نشانی {url} در tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, fuzzy, python-brace-format
msgid "Access URL {url}"
msgstr "دسترسی به نشانی {url}"
@ -924,7 +924,7 @@ msgstr "پاک‌کردن"
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1614,8 +1614,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1659,10 +1658,15 @@ msgstr "آزمون"
msgid "Result"
msgstr "نتیجه‌ها"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "آزمون عیب‌یابی"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1868,7 +1872,7 @@ msgstr "وضعیت"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "دامنه"
@ -2259,12 +2263,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3310,10 +3314,6 @@ msgstr "گواهی دیجیتال (Let's Encrypt)"
msgid "Certificates"
msgstr "وضعیت گواهی دیجیتال"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "وضعیت گواهی دیجیتال"
@ -3800,7 +3800,7 @@ msgstr ""
msgid "Address"
msgstr "نشانی"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3811,28 +3811,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3851,11 +3845,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -5089,7 +5079,7 @@ msgstr "اتصال {name} پاک شد."
msgid "Failed to delete connection: Connection not found."
msgstr "پاک‌کردن اتصال شکست خورد: اتصال پیدا نشد."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5098,29 +5088,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5130,17 +5120,26 @@ msgstr ""
msgid "Not set"
msgstr "نام میزبان تنظیم شد"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Invalid server name"
msgid "Override domain"
msgstr "نام کاربری معتبر نیست"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Account"
msgid "Administrator password"
msgstr "حساب مدیر"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -5148,13 +5147,13 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default"
msgid "Default phone region"
msgstr "پیش‌فرض"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8194,76 +8193,112 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "خطا هنگام نصب برنامه: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "خطا هنگام نصب برنامه: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "خطا هنگام نصب برنامه: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
msgid "App installed."
msgstr "برنامه نصب شد."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "آخرین به‌روزرسانی"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Shared"
msgid "Repairing app"
msgstr "مشترک"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "خطا هنگام نصب برنامه: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "آخرین به‌روزرسانی"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Error installing application: {error}"
msgid "Uninstalling app"
msgstr "خطا هنگام نصب برنامه: {error}"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "خطا هنگام نصب برنامه: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
msgid "App uninstalled."
msgstr "برنامه نصب شد."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -8610,6 +8645,10 @@ msgstr ""
msgid "Backup"
msgstr "ساختن اتصال"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -8840,11 +8879,6 @@ msgstr ""
#~ msgid "RoundCube availability"
#~ msgstr "دامنه‌های موجود"
#, fuzzy
#~| msgid "Invalid server name"
#~ msgid "Enter a valid domain"
#~ msgstr "نام کاربری معتبر نیست"
#, fuzzy
#~| msgid "Invalid server name"
#~ msgid "Enter a valid destination"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Plinth 0.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,29 +27,29 @@ msgstr ""
msgid "FreedomBox"
msgstr "FREEDOMBOX"
#: daemon.py:122
#: daemon.py:124
#, fuzzy, python-brace-format
#| msgid "Service discovery server is running"
msgid "Service {service_name} is running"
msgstr "SERVICE DISCOVERY SERVER IS RUNNING"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "LISTENING ON {kind} PORT {listen_address}:{port}"
# LISTENING ON {kind} PORT {port}
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "LISTENING ON {kind} PORT {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "CONNECT TO {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "CANNOT CONNECT TO {host}:{port}"
@ -150,12 +150,12 @@ msgstr "WEB SERVER"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} WEB INTERFACE (PLINTH)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "ACCESS URL {url} ON TCP{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "ACCESS URL {url}"
@ -968,7 +968,7 @@ msgstr "DELETE"
msgid "Admin"
msgstr "ADMIN"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1675,11 +1675,8 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "START SETUP"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
#, fuzzy
@ -1722,10 +1719,15 @@ msgstr "TEST"
msgid "Result"
msgstr "RESULT"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "DIAGNOSTIC TEST"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, fuzzy, python-brace-format
#| msgid ""
@ -1956,7 +1958,7 @@ msgstr "STATUS"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "DOMAIN"
@ -2368,13 +2370,13 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "SERVICE DISCOVERY SERVER IS NOT RUNNING"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, 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"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3441,10 +3443,6 @@ msgstr "CERTIFICATES (LET'S ENCRYPT)"
msgid "Certificates"
msgstr "CERTIFICATE STATUS"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "CERTIFICATE STATUS"
@ -3950,7 +3948,7 @@ msgstr ""
msgid "Address"
msgstr "ADDRESS"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3961,30 +3959,24 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
#, fuzzy
#| msgid "Mumble Voice Chat Server"
msgid "Simple Media Server"
msgstr "MUMBLE VOICE CHAT SERVER"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -4003,11 +3995,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -5252,7 +5240,7 @@ msgstr "CONNECTION {name} DELETED."
msgid "Failed to delete connection: Connection not found."
msgstr "FAILED TO DELETE CONNECTION: CONNECTION NOT FOUND."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5261,31 +5249,31 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "NEXT"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5295,17 +5283,26 @@ msgstr ""
msgid "Not set"
msgstr "HOSTNAME SET"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "SERVER DOMAIN"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Account"
msgid "Administrator password"
msgstr "ADMINISTRATOR ACCOUNT"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -5313,13 +5310,13 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default"
msgid "Default phone region"
msgstr "DEFAULT"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8680,85 +8677,121 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
#, fuzzy
#| msgid "Installation"
msgid "installing"
msgstr "INSTALLATION"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
#, fuzzy
#| msgid "Setting unchanged"
msgid "media change"
msgstr "SETTING UNCHANGED"
#: package.py:425
#: package.py:426
#, fuzzy, python-brace-format
#| msgid "Configuration"
msgid "configuration file: {file}"
msgstr "CONFIGURATION"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install"
msgid "Installing app"
msgstr "INSTALL"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing packages: {string} {details}"
msgid "Error installing app: {error}"
msgstr "ERROR INSTALLING PACKAGES: {string} {details}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing packages: {string} {details}"
msgid "Error repairing app: {error}"
msgstr "ERROR INSTALLING PACKAGES: {string} {details}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing packages: {string} {details}"
msgid "Error updating app: {error}"
msgstr "ERROR INSTALLING PACKAGES: {string} {details}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Applications"
msgid "App installed."
msgstr "APPLICATIONS"
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "LAST UPDATE"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Enable Shaarli"
msgid "Repairing app"
msgstr "ENABLE SHAARLI"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing packages: {string} {details}"
msgid "Error running diagnostics: {error}"
msgstr "ERROR INSTALLING PACKAGES: {string} {details}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "LAST UPDATE"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install"
msgid "Uninstalling app"
msgstr "INSTALL"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing packages: {string} {details}"
msgid "Error uninstalling app: {error}"
msgstr "ERROR INSTALLING PACKAGES: {string} {details}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Applications"
msgid "App uninstalled."
msgstr "APPLICATIONS"
#: setup.py:493
#: setup.py:581
#, fuzzy
#| msgid "Upgrade Packages"
msgid "Updating app packages"
@ -9145,6 +9178,12 @@ msgstr "UPDATE URL"
msgid "Backup"
msgstr "PAGEKITE ACCOUNT"
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "START SETUP"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-04-02 18:01+0000\n"
"Last-Translator: John Doe <thraex@numericable.fr>\n"
"Language-Team: French <https://hosted.weblate.org/projects/freedombox/"
@ -28,27 +28,27 @@ msgstr "La configuration statique {etc_path} est correctement configurée"
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Le service {service_name} est actif"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Écoute sur le port {kind} {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Écoute sur le port {kind} {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Connexion à {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Impossible de se connecter à {host}:{port}"
@ -141,12 +141,12 @@ msgstr "Serveur web"
msgid "{box_name} Web Interface (Plinth)"
msgstr "Interface web de la {box_name} (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Accès à lURL {url} via tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Accès à lURL {url}"
@ -933,7 +933,7 @@ msgstr "Suppression"
msgid "Admin"
msgstr "Admin"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1632,9 +1632,8 @@ msgstr "Appli : %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Exécuter à nouveau la configuration"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1676,10 +1675,15 @@ msgstr "Test"
msgid "Result"
msgstr "Résultat"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Test de diagnostic"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1875,7 +1879,7 @@ msgstr "État"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Domaine"
@ -2277,12 +2281,12 @@ msgstr "Des règles de passage direct existent"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) disponible pour les réseaux internes"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) disponible pour les réseaux externes"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) non disponible pour les réseaux externes"
@ -3385,10 +3389,6 @@ msgstr "Lets Encrypt"
msgid "Certificates"
msgstr "Certificats de chiffrement"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Test impossible : aucun domaine nest configuré."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "État du certificat"
@ -3927,7 +3927,7 @@ msgstr ""
msgid "Address"
msgstr "Adresse"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3945,35 +3945,23 @@ msgstr ""
"portables, les smartphones, les télévisions et les systèmes de jeu (comme la "
"PS3 ou la Xbox 360) ainsi que les applications telles que Totem ou Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Serveur de streaming de médias"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Serveur de médias simple"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Répertoire des fichiers multimédia"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Répertoire utilisé par MiniDLNA pour trouver les contenus. Tous les sous-"
"répertoires sont également analysés à la recherche de fichiers multimédia. "
"Si vous choisissez un répertoire autre que celui par défaut, assurez-vous "
"quil existe et que lutilisateur « minidlna » puisse le lire. En général "
"cela fonctionne si vous prenez un répertoire utilisateur (\"/home/"
"utilisateur\") comme répertoire de médias."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3991,11 +3979,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Le répertoire indiqué nexiste pas."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Répertoire multimédia mis à jour"
@ -5301,7 +5285,7 @@ msgstr "Connexion {name} supprimée."
msgid "Failed to delete connection: Connection not found."
msgstr "Échec de suppression de la connexion : connexion introuvable."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5310,34 +5294,34 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
#, fuzzy
#| msgid "Uninstalling an app is an experimental feature."
msgid "This app is experimental."
msgstr ""
"La désinstallation dapplications est une fonctionnalité expérimentale."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Suivant"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5347,17 +5331,34 @@ msgstr ""
msgid "Not set"
msgstr "Nom de machine configuré"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Domaine du serveur"
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"Utilisé par MediaWiki pour engendrer des URL qui pointent vers le wiki comme "
"dans les pieds de pages, fils et courriels. Exemples : « mafreedombox."
"exemple.org » ou « exemple.onion »."
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Mot de passe administrateur"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
@ -5375,13 +5376,13 @@ msgstr ""
"requise est de <strong>10 caractères</strong>. Laissez ce champ vide pour "
"conserver le mot de passe actuel."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default zone is external"
msgid "Default phone region"
msgstr "La zone par défaut est externe"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8763,67 +8764,103 @@ msgstr "Le paquet {package_expression} nest pas disponible à linstallatio
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Le paquet {package_name} est à la dernière version ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "installation en cours"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "téléchargement en cours"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "changement de support"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "fichier de configuration : {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Aucune réponse du gestionnaire de paquets"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Installation de lapplication"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Mise à jour de lapplication"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Erreur lors de linstallation de lappli : {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Erreur lors de la mise à jour de lappli : {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Erreur lors de la mise à jour de lappli : {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "Application installée."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "Application mise à jour"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Mise à jour de lapplication"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Erreur lors de la désinstallation de lappli : {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "Application mise à jour"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Désinstallation de lapplication"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Erreur lors de la désinstallation de lappli : {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "Application désinstallée."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Mise à jour des paquets de lapplication"
@ -9200,6 +9237,10 @@ msgstr "Mettre à jour"
msgid "Backup"
msgstr "Sauvegarder"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Exécuter à nouveau la configuration"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -9231,6 +9272,29 @@ msgstr "avant la désinstallation de {app_id}"
msgid "Gujarati"
msgstr "Gujarati"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Test impossible : aucun domaine nest configuré."
#~ msgid "Media streaming server"
#~ msgstr "Serveur de streaming de médias"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Répertoire utilisé par MiniDLNA pour trouver les contenus. Tous les sous-"
#~ "répertoires sont également analysés à la recherche de fichiers "
#~ "multimédia. Si vous choisissez un répertoire autre que celui par défaut, "
#~ "assurez-vous quil existe et que lutilisateur « minidlna » puisse le "
#~ "lire. En général cela fonctionne si vous prenez un répertoire utilisateur "
#~ "(\"/home/utilisateur\") comme répertoire de médias."
#~ msgid "Specified directory does not exist."
#~ msgstr "Le répertoire indiqué nexiste pas."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Configuration des instantanés de disque mise à jour"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Escoitando no porto {kind} {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Escoitando no porto {kind} {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Conectar a {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Non é posíbel conectar con {host}:{port}"
@ -141,12 +141,12 @@ msgstr "Servidor web"
msgid "{box_name} Web Interface (Plinth)"
msgstr "Interface web (Plinth) de {box_name}"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "URL de acceso {url} en tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "URL de acceso {url}"
@ -851,7 +851,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1455,8 +1455,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1496,10 +1495,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1657,7 +1661,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2007,12 +2011,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2932,10 +2936,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3377,7 +3377,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3388,28 +3388,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3428,11 +3422,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4560,7 +4550,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4569,29 +4559,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4599,17 +4589,24 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Enable application"
msgid "Administrator password"
msgstr "Activar o aplicativo"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4617,11 +4614,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7465,76 +7462,108 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Produciuse un erro ao instalar o aplicativo: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Produciuse un erro ao instalar o aplicativo: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Produciuse un erro ao instalar o aplicativo: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Aplicativo instalado."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Produciuse un erro ao instalar o aplicativo: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Error installing application: {error}"
msgid "Uninstalling app"
msgstr "Produciuse un erro ao instalar o aplicativo: {error}"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Produciuse un erro ao instalar o aplicativo: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Aplicativo instalado."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7869,6 +7898,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "ફ્રિડમબોક્ષ"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "સાંભળે છે {kind} પોર્ટ {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "સાંભળે છે {kind} પોર્ટ {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} ને સંપર્ક કરો"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} નો સંપર્ક નથી સાધી શકતા"
@ -144,12 +144,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "ઍક્સેસ URL {url} tcp પર {kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "ઍક્સેસ URL {url}"
@ -892,7 +892,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1564,8 +1564,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1609,10 +1608,15 @@ msgstr "પરીક્ષણ"
msgid "Result"
msgstr "પરિણામ"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "તપાસકીય પરિક્ષણ"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, fuzzy, python-brace-format
msgid ""
@ -1811,7 +1815,7 @@ msgstr "સ્થિતિ"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2208,12 +2212,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3157,10 +3161,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3630,7 +3630,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3641,28 +3641,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3681,11 +3675,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4835,7 +4825,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4844,29 +4834,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4876,17 +4866,26 @@ msgstr ""
msgid "Not set"
msgstr "હોસ્ટનું નામ સ્થાપિત કર્યું"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Invalid server name"
msgid "Override domain"
msgstr "અમાન્ય સર્વર નામ"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Server Administration"
msgid "Administrator password"
msgstr "સર્વર સંચાલન"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4894,11 +4893,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7820,80 +7819,114 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "એપ્લિકેશન્સ ઇન્સ્ટોલ કરો"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "એપ્લીકેશન પ્રસ્થાપિત થઇ ગઈ છે."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "છેલ્લો સુધારો"
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "છેલ્લો સુધારો"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "એપ્લિકેશન્સ ઇન્સ્ટોલ કરો"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "એપ્લીકેશન પ્રસ્થાપિત થઇ ગઈ છે."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -8243,6 +8276,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -8404,11 +8441,6 @@ msgstr ""
#~ msgid "Dynamic DNS Status"
#~ msgstr "ડાયનેમિક DNS સ્થિતિ"
#, fuzzy
#~| msgid "Invalid server name"
#~ msgid "Enter a valid domain"
#~ msgstr "અમાન્ય સર્વર નામ"
#, fuzzy
#~| msgid "Invalid server name"
#~ msgid "Enter a valid destination"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2023-10-19 06:30+0000\n"
"Last-Translator: Shaik <arifashaik807@gmail.com>\n"
"Language-Team: Hindi <https://hosted.weblate.org/projects/freedombox/"
@ -28,28 +28,28 @@ msgstr ""
msgid "FreedomBox"
msgstr "फ्रीडमबोएक्स"
#: daemon.py:122
#: daemon.py:124
#, fuzzy, python-brace-format
#| msgid "Service <em>%(service_name)s</em> is running."
msgid "Service {service_name} is running"
msgstr "सर्विस <em>%(service_name)s</em> चल रहा है."
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} में सुन कर पोर्ट {listen_address} :{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} में सुन कर पोर्ट{port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} से जुड़े"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} से नहीं जोड़ सखता"
@ -147,12 +147,12 @@ msgstr "वेब सर्वर"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} वेब इंटरफेस (प्लिंथ)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "इस यूआरएल का अपयोग करें {url} टीसीपी पर {kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "इस यूआरएल का अपयोग करें {url}"
@ -948,7 +948,7 @@ msgstr "हटाईये"
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1657,11 +1657,8 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "सटअप शुरु करें"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
#, fuzzy
@ -1704,10 +1701,15 @@ msgstr "परीक्षा"
msgid "Result"
msgstr "परिणाम"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "निदान परिक्षा"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1907,7 +1909,7 @@ msgstr "स्थिति"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "डोमेन"
@ -2316,13 +2318,13 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "<em>%(service_name)s</em> सिर्फ आंतरिक नेटवर्क्स पर उपलब्ध है."
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, 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> सिर्फ आंतरिक नेटवर्क्स पर उपलब्ध है."
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3378,10 +3380,6 @@ msgstr "लेटस एंक्रिप्ट"
msgid "Certificates"
msgstr "प्रमाण पत्र"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "प्रमाणपत्र स्थिति"
@ -3903,7 +3901,7 @@ msgstr "अक्षम होने पर खिलाड़ियों न
msgid "Address"
msgstr "ऍड्रेस"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3914,28 +3912,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3954,11 +3946,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -5195,7 +5183,7 @@ msgstr "कनेक्शन {name} हटाया गया."
msgid "Failed to delete connection: Connection not found."
msgstr "कनेक्शन हटाने में विफल: कनेक्शन नहीं मिला."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5204,29 +5192,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5236,17 +5224,26 @@ msgstr ""
msgid "Not set"
msgstr "होस्ट नाम सेट हो गया"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "सर्वर डोमेन"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "व्यवस्थापक पासवर्ड"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). Leave "
@ -5260,13 +5257,13 @@ msgstr ""
"मीडियाविकी एेडमिन अकाउंट के लिये नया पासवर्ड सेट करें (एेडमिन). वर्तमान पासवर्ड रखने के "
"लिए इस फ़ील्ड को रिक्त छोड़ें."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default app set"
msgid "Default phone region"
msgstr "डिफ़ॉल्ट एेप सेट"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8650,80 +8647,116 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "इंस्टॉलिंग"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "डाउनलोडिंग"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "मीडिया बदलाव"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "कॉंफ़िगरेशन फ़ाइल: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "ऐप्लिकेशन इंस्टॉल करें"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "एप्लिकेशन नहीं इंस्टॉल जा सकता: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "एप्लिकेशन नहीं इंस्टॉल जा सकता: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "एप्लिकेशन नहीं इंस्टॉल जा सकता: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "एप्लिकेशन इंस्टॉल हो गया."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "अंतिम अपडेट"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Sharing"
msgid "Repairing app"
msgstr "शेयरिंग"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "एप्लिकेशन नहीं इंस्टॉल जा सकता: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "अंतिम अपडेट"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "ऐप्लिकेशन इंस्टॉल करें"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "एप्लिकेशन नहीं इंस्टॉल जा सकता: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "एप्लिकेशन इंस्टॉल हो गया."
#: setup.py:493
#: setup.py:581
#, fuzzy
#| msgid "Upgrade Packages"
msgid "Updating app packages"
@ -9100,6 +9133,12 @@ msgstr "अपडेट"
msgid "Backup"
msgstr "बैकअप"
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "सटअप शुरु करें"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "A szolgáltatás fut: {service_name}"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Figyelés {kind} porton: {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Figyelés {kind} porton: {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Csatlakozás ide: {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Nem lehet ide csatlakozni: {host}:{port}"
@ -143,12 +143,12 @@ msgstr "Webszerver"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} webes felület (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Hozzáférés a {url} URL-hez tcp{kind}-on keresztül"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Hozzáférés a {url} URL-hez"
@ -925,7 +925,7 @@ msgstr "Törlés"
msgid "Admin"
msgstr "Adminisztrál"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1625,11 +1625,8 @@ msgstr "Alkalmazás: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Beállítás elindítása"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1677,10 +1674,15 @@ msgstr "Teszt"
msgid "Result"
msgstr "Eredmény"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Ellenőrző teszt"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1873,7 +1875,7 @@ msgstr "Állapot"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Domain"
@ -2278,12 +2280,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "{name} port ({details}) elérhető a belső hálózaton"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "{name} port ({details}) elérhető a külső hálózaton"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "{name} port ({details}) nem érhető el külső hálózaton"
@ -3366,10 +3368,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Tanúsítványok"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Sikertelen tesztelés: Nincsenek konfigurált domainek."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Tanúsítvány állapot"
@ -3912,7 +3910,7 @@ msgstr "Ha le van tiltva, a játékosok nem fognak meghalni, ill. megsérülni."
msgid "Address"
msgstr "Cím"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3930,34 +3928,23 @@ msgstr ""
"médialejátszók, okostelefonok, televíziók és játékkonzolok (például "
"PlayStation és Xbox), vagy olyan alkalmazásokkal mint a totem és a Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Média streaming szerver"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Egyszerű médiaszerver"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Médiafájlok könyvtára"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Könyvtár, amelyet a MiniDLNA-szerver befog olvasni tartalomért. Ennek minden "
"alkönyvtára szintén át lesz vizsgálva médiafájlok után. Ha megváltoztatod az "
"alapértelmezést akkor győződj meg arról is, hogy az új könyvtár létezik és "
"olvasható a \"minidlna\" felhasználó által. Általában bármely felhasználói "
"médiakönyvtár (\"/home/felhasznalonev/\") működik."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3975,11 +3962,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "A megadott könyvtár nem létezik."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Médiakönyvtár frissítve"
@ -5268,7 +5251,7 @@ msgstr "Kapcsolat törölve: {name}."
msgid "Failed to delete connection: Connection not found."
msgstr "A kapcsolat törlése sikertelen, mivel nem található."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5277,31 +5260,31 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Következő"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5311,17 +5294,34 @@ msgstr ""
msgid "Not set"
msgstr "Állomásnév beállítva"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Szerver domain"
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"A MediaWiki a wikire mutató URL-ek létrehozására használja, például "
"láblécben, hírcsatornákban és e-mailekben. Példa: \"freedomboxom.pelda.org\" "
"or \"pelda.onion\"."
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Rendszergazdai jelszó"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
@ -5339,13 +5339,13 @@ msgstr ""
"karakterből</strong> kell állnia. Hagyd üresen ezt a mezőt, ha meg szeretnéd "
"tartani a jelenlegi jelszót."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default app set"
msgid "Default phone region"
msgstr "Alapértelmezett alkalmazás beállítva"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8700,82 +8700,118 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "A(z) {package_name} a legfrissebb verzió ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "telepítés"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "letöltés"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "adathordozó csere"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "konfigurációs fájl: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "Alkalmazások telepítése"
#: setup.py:41
#: setup.py:44
#, fuzzy
#| msgid "Updating..."
msgid "Updating app"
msgstr "Frissítés…"
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Hiba lépett fel az alkalmazás telepítésekor: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Hiba lépett fel az alkalmazás telepítésekor: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Hiba lépett fel az alkalmazás telepítésekor: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Alkalmazás telepítve."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "Legutolsó frissítés"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating..."
msgid "Repairing app"
msgstr "Frissítés…"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Hiba lépett fel az alkalmazás telepítésekor: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "Legutolsó frissítés"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "Alkalmazások telepítése"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Hiba lépett fel az alkalmazás telepítésekor: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Alkalmazás telepítve."
#: setup.py:493
#: setup.py:581
#, fuzzy
#| msgid "Upgrade Packages"
msgid "Updating app packages"
@ -9153,6 +9189,12 @@ msgstr "Frissítés"
msgid "Backup"
msgstr "Biztonsági mentések"
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Beállítás elindítása"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -9185,6 +9227,28 @@ msgstr ""
msgid "Gujarati"
msgstr "Gudzsaráti"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Sikertelen tesztelés: Nincsenek konfigurált domainek."
#~ msgid "Media streaming server"
#~ msgstr "Média streaming szerver"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Könyvtár, amelyet a MiniDLNA-szerver befog olvasni tartalomért. Ennek "
#~ "minden alkönyvtára szintén át lesz vizsgálva médiafájlok után. Ha "
#~ "megváltoztatod az alapértelmezést akkor győződj meg arról is, hogy az új "
#~ "könyvtár létezik és olvasható a \"minidlna\" felhasználó által. Általában "
#~ "bármely felhasználói médiakönyvtár (\"/home/felhasznalonev/\") működik."
#~ msgid "Specified directory does not exist."
#~ msgstr "A megadott könyvtár nem létezik."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Tárhelypillanatképek konfigurációja frissítve"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Indonesian (FreedomBox)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +23,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Layanan {service_name} sedang berjalan"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Mendengarkan pada {kind} port {listen_address}: {port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Mendengarkan {kind} port {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Terhubung ke {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Tidak dapat terhubung ke {host}:{port}"
@ -140,12 +140,12 @@ msgstr "Server Web"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Antarmuka Web (alas)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Akses URL {url} pada tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Akses URL {url}"
@ -915,7 +915,7 @@ msgstr "Hapus"
msgid "Admin"
msgstr "Admin"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1606,11 +1606,8 @@ msgstr "Aplikasi: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Jalankan pengaturan"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1658,10 +1655,15 @@ msgstr "Pengujian"
msgid "Result"
msgstr "Hasil"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Tes Diagnostik"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1867,7 +1869,7 @@ msgstr "Status"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Domain"
@ -2273,12 +2275,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) tersedia untuk jaringan internal"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) tersedia untuk jaringan eksternal"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) tidak tersedia untuk jaringan eksternal"
@ -3340,10 +3342,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Sertifikat"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Tidak dapat menguji: Tidak ada domain yang dikonfigurasi."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Status Sertifikat"
@ -3824,7 +3822,7 @@ msgstr ""
msgid "Address"
msgstr "Address"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3835,28 +3833,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3875,11 +3867,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -5005,7 +4993,7 @@ msgstr "Koneksi {name} dihapus."
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5014,29 +5002,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5046,17 +5034,26 @@ msgstr ""
msgid "Not set"
msgstr "Hostname set"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Domain peladen"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Kata Sandi Administrator"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -5064,11 +5061,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8034,80 +8031,116 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "memasang"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "mengunduh"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "Instal aplikasi"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Kesalahan pemasangan aplikasi: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Kesalahan pemasangan aplikasi: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Kesalahan pemasangan aplikasi: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Aplikasi telah terpasang."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "Pembaharuan Terakhir"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "preparing"
msgid "Repairing app"
msgstr "mempersiapkan"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Kesalahan pemasangan aplikasi: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "Pembaharuan Terakhir"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "Instal aplikasi"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Kesalahan pemasangan aplikasi: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Aplikasi telah terpasang."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -8453,6 +8486,12 @@ msgstr "Memperbarui"
msgid "Backup"
msgstr "Cadangan"
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Jalankan pengaturan"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -8485,6 +8524,9 @@ msgstr ""
msgid "Gujarati"
msgstr "Bahasa Gujarat"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Tidak dapat menguji: Tidak ada domain yang dikonfigurasi."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Konfigurasi snapshot penyimpanan diperbarui"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Il servizio {service_name} è in esecuzione"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "In ascolto sulla porta {kind}{listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "In ascolto sulla porta{port}:{kind}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Connessione a {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Impossibile connettersi a {host}:{port}"
@ -143,12 +143,12 @@ msgstr "Web Server"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Interfaccia Web (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "URL d'accesso {url} su TCP {kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "URL d'accesso {url}"
@ -912,7 +912,7 @@ msgstr "Cancella"
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1588,11 +1588,8 @@ msgstr "Applicazione: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Avvia setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1640,10 +1637,15 @@ msgstr "Test"
msgid "Result"
msgstr "Risultato"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Test Diagnostica"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1841,7 +1843,7 @@ msgstr "Stato"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
#, fuzzy
msgid "Domain"
msgstr "Dominio"
@ -2235,12 +2237,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "Porta {name} ({details}) disponibile per le reti interne"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Porta {name} ({details}) disponibile per reti esterne"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Porta {name} ({details}) non disponibile per reti esterne"
@ -3314,10 +3316,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Certificati"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Stato Certificato"
@ -3850,7 +3848,7 @@ msgstr ""
msgid "Address"
msgstr "Indirizzo"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3861,28 +3859,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3901,11 +3893,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -5081,7 +5069,7 @@ msgstr "Connessione {name} cancellata."
msgid "Failed to delete connection: Connection not found."
msgstr "Cancellazione connessione fallita: connessione non trovata."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5090,29 +5078,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5121,17 +5109,26 @@ msgstr ""
msgid "Not set"
msgstr "Imposta hostname"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Dominio server"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Password Amministratore"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). Leave "
@ -5145,13 +5142,13 @@ msgstr ""
"Imposta una nuova password per il profilo amministratore (admin) di "
"MediaWiki. Lascia vuoto questo campo per mantenere la password corrente."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default"
msgid "Default phone region"
msgstr "Default"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8118,80 +8115,114 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "Installa App"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Errore durante l'installazione dell'applicazione: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Errore durante l'installazione dell'applicazione: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Errore durante l'installazione dell'applicazione: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Applicazione installata."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "Ultimo aggiornamento"
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Errore durante l'installazione dell'applicazione: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "Ultimo aggiornamento"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "Installa App"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Errore durante l'installazione dell'applicazione: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Applicazione installata."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -8535,6 +8566,12 @@ msgstr ""
msgid "Backup"
msgstr "Backup"
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Avvia setup"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "サービス {service_name} は動作中です"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} port {listen_address}:{port} を 待受中"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} port {port} を待ち受け中"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} に接続する"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} に接続できません"
@ -135,12 +135,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -845,7 +845,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1449,8 +1449,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1490,10 +1489,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1651,7 +1655,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -1999,12 +2003,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2922,10 +2926,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3363,7 +3363,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3374,28 +3374,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3414,11 +3408,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4542,7 +4532,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4551,29 +4541,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4581,15 +4571,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4597,11 +4594,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7429,67 +7426,97 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#, python-brace-format
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:78
#, python-brace-format
msgid "Error updating app: {error}"
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:82
msgid "App installed."
#: setup.py:81 setup.py:151
#, python-brace-format
msgid "Error repairing app: {error}"
msgstr ""
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr ""
#: setup.py:88
msgid "App installed."
msgstr ""
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, python-brace-format
msgid "Error running diagnostics: {error}"
msgstr ""
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr ""
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr ""
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr ""
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7822,6 +7849,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "ಫ್ರೀಡಂಬಾಕ್ಸ್"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -135,12 +135,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -845,7 +845,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1449,8 +1449,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1490,10 +1489,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1651,7 +1655,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -1999,12 +2003,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2922,10 +2926,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3363,7 +3363,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3374,28 +3374,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3414,11 +3408,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4542,7 +4532,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4551,29 +4541,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4581,15 +4571,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4597,11 +4594,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7431,67 +7428,97 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#, python-brace-format
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:78
#, python-brace-format
msgid "Error updating app: {error}"
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:82
msgid "App installed."
#: setup.py:81 setup.py:151
#, python-brace-format
msgid "Error repairing app: {error}"
msgstr ""
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr ""
#: setup.py:88
msgid "App installed."
msgstr ""
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, python-brace-format
msgid "Error running diagnostics: {error}"
msgstr ""
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr ""
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr ""
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr ""
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7824,6 +7851,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +30,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -137,12 +137,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -847,7 +847,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1451,8 +1451,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1492,10 +1491,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1653,7 +1657,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2001,12 +2005,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2924,10 +2928,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3365,7 +3365,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3376,28 +3376,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3416,11 +3410,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4544,7 +4534,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4553,29 +4543,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4583,15 +4573,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4599,11 +4596,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7433,67 +7430,97 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#, python-brace-format
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:78
#, python-brace-format
msgid "Error updating app: {error}"
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:82
msgid "App installed."
#: setup.py:81 setup.py:151
#, python-brace-format
msgid "Error repairing app: {error}"
msgstr ""
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr ""
#: setup.py:88
msgid "App installed."
msgstr ""
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, python-brace-format
msgid "Error running diagnostics: {error}"
msgstr ""
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr ""
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr ""
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr ""
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7826,6 +7853,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +29,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -136,12 +136,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -846,7 +846,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1450,8 +1450,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1491,10 +1490,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1652,7 +1656,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2000,12 +2004,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2923,10 +2927,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3364,7 +3364,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3375,28 +3375,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3415,11 +3409,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4543,7 +4533,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4552,29 +4542,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4582,15 +4572,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4598,11 +4595,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7432,67 +7429,97 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#, python-brace-format
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:78
#, python-brace-format
msgid "Error updating app: {error}"
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:82
msgid "App installed."
#: setup.py:81 setup.py:151
#, python-brace-format
msgid "Error repairing app: {error}"
msgstr ""
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr ""
#: setup.py:88
msgid "App installed."
msgstr ""
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, python-brace-format
msgid "Error running diagnostics: {error}"
msgstr ""
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr ""
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr ""
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr ""
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7825,6 +7852,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-03-28 01:01+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/"
@ -36,27 +36,27 @@ msgstr "Statisk oppsett {etc_path} er korrekt satt opp"
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Tjenesten {service_name} kjører"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Lytter på {kind} port {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Lytter på {kind} port {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Koble til {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Klarer ikke koble til {host}:{port}"
@ -150,12 +150,12 @@ msgstr "Nett-tjener"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Vev-grensesnitt (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Kontakt nettadressen {url} på tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Kontakt nettadressen {url}"
@ -937,7 +937,7 @@ msgstr "Slett"
msgid "Admin"
msgstr "admin"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1629,11 +1629,8 @@ msgstr "Program: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Start oppsett"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
#, fuzzy
@ -1683,10 +1680,15 @@ msgstr "Test"
msgid "Result"
msgstr "Resultat"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Diagnostikktest"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1889,7 +1891,7 @@ msgstr "Status"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Domene"
@ -2299,12 +2301,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) tilgjengelig på interne nettverk"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) tilgjengelig på eksterne nettverk"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) er utilgjengelig for eksterne nettverk"
@ -3393,10 +3395,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Sertifikater"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Sertifikatsstatus"
@ -3928,7 +3926,7 @@ msgstr ""
msgid "Address"
msgstr "Adresse"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3946,34 +3944,24 @@ msgstr ""
"smartelefoner, fjernsynsapparater, og spillkonsoller (som PS3 og Xbox 360) "
"eller programmer som totem og Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Media-strømmetjener"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
#, fuzzy
msgid "Simple Media Server"
msgstr "Enkel mediatjener"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Katalog for media-filer"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Mappe MiniDLNA-tjeneren leser for innhold. Alle undermapper av denne vil "
"også bli skannet for mediafiler. Hvis du endrer forvalget, forsikre deg om "
"at den nye mappen finnes, og at den er lesbar for «minidlna»-brukeren. Alle "
"brukermediamapper (\"/home/brukernavn/\") vil vanligvis virke."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3991,11 +3979,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Angitt mappe finnes ikke."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Oppdatert mediekatalog"
@ -5268,7 +5252,7 @@ msgstr "Tilkobling {name} slettet."
msgid "Failed to delete connection: Connection not found."
msgstr "Kunne ikke slette tilkobling: Tilkobling ikke funnet."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5277,31 +5261,31 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Neste"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5311,17 +5295,26 @@ msgstr ""
msgid "Not set"
msgstr "Vertsnavn satt"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Tjenerdomene"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Administratorpassord"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). Leave "
@ -5335,13 +5328,13 @@ msgstr ""
"Sett et nytt passord for MediaWikis administratorkonto (admin). La dette "
"feltet stå tomt for å beholde gjeldende passord."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default app set"
msgid "Default phone region"
msgstr "Forvalgsprogram satt"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8684,78 +8677,114 @@ msgstr "Pakke {expression} er ikke tilgjengelig for installasjon"
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Pakke {package_name} er siste versjon ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "installering"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "laster ned"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "mediaendring"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "oppsettsfil: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "Installer App-er"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Oppdaterer program"
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Feil ved programinstallering: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Feil ved programinstallering: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Feil ved programinstallering: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Program installert."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "Program oppdatert"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Oppdaterer program"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Feil ved programinstallering: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "Program oppdatert"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "Installer App-er"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Feil ved programinstallering: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Program installert."
#: setup.py:493
#: setup.py:581
#, fuzzy
#| msgid "Upgrade Packages"
msgid "Updating app packages"
@ -9131,6 +9160,12 @@ msgstr "Oppdater"
msgid "Backup"
msgstr "Sikkerhetskopier"
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Start oppsett"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -9164,6 +9199,24 @@ msgstr "før avinstallering av {app_id}"
msgid "Gujarati"
msgstr "Gujarati"
#~ msgid "Media streaming server"
#~ msgstr "Media-strømmetjener"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Mappe MiniDLNA-tjeneren leser for innhold. Alle undermapper av denne vil "
#~ "også bli skannet for mediafiler. Hvis du endrer forvalget, forsikre deg "
#~ "om at den nye mappen finnes, og at den er lesbar for «minidlna»-brukeren. "
#~ "Alle brukermediamapper (\"/home/brukernavn/\") vil vanligvis virke."
#~ msgid "Specified directory does not exist."
#~ msgstr "Angitt mappe finnes ikke."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Oppsett for lagringsavbildninger oppdatert"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-03-30 16:18+0000\n"
"Last-Translator: ikmaak <info@ikmaak.nl>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/freedombox/"
@ -30,27 +30,27 @@ msgstr "Statische configuratie {etc_path} is correct ingesteld"
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Service {service_name} wordt uitgevoerd"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Luistert op {kind} poort {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Luistert op {kind} poort {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Verbind met {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Kan niet verbinden met {host}:{port}"
@ -142,12 +142,12 @@ msgstr "Webserver"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Web Interface (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "ToegangsURL {url} op tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "ToegangsURL {url}"
@ -924,7 +924,7 @@ msgstr "Verwijder"
msgid "Admin"
msgstr "Admin"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1604,9 +1604,8 @@ msgstr "Toepassing: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Setup opnieuw uitvoeren"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1648,10 +1647,15 @@ msgstr "Test"
msgid "Result"
msgstr "Resultaat"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Diagnostische test"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1842,7 +1846,7 @@ msgstr "Status"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Domein"
@ -2240,12 +2244,12 @@ msgstr "Er zijn directe doorgeefregels ingesteld"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Poort {name} ({details}) is beschikbaar binnen interne netwerken"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Poort {name} ({details})is beschikbaar voor externe netwerken"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Poort {name} ({details}) is niet beschikbaar voor externe netwerken"
@ -3318,10 +3322,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Certificaten"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Kan niet testen: Er zijn geen domeinen ingesteld."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Certificaatstatus"
@ -3849,7 +3849,7 @@ msgstr "Indien uitgeschakeld, kunnen spelers niet sterven of schade oplopen."
msgid "Address"
msgstr "Adres"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3867,34 +3867,23 @@ msgstr ""
"mediaspelers, smartphones, televisies en spelsystemen (zoals PS3 en Xbox "
"360) of programma's zoals totem en Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Mediastreaming server"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Simple Media Server"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Map met mediabestanden"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Map die de MiniDLNA Server zal doorzoeken. Alle submappen hiervan worden ook "
"doorzocht op mediabestanden. Als de standaardmap verandert, zorg er dan voor "
"dat de nieuwe map bestaat en dat deze leesbaar is voor de \"minidlna\" -"
"gebruiker. Alle mediamappen van gebruikers binnen (\"/ home / "
"gebruikersnaam /\") zullen meestal werken."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3912,11 +3901,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "De opgegeven map bestaat niet."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Mediamap bijgewerkt"
@ -5202,7 +5187,7 @@ msgstr "Verbinding {name} verwijderd."
msgid "Failed to delete connection: Connection not found."
msgstr "Kan verbinding niet verwijderen: Verbinding niet gevonden."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5211,33 +5196,33 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
#, fuzzy
#| msgid "Uninstalling an app is an experimental feature."
msgid "This app is experimental."
msgstr "Het verwijderen van een toepassing is een experimentele functie."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Volgende"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5247,17 +5232,34 @@ msgstr ""
msgid "Not set"
msgstr "Hostnaam ingesteld"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Serverdomein"
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"Wordt door MediaWiki gebruikt om URL's te genereren die naar de wiki "
"verwijzen, zoals in de footer, feeds en e-mails. Voorbeelden: \"myfreedombox."
"example.org\" of \"example.onion\"."
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Beheerderswachtwoord"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
@ -5274,13 +5276,13 @@ msgstr ""
"wachtwoord moet minimaal <strong>10 tekens</strong> zijn, en niet makkelijk "
"te raden. Laat dit veld leeg om het huidige wachtwoord te behouden."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default zone is external"
msgid "Default phone region"
msgstr "Standaardzone is extern"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8590,67 +8592,103 @@ msgstr "Pakket {package_expression} is niet beschikbaar voor installatie"
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Pakket {package_name} is de nieuwste versie ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "installeren"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "downloaden"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "media wijzigen"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "configuratiebestand: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Time-out wachtend op pakketbeheerder"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Toepassing installeren"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Toepassing updaten"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Fout bij het installeren van de toepassing: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Fout bij het bijwerken van de toepassing: {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Fout bij het bijwerken van de toepassing: {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "De toepassing is geïnstalleerd."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "Toepassing bijgewerkt"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Toepassing updaten"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Fout bij het verwijderen van de toepassing: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "Toepassing bijgewerkt"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Toepassing wordt verwijderd"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Fout bij het verwijderen van de toepassing: {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "De toepassing is verwijderd."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Toepassings-pakketten bijwerken"
@ -9022,6 +9060,10 @@ msgstr "Update"
msgid "Backup"
msgstr "Back-up"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Setup opnieuw uitvoeren"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -9053,6 +9095,28 @@ msgstr "voor het verwijderen van {app_id}"
msgid "Gujarati"
msgstr "Gujarati"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Kan niet testen: Er zijn geen domeinen ingesteld."
#~ msgid "Media streaming server"
#~ msgstr "Mediastreaming server"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Map die de MiniDLNA Server zal doorzoeken. Alle submappen hiervan worden "
#~ "ook doorzocht op mediabestanden. Als de standaardmap verandert, zorg er "
#~ "dan voor dat de nieuwe map bestaat en dat deze leesbaar is voor de "
#~ "\"minidlna\" -gebruiker. Alle mediamappen van gebruikers binnen (\"/ "
#~ "home / gebruikersnaam /\") zullen meestal werken."
#~ msgid "Specified directory does not exist."
#~ msgstr "De opgegeven map bestaat niet."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Opslag van Snapshots configuratie is bijgewerkt"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +29,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Usługa {service_name} jest uruchomiona"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Nasłuchuje na {kind} port {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Nasłuchuje na {kind} port {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Podłączony do {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Nie mogę się podłączyć do {host}:{port}"
@ -142,12 +142,12 @@ msgstr "Serwer Web"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} interfejs sieciowy (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Adres URL {url} na {kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Adres URL {url}"
@ -916,7 +916,7 @@ msgstr "Usuń"
msgid "Admin"
msgstr "Admin"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1597,8 +1597,7 @@ msgstr "Aplikacja: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1649,10 +1648,15 @@ msgstr "Test"
msgid "Result"
msgstr "Wynik"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Test diagnostyczny"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1854,7 +1858,7 @@ msgstr "Stan"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Domena"
@ -2251,12 +2255,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) jest dostępny dla sieci wewnętrznych"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) jest dostępny dla sieci zewnętrznych"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3251,10 +3255,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Certyfikaty"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Status certyfikatu"
@ -3732,7 +3732,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3743,28 +3743,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3783,11 +3777,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4947,7 +4937,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4956,29 +4946,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4988,17 +4978,26 @@ msgstr ""
msgid "Not set"
msgstr "Nazwa hosta ustawiona"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Invalid server name"
msgid "Override domain"
msgstr "Niewłaściwa nazwa użytkownika"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Account"
msgid "Administrator password"
msgstr "Konto Administratora"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -5006,11 +5005,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8035,80 +8034,114 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "plik konfiguracyjny: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "Instaluj aplikacje"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Błąd podczas instalowania aplikacji: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Błąd podczas instalowania aplikacji: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Błąd podczas instalowania aplikacji: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Aplikacja zainstalowania."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "Ostatnie uaktualnienie"
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Błąd podczas instalowania aplikacji: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "Ostatnie uaktualnienie"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "Instaluj aplikacje"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Błąd podczas instalowania aplikacji: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Aplikacja zainstalowania."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -8495,6 +8528,10 @@ msgstr ""
msgid "Backup"
msgstr "Kopie zapasowe"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -8704,11 +8741,6 @@ msgstr "Gujarati"
#~ msgid "Damage configuration updated"
#~ msgstr "Zaktualizowano ustawienia zniszczeń"
#, fuzzy
#~| msgid "Invalid server name"
#~ msgid "Enter a valid domain"
#~ msgstr "Niewłaściwa nazwa użytkownika"
#, fuzzy
#~| msgid "Invalid server name"
#~ msgid "Enter a valid destination"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "Freedombox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "O serviço {service_name} está em execução"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Escutando á porta {kind} {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "À escuta de {kind} na porta {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Ligar a {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Não é possível ligar a {host}:{port}"
@ -143,12 +143,12 @@ msgstr "Servidor Web"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Interface Web (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "URL de acesso {url} em tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "URL de acesso{url}"
@ -934,7 +934,7 @@ msgstr "Eliminar"
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1580,8 +1580,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1623,10 +1622,15 @@ msgstr "Teste"
msgid "Result"
msgstr "Resultado"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Teste de diagnóstico"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1794,7 +1798,7 @@ msgstr "Estado"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
#, fuzzy
#| msgid "Domain Name"
msgid "Domain"
@ -2172,12 +2176,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "Porta {name} ({details}) disponível para redes internas"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Porta {name} ({details}) disponível para redes externas"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3148,10 +3152,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3626,7 +3626,7 @@ msgstr ""
msgid "Address"
msgstr "Endereço"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3637,28 +3637,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3677,11 +3671,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4847,7 +4837,7 @@ msgstr "Ligação {name} eliminada."
msgid "Failed to delete connection: Connection not found."
msgstr "Falha ao eliminar a ligação: Ligação não encontrada."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4856,29 +4846,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4888,17 +4878,26 @@ msgstr ""
msgid "Not set"
msgstr "Nome de hospedeiro definido"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Domínio do servidor"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Account"
msgid "Administrator password"
msgstr "Conta de administrador"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4906,11 +4905,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7830,82 +7829,116 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
#, fuzzy
#| msgid "Setting unchanged"
msgid "media change"
msgstr "Definição inalterada"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "ficheiro de configuração: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install"
msgid "Installing app"
msgstr "Instalar"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Erro a instalar a aplicação: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Erro a instalar a aplicação: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Erro a instalar a aplicação: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Aplicação instalada."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Name"
msgid "App updated"
msgstr "Nome"
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Erro a instalar a aplicação: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Name"
msgid "App repaired."
msgstr "Nome"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install"
msgid "Uninstalling app"
msgstr "Instalar"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Erro a instalar a aplicação: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Aplicação instalada."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -8255,6 +8288,10 @@ msgstr ""
msgid "Backup"
msgstr "Cópia de segurança"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-04-22 17:07+0000\n"
"Last-Translator: Yurt Page <yurtpage@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/freedombox/"
@ -29,27 +29,27 @@ msgstr "Статическая конфигурация {etc_path} правил
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Выполняется служба {service_name}"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Слушать на {kind} порт {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Слушать порт {port} на {kind}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Подключение к {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Невозможно подключиться к {host}:{port}"
@ -146,12 +146,12 @@ msgstr "Веб-сервер"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Веб-интерфейс (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Доступ к URL {url} по tcp {kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Доступ к URL {url}"
@ -928,7 +928,7 @@ msgstr "Удалить"
msgid "Admin"
msgstr "Админ"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1626,11 +1626,8 @@ msgstr "Приложение: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Запуск программы установки"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1678,10 +1675,15 @@ msgstr "Тест"
msgid "Result"
msgstr "Результат"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Диагностический тест"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1869,7 +1871,7 @@ msgstr "Статус"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Домен"
@ -2268,12 +2270,12 @@ msgstr "Существуют правила прямого прохода"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Порт {name} ({details}) доступен для внутренних сетей"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Порт {name} ({details}) доступен для внешних сетей"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Порт {name} ({details}) недоступен для внешних сетей"
@ -3366,10 +3368,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Сертификаты"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Невозможно провести тестирование: Не настроены домены."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Статус сертификата"
@ -3924,7 +3922,7 @@ msgstr ""
msgid "Address"
msgstr "Адрес"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3942,34 +3940,23 @@ msgstr ""
"медиаплеерами, смартфонами, телевизорами и игровыми системами (такими как "
"PS3 и Xbox 360) или такими приложениями, как totem и Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Сервер потоковой передачи мультимедиа"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Простой медиа-сервер"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Каталог медиафайлов"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Каталог, который MiniDLNA Server будет читать для содержимого. Все его "
"подкаталоги также будут сканироваться на наличие файлов мультимедиа. Если вы "
"измените значение по умолчанию, убедитесь, что новый каталог существует и "
"доступен для чтения пользователем minidlna. Любые пользовательские медиа-"
"каталоги (\"/home/username/\") обычно работают."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3987,11 +3974,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Указанный каталог не существует."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Обновленный каталог медиа"
@ -5273,7 +5256,7 @@ msgstr "Подключение {name} удалено."
msgid "Failed to delete connection: Connection not found."
msgstr "Не удалось удалить подключение: соединение не найдено."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5287,33 +5270,33 @@ msgstr ""
"настольных компьютеров и мобильных клиентов. Сервер NextCloud предоставляет "
"хорошо интегрированный веб-интерфейс."
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
#, fuzzy
#| msgid "All users of FreedomBox can use Nextcloud."
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr "Все пользователи FreedomBox могут использовать NextCloud."
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Следующий"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr "Хранение файлов и сотрудничество"
@ -5323,17 +5306,34 @@ msgstr "Хранение файлов и сотрудничество"
msgid "Not set"
msgstr "Смена имени хоста"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr "Примеры: «myfreedombox.example.org» или «example.onion»."
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Домен сервера"
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"Использовалось MediaWiki для создания ссылок на wiki страницы, например "
"внизу веб-страниц, в RSS-потоках или в электронных письмах. Например: "
"\"myfreedombox.example.org\" или \"example.onion\"."
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Пароль администратора"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
@ -5351,13 +5351,13 @@ msgstr ""
"<strong>10 символов</strong>. Оставьте это поле пустым, чтобы сохранить "
"текущий пароль."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default app set"
msgid "Default phone region"
msgstr "Приложение по умолчанию настроено"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8710,82 +8710,118 @@ msgstr "Пакет {expression} недоступен для установки"
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Пакет {package_name} последней версией ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "Установка"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "Загрузка"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "изменение медиа"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "Файл настроек: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "Установка приложений"
#: setup.py:41
#: setup.py:44
#, fuzzy
#| msgid "Updating..."
msgid "Updating app"
msgstr "Обновляется..."
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Ошибка при установке приложения: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Ошибка при установке приложения: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Ошибка при установке приложения: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Приложение установлено."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "Последнее обновление"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating..."
msgid "Repairing app"
msgstr "Обновляется..."
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Ошибка при установке приложения: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "Последнее обновление"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "Установка приложений"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Ошибка при установке приложения: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Приложение установлено."
#: setup.py:493
#: setup.py:581
#, fuzzy
#| msgid "Upgrade Packages"
msgid "Updating app packages"
@ -9162,6 +9198,12 @@ msgstr "Обновление"
msgid "Backup"
msgstr "Резервные копии"
#: templates/toolbar.html:53
#, fuzzy
#| msgid "Start setup"
msgid "Re-run setup"
msgstr "Запуск программы установки"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -9194,6 +9236,31 @@ msgstr ""
msgid "Gujarati"
msgstr "Гуджарати"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Невозможно провести тестирование: Не настроены домены."
#~ msgid "Media streaming server"
#~ msgstr "Сервер потоковой передачи мультимедиа"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Каталог, который MiniDLNA Server будет читать для содержимого. Все его "
#~ "подкаталоги также будут сканироваться на наличие файлов мультимедиа. Если "
#~ "вы измените значение по умолчанию, убедитесь, что новый каталог "
#~ "существует и доступен для чтения пользователем minidlna. Любые "
#~ "пользовательские медиа-каталоги (\"/home/username/\") обычно работают."
#~ msgid "Specified directory does not exist."
#~ msgstr "Указанный каталог не существует."
#~ msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#~ msgstr "Примеры: «myfreedombox.example.org» или «example.onion»."
#~ msgid "To perform administrative actions, use the "
#~ msgstr "Для выполнения административных действий, используйте "

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "ෆ්‍රීඩම්බොක්ස්"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -135,12 +135,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -845,7 +845,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1449,8 +1449,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1490,10 +1489,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1651,7 +1655,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -1999,12 +2003,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2922,10 +2926,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3363,7 +3363,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3374,28 +3374,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3414,11 +3408,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4542,7 +4532,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4551,29 +4541,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4581,15 +4571,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4597,11 +4594,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7429,67 +7426,97 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#, python-brace-format
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:78
#, python-brace-format
msgid "Error updating app: {error}"
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:82
msgid "App installed."
#: setup.py:81 setup.py:151
#, python-brace-format
msgid "Error repairing app: {error}"
msgstr ""
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr ""
#: setup.py:88
msgid "App installed."
msgstr ""
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, python-brace-format
msgid "Error running diagnostics: {error}"
msgstr ""
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr ""
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr ""
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr ""
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7822,6 +7849,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +29,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Poslušam na {kind} vratih {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Poslušam na {kind} vratih {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Povezava na {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Ne uspem se povezati na {host}:{port}"
@ -144,12 +144,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Dostop do URL {url} na tcp {kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Dostop do {url}"
@ -952,7 +952,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1601,8 +1601,7 @@ msgstr "Aplikacija: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1649,10 +1648,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1812,7 +1816,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2178,12 +2182,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3133,10 +3137,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3584,7 +3584,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3595,28 +3595,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3635,11 +3629,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4779,7 +4769,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4788,29 +4778,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4818,17 +4808,26 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Invalid hostname"
msgid "Override domain"
msgstr "Neveljavno ime gostitelja"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Server Administration"
msgid "Administrator password"
msgstr "Skrbništvo strežnika"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4836,11 +4835,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7761,78 +7760,112 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Napaka ob nameščanju aplikacije: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Napaka ob nameščanju aplikacije: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Napaka ob nameščanju aplikacije: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Aplikacija je nameščena."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Name"
msgid "App updated"
msgstr "Ime"
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Napaka ob nameščanju aplikacije: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Name"
msgid "App repaired."
msgstr "Ime"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Error installing application: {error}"
msgid "Uninstalling app"
msgstr "Napaka ob nameščanju aplikacije: {error}"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Napaka ob nameščanju aplikacije: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Aplikacija je nameščena."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -8169,6 +8202,10 @@ msgstr ""
msgid "Backup"
msgstr "Rezervne kopije"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -8240,11 +8277,6 @@ msgstr ""
#~ msgid "Enable"
#~ msgstr "Omogoči DNSSEC"
#, fuzzy
#~| msgid "Invalid hostname"
#~ msgid "Enter a valid domain"
#~ msgstr "Neveljavno ime gostitelja"
#, fuzzy
#~| msgid "Invalid hostname"
#~ msgid "Enter a valid destination"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-04-09 20:35+0000\n"
"Last-Translator: Besnik Bleta <besnik@programeshqip.org>\n"
"Language-Team: Albanian <https://hosted.weblate.org/projects/freedombox/"
@ -28,27 +28,27 @@ msgstr "Formësimi statik {etc_path} është ujdisur si duhet"
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Shërbimi {service_name} po xhiron"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Po përgjohet në portë {kind} {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Po përgjohet në portë {kind} {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Lidhu me {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Slidhet dot me {host}:{port}"
@ -140,12 +140,12 @@ msgstr "Shërbyes"
msgid "{box_name} Web Interface (Plinth)"
msgstr "Ndërfaqe Web e {box_name} (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "URL hyrjeje {url} në tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "URL Hyrjeje {url}"
@ -918,7 +918,7 @@ msgstr "Fshije"
msgid "Admin"
msgstr "Përgjegjës"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1601,9 +1601,8 @@ msgstr "Aplikacion: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Ribëni ujdisjen"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1645,10 +1644,15 @@ msgstr "Provë"
msgid "Result"
msgstr "Përfundim"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Test Diagnostikimesh"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1841,7 +1845,7 @@ msgstr "Gjendje"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Përkatësi"
@ -2243,12 +2247,12 @@ msgstr "Ka rregulla të drejtpërdrejta “passthrough”"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Portë {name} ({details}) e përdorshme për rrjete të brendshëm"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Portë {name} ({details}) e përdorshme për rrjete të jashtëm"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, 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"
@ -3335,10 +3339,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Dëshmi"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Smund të testojë: Ska përkatësi të formësuara."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Gjendje Dëshmie"
@ -3873,7 +3873,7 @@ msgstr ""
msgid "Address"
msgstr "Adresë"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3891,34 +3891,23 @@ msgstr ""
"telefona të mençur, televizorë, dhe sisteme lojërash (të tillë si PS3 dhe "
"Xbox 360), ose aplikacione të tillë si totem dhe Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Shërbyes transmetimi mediash"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Shërbyes i Thjeshtë Mediash"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Drejtori Kartelash Media"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Drejtoria që Shërbyesi MiniDLNA do të lexojë për lëndë. Krejt nëndrejtoritë "
"e saj do të skanohen gjithashtu për kartela media. Nëse ndryshoni "
"parazgjedhjen, sigurohuni që drejtoria e re ekziston dhe se është e "
"lexueshme nga përdoruesi “minidlna”. Çfarëdo drejtorish media përdoruesish "
"(\"/home/emërpërdoruesi/\") zakonisht do të funksionojnë."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3936,11 +3925,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Drejtoria e dhënë sekziston."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "U përditësua drejtori mediash"
@ -5225,7 +5210,7 @@ msgstr "Lidhja {name} u fshi."
msgid "Failed to delete connection: Connection not found."
msgstr "Su arrit të fshihet lidhje: Su gjet lidhje."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5239,33 +5224,33 @@ msgstr ""
"klient për kompjutera desktop dhe klientë celulari. Shërbyesi Nextcloud "
"furnizon një ndërfaqe web të integruar paq."
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
#, fuzzy
#| msgid "All users of FreedomBox can use Nextcloud."
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr "Nextcloud-in mund ta përdorin krejt përdoruesit e FreedomBox-it."
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
#, fuzzy
#| msgid "Uninstalling an app is an experimental feature."
msgid "This app is experimental."
msgstr "Çinstalimi i një aplikacioni është një veçori eksperimentale."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr "Nextcloud"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr "Depozitim Kartelash &amp; Bashkëpunim"
@ -5275,15 +5260,32 @@ msgstr "Depozitim Kartelash &amp; Bashkëpunim"
msgid "Not set"
msgstr "Strehëemri u caktua"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr "Shembuj: “myfreedombox.example.org”, ose “example.onion”."
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Përkatësi shërbyesi"
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"E përdorur nga MediaWiki për të prodhuar URL-ra që shpien te wiki, p.sh., te "
"fundfaqja, prurjet ose email-e. Shembuj: “myfreedombox.example.org”, ose "
"“example.onion”."
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr "Fjalëkalim përgjegjësi"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -5295,11 +5297,11 @@ msgstr ""
"gjatësia më e pakët e domosdoshme është <strong>10 shenja</strong>. Që të "
"mbani fjalëkalimin e tanishëm, lëreni të zbrazët këtë fushë."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr "Zonë telefonike parazgjedhje"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8630,67 +8632,103 @@ msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
"Paketa {package_name} gjendet nën versionin më të ri ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "po instalohet"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "po shkarkohet"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "ndryshim media"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "kartelë formësimi: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Mbaroi koha teksa pritej për përgjegjës paketash"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Po instalohet aplikacioni"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Po përditësohet aplikacioni"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Gabim në instalimin e aplikacionit: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Gabim në përditësimin e aplikacionit: {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Gabim në përditësimin e aplikacionit: {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "Aplikacioni u instalua."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "Aplikacioni u përditësua"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Po përditësohet aplikacioni"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Gabim në çinstalimin e aplikacionit: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "Aplikacioni u përditësua"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Po çinstalohet aplikacion"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Gabim në çinstalimin e aplikacionit: {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "Aplikacioni u çinstalua."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Po përditësohet paketa aplikacioni"
@ -9061,6 +9099,10 @@ msgstr "Përditësoje"
msgid "Backup"
msgstr "Kopjeruajtje"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Ribëni ujdisjen"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -9092,6 +9134,31 @@ msgstr "para çinstalimit të {app_id}"
msgid "Gujarati"
msgstr "Gujaratase"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Smund të testojë: Ska përkatësi të formësuara."
#~ msgid "Media streaming server"
#~ msgstr "Shërbyes transmetimi mediash"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Drejtoria që Shërbyesi MiniDLNA do të lexojë për lëndë. Krejt "
#~ "nëndrejtoritë e saj do të skanohen gjithashtu për kartela media. Nëse "
#~ "ndryshoni parazgjedhjen, sigurohuni që drejtoria e re ekziston dhe se "
#~ "është e lexueshme nga përdoruesi “minidlna”. Çfarëdo drejtorish media "
#~ "përdoruesish (\"/home/emërpërdoruesi/\") zakonisht do të funksionojnë."
#~ msgid "Specified directory does not exist."
#~ msgstr "Drejtoria e dhënë sekziston."
#~ msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#~ msgstr "Shembuj: “myfreedombox.example.org”, ose “example.onion”."
#~ msgid "To perform administrative actions, use the "
#~ msgstr "Që të kryeni veprime administrative, përdorni "

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +29,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "KutijaSlobode"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Servis {service_name} je pokrenut"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Slušam na {kind} portu {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Slušam na {kind} portu {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Poveži se na {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Nije moguće povezati se na {host}:{port}"
@ -141,12 +141,12 @@ msgstr "Web Server"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Web Interfejs (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Pristupi URL-u {url} na tcp {kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "URL za pristup {url}"
@ -910,7 +910,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1532,8 +1532,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1573,10 +1572,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1734,7 +1738,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2094,12 +2098,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3023,10 +3027,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3474,7 +3474,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3485,28 +3485,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3525,11 +3519,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4663,7 +4653,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4672,29 +4662,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4702,17 +4692,26 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Serving Domains"
msgid "Override domain"
msgstr "Domeni"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Server Administration"
msgid "Administrator password"
msgstr "Administracija Servera"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4720,11 +4719,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7580,76 +7579,108 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Greška prilikom instaliranja aplikacije: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Greška prilikom instaliranja aplikacije: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Greška prilikom instaliranja aplikacije: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Aplikacija instalirana."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Greška prilikom instaliranja aplikacije: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Error installing application: {error}"
msgid "Uninstalling app"
msgstr "Greška prilikom instaliranja aplikacije: {error}"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Greška prilikom instaliranja aplikacije: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Aplikacija instalirana."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7986,6 +8017,10 @@ msgstr ""
msgid "Backup"
msgstr "Sigurnosne kopije"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-02-02 20:01+0000\n"
"Last-Translator: bittin1ddc447d824349b2 <bittin@reimu.nl>\n"
"Language-Team: Swedish <https://hosted.weblate.org/projects/freedombox/"
@ -28,27 +28,27 @@ msgstr "Statisk konfiguration {etc_path} är inställd korrekt"
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Tjänsten {service_name} körs"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Lyssnar på {kind} port {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Lyssnar på {kind} port {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Anslut till {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Kan inte ansluta till {host}:{port}"
@ -143,12 +143,12 @@ msgstr "Webbserver"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Webbgränssnitt (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Anslut till adress {url} på tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Anslut till adress {url}"
@ -924,7 +924,7 @@ msgstr "Ta bort"
msgid "Admin"
msgstr "Admin"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1598,9 +1598,8 @@ msgstr "App:%(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Kör installation igen"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1642,10 +1641,15 @@ msgstr "Test"
msgid "Result"
msgstr "Resultat"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Diagnostiktest"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1832,7 +1836,7 @@ msgstr "Status"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Domän"
@ -2229,12 +2233,12 @@ msgstr "Direkt genomgående regler finns"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Port {name} ({details}) tillgängligt för interna nätverk"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Port {name} ({details}) tillgängligt för externa nätverk"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details}) är inte tillgängligt för externa nätverk"
@ -3312,10 +3316,6 @@ msgstr "Låt oss kryptera"
msgid "Certificates"
msgstr "Certifikaterna"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Kan inte testa: Inga domäner är konfigurerade."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Certifikatets status"
@ -3840,7 +3840,7 @@ msgstr "Om inaktiverat kan spelare inte dö eller få skador av något slag."
msgid "Address"
msgstr "Adress"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3857,34 +3857,23 @@ msgstr ""
"certifiering som bärbara mediaspelare, smartphones, TV-apparater och "
"spelsystem (såsom PS3 och Xbox 360) eller applikationer som totem och Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Media Streaming Server"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Enkel mediaserver"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Media-filer katalog"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Katalog som MiniDLNA-servern kommer att läsa för innehåll. Alla "
"underkataloger i detta kommer också att skannas för mediefiler. Om du ändrar "
"standardvärdet se till att den nya katalogen finns och som är läsbar från "
"\"minidlna\"-användaren. Alla användar mediekataloger (\"/Home/username/\") "
"kommer vanligtvis att fungera."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3902,11 +3891,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Den angivna katalogen finns inte."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Uppdaterad mediekatalog"
@ -5187,7 +5172,7 @@ msgstr "Anslutning {name} borttagen."
msgid "Failed to delete connection: Connection not found."
msgstr "Det gick inte att ta bort anslutning: Anslutning hittades inte."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5196,33 +5181,33 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
#, fuzzy
#| msgid "Uninstalling an app is an experimental feature."
msgid "This app is experimental."
msgstr "Att avinstallera en app är en experimentell funktion."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Nästa"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5232,17 +5217,34 @@ msgstr ""
msgid "Not set"
msgstr "Värdnamn inställt"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Server-domän"
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"Används av MediaWiki för att generera webbadresser som pekar på wikin, t.ex. "
"i sidfot, flöden och e-post. Exempel: \"myfreedombox.example.org\" eller "
"\"example.onion\"."
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Administratörs lösenord"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
@ -5260,13 +5262,13 @@ msgstr ""
"tecken</strong>. Lämna det här fältet tomt om du vill behålla det nuvarande "
"lösenordet."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default zone is external"
msgid "Default phone region"
msgstr "Standardzonen är extern"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8565,67 +8567,103 @@ msgstr "Paket {package_expression} är inte tillgänglig för installation"
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Paketet {package_name} är den senaste versionen ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "Installera"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "ladda ner"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "Mediabyte"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "konfigurationsfil: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Timeout väntar på pakethanteraren"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Installera app"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Uppdatera app"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Fel vid installation av app: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Fel vid uppdatering av app: {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Fel vid uppdatering av app: {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "App installerad."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "App uppdaterad"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Uppdatera app"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Fel vid avinstallation av appen: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "App uppdaterad"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Avinstallera app"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Fel vid avinstallation av appen: {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "Appen avinstallerad."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Uppdatera appaket"
@ -8998,6 +9036,10 @@ msgstr "Uppdatera"
msgid "Backup"
msgstr "Säkerhetskopia"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Kör installation igen"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -9029,6 +9071,28 @@ msgstr "innan du avinstallerar {app_id}"
msgid "Gujarati"
msgstr "Gujarati"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Kan inte testa: Inga domäner är konfigurerade."
#~ msgid "Media streaming server"
#~ msgstr "Media Streaming Server"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Katalog som MiniDLNA-servern kommer att läsa för innehåll. Alla "
#~ "underkataloger i detta kommer också att skannas för mediefiler. Om du "
#~ "ändrar standardvärdet se till att den nya katalogen finns och som är "
#~ "läsbar från \"minidlna\"-användaren. Alla användar mediekataloger (\"/"
#~ "Home/username/\") kommer vanligtvis att fungera."
#~ msgid "Specified directory does not exist."
#~ msgstr "Den angivna katalogen finns inte."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Lagring ögonblicksbildkonfiguration uppdaterad"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +27,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@ -134,12 +134,12 @@ msgstr ""
msgid "{box_name} Web Interface (Plinth)"
msgstr ""
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr ""
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr ""
@ -844,7 +844,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1448,8 +1448,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1489,10 +1488,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1650,7 +1654,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -1998,12 +2002,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -2921,10 +2925,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3362,7 +3362,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3373,28 +3373,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3413,11 +3407,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4541,7 +4531,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4550,29 +4540,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4580,15 +4570,22 @@ msgstr ""
msgid "Not set"
msgstr ""
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#: modules/nextcloud/forms.py:26
msgid "Override domain"
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr ""
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4596,11 +4593,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7428,67 +7425,97 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#, python-brace-format
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:78
#, python-brace-format
msgid "Error updating app: {error}"
msgid "Error installing app: {error}"
msgstr ""
#: setup.py:82
msgid "App installed."
#: setup.py:81 setup.py:151
#, python-brace-format
msgid "Error repairing app: {error}"
msgstr ""
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr ""
#: setup.py:88
msgid "App installed."
msgstr ""
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, python-brace-format
msgid "Error running diagnostics: {error}"
msgstr ""
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr ""
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr ""
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr ""
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7821,6 +7848,10 @@ msgstr ""
msgid "Backup"
msgstr ""
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-02-11 20:14+0000\n"
"Last-Translator: Sunil Mohan Adapa <sunil@medhas.org>\n"
"Language-Team: Telugu <https://hosted.weblate.org/projects/freedombox/"
@ -30,27 +30,27 @@ msgstr "స్టాటిక్ కాన్ఫిగరేషన్ {etc_path}
msgid "FreedomBox"
msgstr "ఫ్రీడంబాక్స్"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "సేవ {service_name} అమలవుతోంది"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} పోర్ట్ {listen_address}:{port} పై వింటూ"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "పోర్ట్ {port} పై ఆలకించమండి {kind}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "అనుసంధానించండి {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "అనుసంధానించండం సాధ్యంకాదు {host}:{port}"
@ -143,12 +143,12 @@ msgstr "జాల సేవకం"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name}అంతర్జాల ముఖాంతరం (ఫ్లింథ్)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "{kind} పై URL {url} వాడుక"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "URL {url} ప్రవేశము"
@ -901,7 +901,7 @@ msgstr "తొలగించు"
msgid "Admin"
msgstr "నిర్వాహకుడు"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1560,9 +1560,8 @@ msgstr "యాప్: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "సెటప్‌ని మళ్లీ అమలు చేయండి"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1608,10 +1607,15 @@ msgstr "పరీక్ష"
msgid "Result"
msgstr "ఫలితం"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "లక్షణాల పరీక్ష"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1793,7 +1797,7 @@ msgstr "స్థితి"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "డొమైన్"
@ -2177,12 +2181,12 @@ msgstr "నిబంధనల ద్వారా డైరెక్ట్ పా
msgid "Port {name} ({details}) available for internal networks"
msgstr "అంతర్గత నెట్‌వర్క్‌ల కోసం పోర్ట్ {name} ({details}) అందుబాటులో ఉంది"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "అంతర్గత నెట్‌వర్క్‌ల కోసం పోర్ట్ {name} ({details}) అందుబాటులో ఉంది"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Port {name} ({details})బాహ్య నెట్‌వర్క్‌లకు అందుబాటులో లేదు"
@ -3223,10 +3227,6 @@ msgstr "లెట్స్ ఎన్క్రిప్ట్"
msgid "Certificates"
msgstr "యోగ్యతాపత్రాలు"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "పరీక్షించడం సాధ్యం కాదు: డొమైన్‌లు ఏవీ కాన్ఫిగర్ చేయబడలేదు."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "యోగ్యతాపత్రం స్థితి"
@ -3726,7 +3726,7 @@ msgstr "నిరుపయోగం అయినప్పుడు, ఆటగా
msgid "Address"
msgstr "చిరునామా"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3742,33 +3742,23 @@ msgstr ""
"టెలివిజన్‌లు మరియు గేమింగ్ సిస్టమ్‌లు (PS3 మరియు Xbox 360 వంటివి) లేదా టోటెమ్ మరియు కోడి వంటి "
"అప్లికేషన్‌లు వంటి DLNA సర్టిఫికేషన్‌ను పాస్ చేసే ఏదైనా పరికరానికి అనుగుణంగా ఉంటుంది."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "మీడియా స్ట్రీమింగ్ సేవిక"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "చిన్న DLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "సరళమైన మీడియా సేవిక"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "మీడియా ఫైల్స్ డైరెక్టరీ"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"MiniDLNA సర్వర్ కంటెంట్ కోసం చదివే డైరెక్టరీ. దీని యొక్క అన్ని ఉప డైరెక్టరీలు మీడియా ఫైల్‌ల కోసం కూడా స్కాన్ "
"చేయబడతాయి. మీరు డిఫాల్ట్‌ని మార్చినట్లయితే, కొత్త డైరెక్టరీ ఉందని మరియు అది \"minidlna\" వినియోగదారు నుండి "
"చదవగలిగేలా ఉందని నిర్ధారించుకోండి. ఏదైనా వినియోగదారు మీడియా డైరెక్టరీలు (\"/home/username/\") "
"సాధారణంగా పని చేస్తాయి."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3786,11 +3776,7 @@ msgstr "యాక్"
msgid "totem"
msgstr "టోటెమ్"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "నిర్దేశిత డైరెక్టరీ ఉనికిలో లేదు."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "మీడియా డైరెక్టరీని నవీకరించబడింది"
@ -5025,7 +5011,7 @@ msgstr "{name} అనుసంధానం తొలగించబడింద
msgid "Failed to delete connection: Connection not found."
msgstr "అనుసంధానం తొలగించడం విఫలమైంది: అనుసంధానం దొరకలేదు."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5034,31 +5020,31 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "తర్వాత"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5068,17 +5054,33 @@ msgstr ""
msgid "Not set"
msgstr "ఆతిథ్యనామం అమర్చు"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "సర్వర్ అధికారక్షేత్రం"
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"ఫుటర్, ఫీడ్‌లు మరియు ఇమెయిల్‌లు వంటి వికీని సూచించే URLలను రూపొందించడానికి MediaWiki ద్వారా "
"ఉపయోగించబడుతుంది."
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "నిర్వాహకుని రహస్యపదం"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
@ -5094,13 +5096,13 @@ msgstr ""
"మీడియావికీ యొక్క అడ్మినిస్ట్రేటర్ ఖాతా (admin) కోసం ఒక కొత్త పాస్వర్డ్ని సెట్ చెయ్యండి. ప్రస్తుత పాస్వర్డ్ని "
"ఉంచాలనుకుంటే ఈ ప్రదేశాన్ని ఖాళీగా వదిలేయండి."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default zone is external"
msgid "Default phone region"
msgstr "డిఫాల్ట్ జోన్ ఐస్ ఎక్స్టర్నల్"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8314,80 +8316,116 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "ప్యాకేజీ {package_name} తాజా వెర్షన్ ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "వ్యవస్థాపిస్తోంది"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "దిగుమతి అవుతోంది"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "ప్రసార మాధ్యమం మార్పు"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "ఆకృతీకరణ ఫైలు: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "ప్యాకేజీ మేనేజర్ కోసం వేచి ఉన్న సమయం ముగిసింది"
#: setup.py:39
#: setup.py:42
#, fuzzy
#| msgid "Install Apps"
msgid "Installing app"
msgstr "అనువర్తనాలను నిక్షిప్తం చేద్దాం"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "అనువర్తనం నవీకరించబడుతున్నది"
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "అనువర్తనం స్థాపించబడింది."
#: setup.py:84
#: setup.py:92
#, fuzzy
#| msgid "Last update"
msgid "App updated"
msgstr "చివరి నవీకరణ"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "అనువర్తనం నవీకరించబడుతున్నది"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "Last update"
msgid "App repaired."
msgstr "చివరి నవీకరణ"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Install Apps"
msgid "Uninstalling app"
msgstr "అనువర్తనాలను నిక్షిప్తం చేద్దాం"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "అనువర్తనం స్థాపించబడింది."
#: setup.py:493
#: setup.py:581
#, fuzzy
#| msgid "Upgrade Packages"
msgid "Updating app packages"
@ -8759,6 +8797,10 @@ msgstr "నవీకరణ"
msgid "Backup"
msgstr "బ్యాకప్స్"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "సెటప్‌ని మళ్లీ అమలు చేయండి"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -8791,6 +8833,27 @@ msgstr "{app_id} ని అన్ఇన్‌స్టాల్ చేయడా
msgid "Gujarati"
msgstr "గుజరాతీ"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "పరీక్షించడం సాధ్యం కాదు: డొమైన్‌లు ఏవీ కాన్ఫిగర్ చేయబడలేదు."
#~ msgid "Media streaming server"
#~ msgstr "మీడియా స్ట్రీమింగ్ సేవిక"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "MiniDLNA సర్వర్ కంటెంట్ కోసం చదివే డైరెక్టరీ. దీని యొక్క అన్ని ఉప డైరెక్టరీలు మీడియా ఫైల్‌ల కోసం కూడా "
#~ "స్కాన్ చేయబడతాయి. మీరు డిఫాల్ట్‌ని మార్చినట్లయితే, కొత్త డైరెక్టరీ ఉందని మరియు అది \"minidlna\" "
#~ "వినియోగదారు నుండి చదవగలిగేలా ఉందని నిర్ధారించుకోండి. ఏదైనా వినియోగదారు మీడియా డైరెక్టరీలు (\"/home/"
#~ "username/\") సాధారణంగా పని చేస్తాయి."
#~ msgid "Specified directory does not exist."
#~ msgstr "నిర్దేశిత డైరెక్టరీ ఉనికిలో లేదు."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "నిల్వ స్నాప్‌షాట్‌ల కాన్ఫిగరేషన్ నవీకరించబడింది"

View File

@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"PO-Revision-Date: 2024-04-09 20:35+0000\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-04-24 07:07+0000\n"
"Last-Translator: Burak Yavuz <hitowerdigit@hotmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/freedombox/"
"freedombox/tr/>\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Generator: Weblate 5.5.1-dev\n"
#: config.py:103
#, python-brace-format
@ -27,28 +27,28 @@ msgstr "Sabit yapılandırma {etc_path} düzgün bir şekilde ayarlanmış"
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "{service_name} hizmeti çalışıyor"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
"{kind} üzerinde {listen_address}:{port} nolu bağlantı noktasını dinleme"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} üzerinde {port} nolu bağlantı noktasını dinleme"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} adresine bağlı"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} adresine bağlanamıyor"
@ -139,12 +139,12 @@ msgstr "Web Sunucusu"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Web Arayüzü (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Tcp{kind} üzerinde erişim URL'si {url}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Erişim URL'si {url}"
@ -910,7 +910,7 @@ msgstr "Sil"
msgid "Admin"
msgstr "Yönetici"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1587,9 +1587,8 @@ msgstr "Uygulama: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Ayarlamayı yeniden çalıştır"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1631,10 +1630,15 @@ msgstr "Deneme"
msgid "Result"
msgstr "Sonuç"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Tanı Denemesi"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1824,7 +1828,7 @@ msgstr "Durum"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Etki Alanı"
@ -2226,12 +2230,12 @@ msgstr "Doğrudan geçiş kuralları mevcut"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Dahili ağlar için {name} ({details}) bağlantı noktası kullanılabilir"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Harici ağlar için {name} ({details}) bağlantı noktası kullanılabilir"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Harici ağlar için {name} ({details}) bağlantı noktası kullanılamaz"
@ -3313,10 +3317,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Sertifikalar"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Denenemiyor: Hiçbir etki alanı yapılandırılmamış."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Sertifika Durumu"
@ -3844,7 +3844,7 @@ msgstr ""
msgid "Address"
msgstr "Adres"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3862,34 +3862,23 @@ msgstr ""
"Xbox 360 gibi) gibi ya da totem ve Kodi gibi uygulamalar da dahil olmak "
"üzere DLNA Sertifikası geçen tüm cihazlarla uyumludur."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Ortam akış sunucusu"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Basit Ortam Sunucusu"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Ortam Dosyaları Dizini"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"MiniDLNA Sunucusunun içerik için okuyacağı dizin. Bunun tüm alt dizinleri de "
"ortam dosyaları için taranacaktır. Eğer varsayılanı değiştirirseniz, yeni "
"dizinin var olduğundan ve \"minidlna\" kullanıcısının okuyabilir olduğundan "
"emin olun. Herhangi bir kullanıcı ortam dizinleri (\"/home/kullanıcıadı/\") "
"genellikle çalışacaktır."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3907,11 +3896,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Belirtilen dizin mevcut değil."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Güncellenmiş ortam dizini"
@ -5190,7 +5175,7 @@ msgstr "{name} bağlantısı silindi."
msgid "Failed to delete connection: Connection not found."
msgstr "Bağlantının silinmesi başarısız oldu: Bağlantı bulunamadı."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5204,51 +5189,74 @@ msgstr ""
"istemci uygulamalarını ve mobil istemcileri içerir. Nextcloud sunucusu iyi "
"bütünleştirilmiş bir web arayüzü sağlar."
#: modules/nextcloud/__init__.py:25
#, fuzzy
#| msgid "All users of FreedomBox can use Nextcloud."
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr "FreedomBox'ın tüm kullanıcıları Nextcloud'u kullanabilir."
msgstr ""
"FreedomBox'ın tüm kullanıcıları Nextcloud'u kullanabilir. Yönetimsel "
"işlemleri gerçekleştirmek için "
#: modules/nextcloud/__init__.py:29
#, python-brace-format
#: modules/nextcloud/__init__.py:34
#, fuzzy, python-brace-format
#| msgid ""
#| "Please note that Nextcloud is installed and run inside a container "
#| "provided by the Nextcloud project. Security, quality, privacy and legal "
#| "reviews are done by the upstream project and not by Debian/{box_name}. "
#| "Updates are performed following an independent cycle."
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
"Lütfen Nextcloud'un Nextcloud projesi tarafından sağlanan bir kapsayıcı "
"içine yüklendiğini ve çalıştırıldığını unutmayın. Güvenlik, kalite, gizlilik "
"ve yasal incelemeler Debian/{box_name} tarafından değil, yukarı yöndeki "
"proje tarafından yapılır. Güncellemeler bağımsız bir döngünün ardından "
"gerçekleştirilir."
#: modules/nextcloud/__init__.py:35
#, fuzzy
#| msgid "Uninstalling an app is an experimental feature."
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr "Bir uygulamayı kaldırmak, deneysel bir özelliktir."
msgstr "Bu uygulama deneyseldir."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr "Nextcloud"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr "Dosya Depolama ve İşbirliği"
#: modules/nextcloud/forms.py:19
#, fuzzy
#| msgid "Hostname set"
msgid "Not set"
msgstr "Anamakine adı ayarlandı"
msgstr "Ayarlı değil"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Sunucu etki alanı"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr "Örnekler: \"freedomboxım.ornek.org\" veya \"ornek.onion\"."
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"MediaWiki tarafından, altbilgi, bildirimler ve e-postalar gibi viki'yi "
"işaret eden URL'ler oluşturmak için kullanılır. Örnekler: \"benimfreedombox."
"ornek.org\" veya \"ornek.onion\"."
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr "Yönetici parolası"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -5260,11 +5268,11 @@ msgstr ""
"<strong>10 karakterdir</strong>. Şu anki parolayı korumak için bu alanı boş "
"bırakın."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr "Varsayılan telefon bölgesi"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8567,67 +8575,103 @@ msgstr "{package_expression} paketi yükleme için mevcut değil"
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "{package_name} paketi en son sürümdür ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "yükleniyor"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "indiriliyor"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "ortam değiştirme"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "yapılandırma dosyası: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Paket yöneticisini beklerken zaman aşımı oldu"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Uygulama yükleniyor"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Uygulama güncelleniyor"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Uygulama yüklenirken hata oldu: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Uygulama güncellenirken hata oldu: {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Uygulama güncellenirken hata oldu: {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "Uygulama yüklendi."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "Uygulama güncellendi"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Uygulama güncelleniyor"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Uygulama kaldırılırken hata oldu: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "Uygulama güncellendi"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Uygulama kaldırılıyor"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Uygulama kaldırılırken hata oldu: {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "Uygulama kaldırıldı."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Uygulama paketleri güncelleniyor"
@ -8998,6 +9042,10 @@ msgstr "Güncelle"
msgid "Backup"
msgstr "Yedekle"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Ayarlamayı yeniden çalıştır"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -9029,6 +9077,31 @@ msgstr "{app_id} kaldırılmadan önce"
msgid "Gujarati"
msgstr "Gujarati"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Denenemiyor: Hiçbir etki alanı yapılandırılmamış."
#~ msgid "Media streaming server"
#~ msgstr "Ortam akış sunucusu"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "MiniDLNA Sunucusunun içerik için okuyacağı dizin. Bunun tüm alt dizinleri "
#~ "de ortam dosyaları için taranacaktır. Eğer varsayılanı değiştirirseniz, "
#~ "yeni dizinin var olduğundan ve \"minidlna\" kullanıcısının okuyabilir "
#~ "olduğundan emin olun. Herhangi bir kullanıcı ortam dizinleri (\"/home/"
#~ "kullanıcıadı/\") genellikle çalışacaktır."
#~ msgid "Specified directory does not exist."
#~ msgstr "Belirtilen dizin mevcut değil."
#~ msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
#~ msgstr "Örnekler: \"freedomboxım.ornek.org\" veya \"ornek.onion\"."
#~ msgid "To perform administrative actions, use the "
#~ msgstr "Yönetimsel eylemleri gerçekleştirmek için şunu kullanın: "

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-02-05 00:01+0000\n"
"Last-Translator: Ihor Hordiichuk <igor_ck@outlook.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/freedombox/"
@ -29,27 +29,27 @@ msgstr "Статична конфігурація {etc_path} налаштова
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Сервіс {service_name} запущено"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Слухати на {kind} порт {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Слухати на {kind} порт {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Під'єднання до {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Неможливо підключитись до {host}:{port}"
@ -146,12 +146,12 @@ msgstr "Вебсервер"
msgid "{box_name} Web Interface (Plinth)"
msgstr "Вебінтерфейс {box_name} (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Доступ до URL {url} по tcp {kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Доступ до URL {url}"
@ -921,7 +921,7 @@ msgstr "Видалити"
msgid "Admin"
msgstr "Адміністратор"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1600,9 +1600,8 @@ msgstr "Застосунок: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Повторно розпочати налаштування"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1644,10 +1643,15 @@ msgstr "Тест"
msgid "Result"
msgstr "Результат"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Тест діагностики"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1840,7 +1844,7 @@ msgstr "Стан"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "Домен"
@ -2239,12 +2243,12 @@ msgstr "Існують правила прямого переходу"
msgid "Port {name} ({details}) available for internal networks"
msgstr "Порт {name} ({details}) доступний для внутрішніх мереж"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Порт {name} ({details}) доступний для зовнішніх мереж"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Порт {name} ({details}) недоступний для зовнішніх мереж"
@ -3324,10 +3328,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "Сертифікати"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr "Тестування не можливе: Нема налаштованих доменів."
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "Стан сертифікату"
@ -3855,7 +3855,7 @@ msgstr ""
msgid "Address"
msgstr "Адреса"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3873,35 +3873,23 @@ msgstr ""
"смартфони, телевізори та ігрові системи (наприклад, PS3 і Xbox 360) або "
"застосунки, такі як totem і Kodi."
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr "Сервер потокового медія"
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr "MiniDLNA"
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "Простий сервер медія"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr "Каталог файлів медія"
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
"Каталог, який MiniDLNA Server буде зчитувати на предмет вмісту. Всі "
"підкаталоги цього каталогу також будуть проскановані на наявність "
"мультимедійних файлів. Якщо ви змінюєте типові значення, переконайтеся, що "
"новий каталог існує і що він доступний для читання від користувача "
"\"minidlna\". Будь-які каталоги медіафайлів користувача (\"/home/ім'я "
"користувача/\"), як правило, будуть працювати."
#: modules/minidlna/manifest.py:10
msgid "vlc"
@ -3919,11 +3907,7 @@ msgstr "yaacc"
msgid "totem"
msgstr "totem"
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr "Призначений каталог не існує."
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr "Оновлено каталог медія"
@ -5202,7 +5186,7 @@ msgstr "Зʼєднання {name} видалено."
msgid "Failed to delete connection: Connection not found."
msgstr "Не вдалося видалити зʼєднання: Зʼєднання не знайдено."
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -5211,33 +5195,33 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
#, fuzzy
#| msgid "Uninstalling an app is an experimental feature."
msgid "This app is experimental."
msgstr "Видалення застосунку — це експериментальна функція."
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
#, fuzzy
#| msgid "Next"
msgid "Nextcloud"
msgstr "Далі"
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -5247,17 +5231,34 @@ msgstr ""
msgid "Not set"
msgstr "Назву компʼютера задано"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "Домен сервера"
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:27
#, fuzzy
#| msgid ""
#| "Used by MediaWiki to generate URLs that point to the wiki such as in "
#| "footer, feeds and emails. Examples: \"myfreedombox.example.org\" or "
#| "\"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
"Використовується в MediaWiki для ґенерування URL-адрес, що вказують на "
"вікісторінки, як-от внизу вебсторінок, у RSS-стрічках або в ел. листах. "
"Наприклад: \"myfreedombox.example.org\" або \"example.onion\"."
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Administrator Password"
msgid "Administrator password"
msgstr "Пароль адміністратора"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
#, fuzzy
#| msgid ""
#| "Set a new password for MediaWiki's administrator account (admin). The "
@ -5274,13 +5275,13 @@ msgstr ""
"Пароль не повинен бути поширеним і не повинен бути коротшим за <strong>10 "
"знаків</strong>. Залиште поле порожнім, щоб зберегти поточний пароль."
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
#, fuzzy
#| msgid "Default zone is external"
msgid "Default phone region"
msgstr "Усталена зона зовнішня"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -8576,67 +8577,103 @@ msgstr "Пакунок {package_expression} недоступний для вст
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr "Пакунок {package_name} має останню версію ({latest_version})"
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "встановлення"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "завантаження"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "зміна медія"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "файл конфіґурації: {file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr "Час очікування менеджера пакунків"
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "Встановлення застосунку"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr "Оновлення застосунку"
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "Помилка встановлення застосунку: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "Помилка оновлення застосунку: {error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "Помилка оновлення застосунку: {error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "Застосунок встановлено."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "Застосунок оновлено"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "Updating app"
msgid "Repairing app"
msgstr "Оновлення застосунку"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Помилка видалення застосунку: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "Застосунок оновлено"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "Видалення застосунку"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "Помилка видалення застосунку: {error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "Застосунок видалено."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "Оновлення пакунків застосунків"
@ -9007,6 +9044,10 @@ msgstr "Оновити"
msgid "Backup"
msgstr "Резервна копія"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "Повторно розпочати налаштування"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"
@ -9038,6 +9079,29 @@ msgstr "перед видаленням {app_id}"
msgid "Gujarati"
msgstr "Gujarati"
#~ msgid "Cannot test: No domains are configured."
#~ msgstr "Тестування не можливе: Нема налаштованих доменів."
#~ msgid "Media streaming server"
#~ msgstr "Сервер потокового медія"
#~ msgid ""
#~ "Directory that MiniDLNA Server will read for content. All sub-directories "
#~ "of this will be also scanned for media files. If you change the default "
#~ "ensure that the new directory exists and that is readable from the "
#~ "\"minidlna\" user. Any user media directories (\"/home/username/\") will "
#~ "usually work."
#~ msgstr ""
#~ "Каталог, який MiniDLNA Server буде зчитувати на предмет вмісту. Всі "
#~ "підкаталоги цього каталогу також будуть проскановані на наявність "
#~ "мультимедійних файлів. Якщо ви змінюєте типові значення, переконайтеся, "
#~ "що новий каталог існує і що він доступний для читання від користувача "
#~ "\"minidlna\". Будь-які каталоги медіафайлів користувача (\"/home/ім'я "
#~ "користувача/\"), як правило, будуть працювати."
#~ msgid "Specified directory does not exist."
#~ msgstr "Призначений каталог не існує."
#~ msgid "Storage snapshots configuration updated"
#~ msgstr "Налаштування зрізів сховища оновлено"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"POT-Creation-Date: 2024-05-06 20:18-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,27 +28,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "Dịch vụ {service_name} đang chạy"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Đang lắng nghe ở cổng {kind} {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Đang lắng nghe ở cổng {kind} {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Kết nối đến {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Không thể kết nối đến {host}:{port}"
@ -143,12 +143,12 @@ msgstr "Máy chủ web"
msgid "{box_name} Web Interface (Plinth)"
msgstr "Giao diện web của {box_name} (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "Truy cập URL {url} qua tcp{kind}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "Truy cập URL {url}"
@ -928,7 +928,7 @@ msgstr "Xoá"
msgid "Admin"
msgstr "Quản trị viên"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1613,8 +1613,7 @@ msgstr "Ứng dụng: %(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1663,10 +1662,15 @@ msgstr "Kiểm tra"
msgid "Result"
msgstr "Kết quả"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "Kiểm tra chẩn đoán"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1867,7 +1871,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2243,12 +2247,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3174,10 +3178,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3629,7 +3629,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3640,28 +3640,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3680,11 +3674,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4810,7 +4800,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4819,29 +4809,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4851,17 +4841,26 @@ msgstr ""
msgid "Not set"
msgstr "Đã đặt tên máy chủ"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Invalid domain name"
msgid "Override domain"
msgstr "Tên miền không hợp lệ"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Server Administration"
msgid "Administrator password"
msgstr "Quản trị máy chủ"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4869,11 +4868,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7725,76 +7724,108 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "Lỗi khi cài đặt ứng dụng: {error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "Lỗi khi cài đặt ứng dụng: {error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "Lỗi khi cài đặt ứng dụng: {error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "Ứng dụng đã được cài đặt."
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "Lỗi khi cài đặt ứng dụng: {error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Error installing application: {error}"
msgid "Uninstalling app"
msgstr "Lỗi khi cài đặt ứng dụng: {error}"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "Lỗi khi cài đặt ứng dụng: {error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "Ứng dụng đã được cài đặt."
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -8133,6 +8164,10 @@ msgstr "Cập nhật"
msgid "Backup"
msgstr "Sao lưu"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -8263,11 +8298,6 @@ msgstr ""
#~ msgid "Direct connection to the Internet."
#~ msgstr "Kết nối trực tiếp đến Internet."
#, fuzzy
#~| msgid "Invalid domain name"
#~ msgid "Enter a valid domain"
#~ msgstr "Tên miền không hợp lệ"
#, fuzzy
#~| msgid "TLS domain"
#~ msgid "domain"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Plinth\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"PO-Revision-Date: 2024-04-10 04:54+0000\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-04-24 07:07+0000\n"
"Last-Translator: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate."
"org>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Generator: Weblate 5.5.1-dev\n"
#: config.py:103
#, python-brace-format
@ -29,27 +29,27 @@ msgstr ""
msgid "FreedomBox"
msgstr "FreedomBox"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "服务{service_name}正在运行"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "正在侦听 {kind} 端口 {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "正在侦听 {kind} 端口 {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "连接到主机 {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "不能连接到主机 {host}:{port}"
@ -136,12 +136,12 @@ msgstr "Web 服务器"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} Web 界面Plinth"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "在 tcp {kind} 访问 URL {url}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "访问 URL {url}"
@ -879,7 +879,7 @@ msgstr "删除"
msgid "Admin"
msgstr "管理员"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1519,9 +1519,8 @@ msgstr "应用程序。%(app_name)s"
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "重新运行安装程序"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
msgid "This app does not support diagnostics"
@ -1563,10 +1562,15 @@ msgstr "测试"
msgid "Result"
msgstr "结果"
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr "诊断测试"
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1744,7 +1748,7 @@ msgstr "状态"
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr "域名"
@ -2110,12 +2114,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr "内网端口 {name}{details})可用"
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "外网端口 {name}{details})可用"
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3074,10 +3078,6 @@ msgstr "Let's Encrypt"
msgid "Certificates"
msgstr "证书"
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr "证书状态"
@ -3522,7 +3522,7 @@ msgstr "禁用后,玩家不能死或受到任何伤害。"
msgid "Address"
msgstr "地址"
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3533,28 +3533,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr "简单媒体服务器"
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3573,11 +3567,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4717,7 +4707,7 @@ msgstr "连接 {name} 已删除。"
msgid "Failed to delete connection: Connection not found."
msgstr "删除连接失败: 找不到连接。"
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4726,47 +4716,54 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
#: modules/nextcloud/forms.py:19
#, fuzzy
#| msgid "Hostname set"
msgid "Not set"
msgstr "主机名设置"
msgstr "未设置"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Server domain"
msgid "Override domain"
msgstr "服务器域"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
msgid "Administrator password"
msgstr "管理员密码"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4774,11 +4771,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr "默认手机区域"
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7697,67 +7694,103 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr "安装"
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr "下载中"
#: package.py:423
#: package.py:424
msgid "media change"
msgstr "媒体改变"
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr "配置文件:{file}"
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr "安装应用中"
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, python-brace-format
msgid "Error installing app: {error}"
msgstr "安装应用出错:{error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error updating app: {error}"
msgid "Error repairing app: {error}"
msgstr "更新应用出错:{error}"
#: setup.py:84
#, python-brace-format
msgid "Error updating app: {error}"
msgstr "更新应用出错:{error}"
#: setup.py:82
#: setup.py:88
msgid "App installed."
msgstr "应用已安装。"
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr "应用已更新"
#: setup.py:101
#: setup.py:110
#, fuzzy
#| msgid "preparing"
msgid "Repairing app"
msgstr "正在准备"
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error uninstalling app: {error}"
msgid "Error running diagnostics: {error}"
msgstr "卸载应用出错:{error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
#, fuzzy
#| msgid "App updated"
msgid "App repaired."
msgstr "应用已更新"
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
msgid "Uninstalling app"
msgstr "卸载应用"
#: setup.py:117
#: setup.py:205
#, python-brace-format
msgid "Error uninstalling app: {error}"
msgstr "卸载应用出错:{error}"
#: setup.py:120
#: setup.py:208
msgid "App uninstalled."
msgstr "应用已卸载。"
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr "更新软件包中"
@ -8104,6 +8137,10 @@ msgstr "更新"
msgid "Backup"
msgstr "备份"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr "重新运行安装程序"
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
msgid "Uninstall"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-22 20:02-0400\n"
"PO-Revision-Date: 2024-04-17 08:03+0000\n"
"POT-Creation-Date: 2024-05-06 20:18-0400\n"
"PO-Revision-Date: 2024-04-24 07:07+0000\n"
"Last-Translator: Ray Kuo <ray20140811@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"freedombox/freedombox/zh_Hant/>\n"
@ -17,38 +17,38 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.5-dev\n"
"X-Generator: Weblate 5.5.1-dev\n"
#: config.py:103
#, python-brace-format
msgid "Static configuration {etc_path} is setup properly"
msgstr ""
msgstr "靜態配置 {etc_path} 已正確設置"
#: context_processors.py:23 views.py:116
msgid "FreedomBox"
msgstr "自由盒子"
#: daemon.py:122
#: daemon.py:124
#, python-brace-format
msgid "Service {service_name} is running"
msgstr "{service_name} 服務執行中"
#: daemon.py:218
#: daemon.py:222
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "正在聆聽 {kind} 埠 {listen_address}:{port}"
#: daemon.py:221
#: daemon.py:225
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "正在聆聽 {kind} 埠 {port}"
#: daemon.py:291
#: daemon.py:296
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "正在連線 {host}:{port}"
#: daemon.py:299
#: daemon.py:304
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "無法連線到 {host}:{port}"
@ -59,7 +59,7 @@ msgstr "解除安裝前備份應用程式"
#: forms.py:37
msgid "Restoring from the backup will restore app data."
msgstr ""
msgstr "從備份中恢復將還原應用程式資料"
#: forms.py:39
#, fuzzy
@ -101,7 +101,7 @@ msgstr "使用瀏覽器語言設定"
#: menu.py:106
msgid "Visibility"
msgstr ""
msgstr "可見性"
#: menu.py:108
msgid "Data"
@ -117,14 +117,12 @@ msgid "Security"
msgstr "安全性"
#: menu.py:114
#, fuzzy
#| msgid "Server Administration"
msgid "Administration"
msgstr "伺服器管理"
msgstr "管理"
#: middleware.py:131
msgid "System is possibly under heavy load. Please retry later."
msgstr ""
msgstr "系統可能負載過重. 請稍後重試."
#: modules/apache/__init__.py:32
msgid "Apache HTTP Server"
@ -139,12 +137,12 @@ msgstr "網頁伺服器"
msgid "{box_name} Web Interface (Plinth)"
msgstr "{box_name} 網頁介面 (Plinth)"
#: modules/apache/components.py:159
#: modules/apache/components.py:162
#, python-brace-format
msgid "Access URL {url} on tcp{kind}"
msgstr "透過 TCP {kind} 開啟網址 {url}"
#: modules/apache/components.py:162
#: modules/apache/components.py:165
#, python-brace-format
msgid "Access URL {url}"
msgstr "開啟網址 {url}"
@ -491,8 +489,8 @@ msgid ""
"To restore a backup on a new %(box_name)s you need the SSH credentials and, "
"if chosen, the encryption passphrase."
msgstr ""
"此儲存庫的認證存在 %(box_name)s。<br /> 如果要備份還原到新的 %(box_name)s 您"
"要 SSH 認證和(如果您有設定)加密密碼。"
"此儲存庫的認證存在 %(box_name)s。<br> 如果要備份還原到新的 %(box_name)s 您"
"要 SSH 認證和(如果您有設定)加密密碼。"
#: modules/backups/templates/backups_add_remote_repository.html:28
msgid "Create Location"
@ -627,18 +625,13 @@ msgid "How to verify?"
msgstr "如何校驗?"
#: modules/backups/templates/verify_ssh_hostkey.html:45
#, fuzzy
#| msgid ""
#| "Run the following command on the SSH host machine. The output should "
#| "match one of the provided options. You can also use dsa, ecdsa, ed25519 "
#| "etc. instead of rsa, by choosing the corresponding file."
msgid ""
"Run the following command on the SSH host machine. The output should match "
"one of the provided options. You can also use DSA, ECDSA, Ed25519 etc. "
"instead of RSA, by choosing the corresponding file."
msgstr ""
"在 SSH 主機執行下列指令。輸出結果應該符合提供選項之一。您也可以使用 dsa、"
"ecdsa、ed25519 等等。要替換 rsa,可以選擇對應的檔案。"
"在 SSH 主機執行下列指令。輸出結果應該符合提供選項之一。您也可以使用 DSA、"
"ECDSA、Ed25519 等等。要替換 RSA,可以選擇對應的檔案。"
#: modules/backups/templates/verify_ssh_hostkey.html:60
msgid "Verify Host"
@ -891,7 +884,7 @@ msgstr "刪除"
msgid "Admin"
msgstr "管理員"
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:52
#: modules/bepasty/views.py:88 modules/diagnostics/views.py:55
#: modules/nextcloud/views.py:62 modules/searx/views.py:35
#: modules/searx/views.py:46 modules/security/views.py:56
#: modules/snapshot/views.py:158 modules/tor/views.py:73
@ -1046,6 +1039,7 @@ msgid ""
"Only letters of the English alphabet, numbers and the characters _ . and - "
"without spaces or special characters. Example: My_Library_2000"
msgstr ""
"只有英文字母、數字和字符 _ . 和 - 不包含空格或特殊字符. 例如:My_Library_2000"
#: modules/calibre/forms.py:28
msgid "A library with this name already exists."
@ -1257,25 +1251,25 @@ msgstr "顯示需要更多技術知識的 app 與功能。"
#: modules/config/forms.py:104
msgid "System-wide logging"
msgstr ""
msgstr "系統-全域 記錄"
#: modules/config/forms.py:105
msgid "Disable logging, for privacy"
msgstr ""
msgstr "為了保護隱私,禁用日誌記錄"
#: modules/config/forms.py:107
msgid "Keep some in memory until a restart, for performance"
msgstr ""
msgstr "為了提高性能,保留在記憶體中,直到重新啟動"
#: modules/config/forms.py:110
msgid "Write to disk, useful for debugging"
msgstr ""
msgstr "寫入磁碟,用於調試"
#: modules/config/forms.py:112
msgid ""
"Logs contain information about who accessed the system and debug information "
"from various services"
msgstr ""
msgstr "日誌記錄了存取系統的人員以及各種服務的調試資訊"
#: modules/config/views.py:49
#, python-brace-format
@ -1530,8 +1524,7 @@ msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:20
#: modules/diagnostics/templates/diagnostics_full.html:48
#: templates/toolbar.html:53
msgid "Re-run setup"
msgid "Try to repair"
msgstr ""
#: modules/diagnostics/templates/diagnostics_app.html:32
@ -1571,10 +1564,15 @@ msgstr ""
msgid "Result"
msgstr ""
#: modules/diagnostics/views.py:111
#: modules/diagnostics/views.py:114
msgid "Diagnostic Test"
msgstr ""
#: modules/diagnostics/views.py:144
#, python-brace-format
msgid "App {app_id} is not installed, cannot repair"
msgstr ""
#: modules/dynamicdns/__init__.py:28
#, python-brace-format
msgid ""
@ -1732,7 +1730,7 @@ msgstr ""
#: modules/dynamicdns/templates/dynamicdns.html:18
#: modules/email/templates/email.html:35
#: modules/letsencrypt/templates/letsencrypt.html:24
#: modules/mediawiki/forms.py:64 modules/nextcloud/forms.py:26
#: modules/mediawiki/forms.py:64
msgid "Domain"
msgstr ""
@ -2104,12 +2102,12 @@ msgstr ""
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
#: modules/firewall/components.py:153
#: modules/firewall/components.py:154
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
#: modules/firewall/components.py:159
#: modules/firewall/components.py:160
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@ -3035,10 +3033,6 @@ msgstr ""
msgid "Certificates"
msgstr ""
#: modules/letsencrypt/__init__.py:105
msgid "Cannot test: No domains are configured."
msgstr ""
#: modules/letsencrypt/templates/letsencrypt.html:25
msgid "Certificate Status"
msgstr ""
@ -3486,7 +3480,7 @@ msgstr ""
msgid "Address"
msgstr ""
#: modules/minidlna/__init__.py:22
#: modules/minidlna/__init__.py:20
msgid ""
"MiniDLNA is a simple media server software, with the aim of being fully "
"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files "
@ -3497,28 +3491,22 @@ msgid ""
"Kodi."
msgstr ""
#: modules/minidlna/__init__.py:44
msgid "Media streaming server"
msgstr ""
#: modules/minidlna/__init__.py:47
#: modules/minidlna/__init__.py:45
msgid "MiniDLNA"
msgstr ""
#: modules/minidlna/__init__.py:48
#: modules/minidlna/__init__.py:46
msgid "Simple Media Server"
msgstr ""
#: modules/minidlna/forms.py:13
#: modules/minidlna/forms.py:20
msgid "Media Files Directory"
msgstr ""
#: modules/minidlna/forms.py:14
#: modules/minidlna/forms.py:21
msgid ""
"Directory that MiniDLNA Server will read for content. All sub-directories of "
"this will be also scanned for media files. If you change the default ensure "
"that the new directory exists and that is readable from the \"minidlna\" "
"user. Any user media directories (\"/home/username/\") will usually work."
"this will be also scanned for media files."
msgstr ""
#: modules/minidlna/manifest.py:10
@ -3537,11 +3525,7 @@ msgstr ""
msgid "totem"
msgstr ""
#: modules/minidlna/views.py:35
msgid "Specified directory does not exist."
msgstr ""
#: modules/minidlna/views.py:38
#: modules/minidlna/views.py:33
msgid "Updated media directory"
msgstr ""
@ -4667,7 +4651,7 @@ msgstr ""
msgid "Failed to delete connection: Connection not found."
msgstr ""
#: modules/nextcloud/__init__.py:20
#: modules/nextcloud/__init__.py:25
msgid ""
"Nextcloud is a self-hosted productivity platform which provides private and "
"secure functions for file sharing, collaborative work, and more. Nextcloud "
@ -4676,29 +4660,29 @@ msgid ""
"interface."
msgstr ""
#: modules/nextcloud/__init__.py:25
#: modules/nextcloud/__init__.py:30
msgid "All users of FreedomBox can use Nextcloud. To perform administrative "
msgstr ""
#: modules/nextcloud/__init__.py:29
#: modules/nextcloud/__init__.py:34
#, python-brace-format
msgid ""
"Please note that Nextcloud is installed and run inside a container provided "
"by the Nextcloud project. Security, quality, privacy and legal reviews are "
"by the Nextcloud community. Security, quality, privacy and legal reviews are "
"done by the upstream project and not by Debian/{box_name}. Updates are "
"performed following an independent cycle."
msgstr ""
#: modules/nextcloud/__init__.py:35
#: modules/nextcloud/__init__.py:40
msgid "This app is experimental."
msgstr ""
#: modules/nextcloud/__init__.py:53 modules/nextcloud/manifest.py:11
#: modules/nextcloud/__init__.py:58 modules/nextcloud/manifest.py:11
#: modules/nextcloud/manifest.py:18
msgid "Nextcloud"
msgstr ""
#: modules/nextcloud/__init__.py:55
#: modules/nextcloud/__init__.py:60
msgid "File Storage & Collaboration"
msgstr ""
@ -4708,17 +4692,26 @@ msgstr ""
msgid "Not set"
msgstr "主機名稱設定"
#: modules/nextcloud/forms.py:26
#, fuzzy
#| msgid "Invalid domain name"
msgid "Override domain"
msgstr "無效的網域名稱"
#: modules/nextcloud/forms.py:27
msgid "Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgid ""
"Set to the domain or IP address that Nextcloud should be forced to generate "
"URLs with. Should not be needed if a valid domain is used to access "
"Nextcloud. Examples: \"myfreedombox.example.org\" or \"example.onion\"."
msgstr ""
#: modules/nextcloud/forms.py:30
#: modules/nextcloud/forms.py:33
#, fuzzy
#| msgid "Server Administration"
msgid "Administrator password"
msgstr "伺服器管理"
#: modules/nextcloud/forms.py:31
#: modules/nextcloud/forms.py:34
msgid ""
"Optional. Set a new password for Nextcloud's administrator account "
"(nextcloud-admin). The password cannot be a common one and the minimum "
@ -4726,11 +4719,11 @@ msgid ""
"keep the current password."
msgstr ""
#: modules/nextcloud/forms.py:38
#: modules/nextcloud/forms.py:41
msgid "Default phone region"
msgstr ""
#: modules/nextcloud/forms.py:39
#: modules/nextcloud/forms.py:42
msgid ""
"The default phone region is required to validate phone numbers in the "
"profile settings without a country code."
@ -7579,76 +7572,108 @@ msgstr ""
msgid "Package {package_name} is the latest version ({latest_version})"
msgstr ""
#: package.py:419
#: package.py:420
msgid "installing"
msgstr ""
#: package.py:421
#: package.py:422
msgid "downloading"
msgstr ""
#: package.py:423
#: package.py:424
msgid "media change"
msgstr ""
#: package.py:425
#: package.py:426
#, python-brace-format
msgid "configuration file: {file}"
msgstr ""
#: package.py:453 package.py:478
#: package.py:454 package.py:479
msgid "Timeout waiting for package manager"
msgstr ""
#: setup.py:39
#: setup.py:42
msgid "Installing app"
msgstr ""
#: setup.py:41
#: setup.py:44
msgid "Updating app"
msgstr ""
#: setup.py:75
#: setup.py:78
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error installing app: {error}"
msgstr "安裝應用遇到錯誤:{error}"
#: setup.py:78
#: setup.py:81 setup.py:151
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error repairing app: {error}"
msgstr "安裝應用遇到錯誤:{error}"
#: setup.py:84
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error updating app: {error}"
msgstr "安裝應用遇到錯誤:{error}"
#: setup.py:82
#: setup.py:88
#, fuzzy
#| msgid "Application installed."
msgid "App installed."
msgstr "應用已完成安裝。"
#: setup.py:84
#: setup.py:92
msgid "App updated"
msgstr ""
#: setup.py:101
#: setup.py:110
msgid "Repairing app"
msgstr ""
#: setup.py:130
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error running diagnostics: {error}"
msgstr "安裝應用遇到錯誤:{error}"
#: setup.py:143
msgid "Skipping repair, no failed checks"
msgstr ""
#: setup.py:157
msgid "Re-running setup to complete repairs"
msgstr ""
#: setup.py:165
msgid "App repaired."
msgstr ""
#: setup.py:169
msgid "App repair completed with errors:\n"
msgstr ""
#: setup.py:189
#, fuzzy
#| msgid "Error installing application: {error}"
msgid "Uninstalling app"
msgstr "安裝應用遇到錯誤:{error}"
#: setup.py:117
#: setup.py:205
#, fuzzy, python-brace-format
#| msgid "Error installing application: {error}"
msgid "Error uninstalling app: {error}"
msgstr "安裝應用遇到錯誤:{error}"
#: setup.py:120
#: setup.py:208
#, fuzzy
#| msgid "Application installed."
msgid "App uninstalled."
msgstr "應用已完成安裝。"
#: setup.py:493
#: setup.py:581
msgid "Updating app packages"
msgstr ""
@ -7985,6 +8010,10 @@ msgstr ""
msgid "Backup"
msgstr "Backups 模組"
#: templates/toolbar.html:53
msgid "Re-run setup"
msgstr ""
#: templates/toolbar.html:59 templates/toolbar.html:60
#: templates/uninstall.html:30
#, fuzzy
@ -8068,11 +8097,6 @@ msgstr ""
#~ msgid "Enable"
#~ msgstr "啟用域名系統安全擴充 DNSSEC"
#, fuzzy
#~| msgid "Invalid domain name"
#~ msgid "Enter a valid domain"
#~ msgstr "無效的網域名稱"
#, fuzzy
#~| msgid "Delete files"
#~ msgid "Delete selected"

View File

@ -69,11 +69,13 @@ class Webserver(app.LeaderComponent):
for url in self.urls:
if '{host}' in url:
results.extend(
diagnose_url_on_all(
url, check_certificate=False,
expect_redirects=self.expect_redirects))
diagnose_url_on_all(url, check_certificate=False,
expect_redirects=self.expect_redirects,
component_id=self.component_id))
else:
results.append(diagnose_url(url, check_certificate=False))
results.append(
diagnose_url(url, check_certificate=False,
component_id=self.component_id))
return results
@ -141,7 +143,8 @@ def diagnose_url(url: str, kind: str | None = None,
check_certificate: bool = True,
extra_options: list[str] | None = None,
wrapper: str | None = None,
expected_output: str | None = None) -> DiagnosticCheck:
expected_output: str | None = None,
component_id: str | None = None) -> DiagnosticCheck:
"""Run a diagnostic on whether a URL is accessible.
Kind can be '4' for IPv4 or '6' for IPv6.
@ -161,10 +164,12 @@ def diagnose_url(url: str, kind: str | None = None,
check_id = f'apache-url-{url}'
description = gettext_noop('Access URL {url}')
return DiagnosticCheck(check_id, description, result, parameters)
return DiagnosticCheck(check_id, description, result, parameters,
component_id)
def diagnose_url_on_all(url: str, expect_redirects: bool = False,
component_id: str | None = None,
**kwargs) -> list[DiagnosticCheck]:
"""Run a diagnostic on whether a URL is accessible."""
results = []
@ -174,7 +179,9 @@ def diagnose_url_on_all(url: str, expect_redirects: bool = False,
if not expect_redirects:
diagnose_kwargs.setdefault('kind', address['kind'])
results.append(diagnose_url(current_url, **diagnose_kwargs))
results.append(
diagnose_url(current_url, component_id=component_id,
**diagnose_kwargs))
return results

View File

@ -72,13 +72,16 @@ def test_webserver_disable(disable):
def test_webserver_diagnose(diagnose_url_on_all, diagnose_url):
"""Test running diagnostics."""
def on_all_side_effect(url, check_certificate, expect_redirects):
def on_all_side_effect(url, check_certificate, expect_redirects,
component_id):
return [
DiagnosticCheck('test-all-id', 'test-result-' + url, 'success')
DiagnosticCheck('test-all-id', 'test-result-' + url, 'success', {},
component_id)
]
def side_effect(url, check_certificate):
return DiagnosticCheck('test-id', 'test-result-' + url, 'success')
def side_effect(url, check_certificate, component_id):
return DiagnosticCheck('test-id', 'test-result-' + url, 'success', {},
component_id)
diagnose_url_on_all.side_effect = on_all_side_effect
diagnose_url.side_effect = side_effect
@ -86,19 +89,26 @@ def test_webserver_diagnose(diagnose_url_on_all, diagnose_url):
urls=['{host}url1', 'url2'], expect_redirects=True)
results = webserver1.diagnose()
assert results == [
DiagnosticCheck('test-all-id', 'test-result-{host}url1', 'success'),
DiagnosticCheck('test-id', 'test-result-url2', 'success')
DiagnosticCheck('test-all-id', 'test-result-{host}url1', 'success', {},
'test-webserver'),
DiagnosticCheck('test-id', 'test-result-url2', 'success', {},
'test-webserver')
]
diagnose_url_on_all.assert_has_calls(
[call('{host}url1', check_certificate=False, expect_redirects=True)])
diagnose_url.assert_has_calls([call('url2', check_certificate=False)])
diagnose_url_on_all.assert_has_calls([
call('{host}url1', check_certificate=False, expect_redirects=True,
component_id='test-webserver')
])
diagnose_url.assert_has_calls(
[call('url2', check_certificate=False, component_id='test-webserver')])
diagnose_url_on_all.reset_mock()
webserver2 = Webserver('test-webserver', 'test-config',
urls=['{host}url1', 'url2'], expect_redirects=False)
results = webserver2.diagnose()
diagnose_url_on_all.assert_has_calls(
[call('{host}url1', check_certificate=False, expect_redirects=False)])
diagnose_url_on_all.assert_has_calls([
call('{host}url1', check_certificate=False, expect_redirects=False,
component_id='test-webserver')
])
@patch('plinth.privileged.service.restart')
@ -244,20 +254,23 @@ def test_diagnose_url(get_addresses, check):
'test-1': 'value-1'
},
'wrapper': 'test-wrapper',
'expected_output': 'test-expected'
'expected_output': 'test-expected',
'component_id': 'test-component',
}
parameters = {key: args[key] for key in ['url', 'kind']}
check.return_value = True
result = diagnose_url(**args)
assert result == DiagnosticCheck(
'apache-url-kind-https://localhost/test-4',
'Access URL {url} on tcp{kind}', Result.PASSED, parameters)
'Access URL {url} on tcp{kind}', Result.PASSED, parameters,
'test-component')
check.return_value = False
result = diagnose_url(**args)
assert result == DiagnosticCheck(
'apache-url-kind-https://localhost/test-4',
'Access URL {url} on tcp{kind}', Result.FAILED, parameters)
'Access URL {url} on tcp{kind}', Result.FAILED, parameters,
'test-component')
del args['kind']
args['url'] = 'https://{host}/test'
@ -287,10 +300,10 @@ def test_diagnose_url(get_addresses, check):
assert results == [
DiagnosticCheck('apache-url-kind-https://test-host-1/test-4',
'Access URL {url} on tcp{kind}', Result.PASSED,
parameters[0]),
parameters[0], 'test-component'),
DiagnosticCheck('apache-url-kind-https://test-host-2/test-6',
'Access URL {url} on tcp{kind}', Result.PASSED,
parameters[1]),
parameters[1], 'test-component'),
]

View File

@ -128,7 +128,7 @@ def _run_on_all_enabled_modules():
app_results = {
'diagnosis': [],
'exception': None,
'show_rerun_setup': False,
'show_repair': False,
}
try:
@ -140,7 +140,7 @@ def _run_on_all_enabled_modules():
for check in app_results['diagnosis']:
if check.result in [Result.FAILED, Result.WARNING]:
app_results['show_rerun_setup'] = True
app_results['show_repair'] = True
break
with results_lock:

View File

@ -12,12 +12,12 @@
<div class="row align-items-center justify-content-between">
<h3>{% blocktrans %}App: {{ app_name }}{% endblocktrans %}</h3>
{% if show_rerun_setup %}
<form class="form form-diagnostics-rerun-setup-button" method="post"
action="{% url 'rerun-setup' app_id=app_id %}">
{% if show_repair %}
<form class="form form-diagnostics-repair-button" method="post"
action="{% url 'diagnostics:repair' app_id=app_id %}">
{% csrf_token %}
<input type="submit" class="btn btn-default"
name="rerun-setup" value="{% trans "Re-run setup" %}"/>
name="repair" value="{% trans "Try to repair" %}"/>
</form>
{% endif %}
</div>

View File

@ -40,12 +40,12 @@
{% endblocktrans %}
</h4>
{% if app_data.show_rerun_setup %}
<form class="form form-diagnostics-rerun-setup-button" method="post"
action="{% url 'rerun-setup' app_id=app_id %}">
{% if app_data.show_repair %}
<form class="form form-diagnostics-repair-button" method="post"
action="{% url 'diagnostics:repair' app_id=app_id %}">
{% csrf_token %}
<input type="submit" class="btn btn-default"
name="rerun-setup" value="{% trans "Re-run setup" %}"/>
name="repair" value="{% trans "Try to repair" %}"/>
</form>
{% endif %}
</div>

View File

@ -14,4 +14,6 @@ urlpatterns = [
name='full'),
re_path(r'^sys/diagnostics/(?P<app_id>[1-9a-z\-_]+)/$', views.diagnose_app,
name='app'),
re_path(r'^sys/diagnostics/repair/(?P<app_id>[1-9a-z\-_]+)/$',
views.repair, name='repair'),
]

View File

@ -7,7 +7,9 @@ import logging
from django.contrib import messages
from django.http import Http404
from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.urls import NoReverseMatch, reverse
from django.utils.translation import gettext_lazy as _
from django.views.decorators.http import require_POST
from django.views.generic import TemplateView
@ -16,6 +18,7 @@ from plinth import operation
from plinth.app import App
from plinth.diagnostic_check import Result
from plinth.modules import diagnostics
from plinth.setup import run_repair_on_app
from plinth.views import AppView
from .forms import ConfigureForm
@ -100,10 +103,10 @@ def diagnose_app(request, app_id):
exception)
diagnosis_exception = str(exception)
show_rerun_setup = False
show_repair = False
for check in diagnosis:
if check.result in [Result.FAILED, Result.WARNING]:
show_rerun_setup = True
show_repair = True
break
return TemplateResponse(
@ -113,5 +116,34 @@ def diagnose_app(request, app_id):
'app_name': app_name,
'results': diagnosis,
'exception': diagnosis_exception,
'show_rerun_setup': show_rerun_setup,
'show_repair': show_repair,
})
@require_POST
def repair(request, app_id):
"""Try to repair failed diagnostics on an app.
Allows apps and components to customize the repair method. Re-run setup is
the default if not specified.
"""
try:
app = App.get(app_id)
except KeyError:
raise Http404('App does not exist')
try:
finish_url = reverse(f'{app_id}:index')
except NoReverseMatch:
# for apps like apache that don't have an index route
finish_url = reverse('diagnostics:index')
current_version = app.get_setup_version()
if not current_version:
logger.warning('App %s is not installed, cannot repair', app_id)
message = _('App {app_id} is not installed, cannot repair')
messages.error(request, str(message).format(app_id=app_id))
return redirect(finish_url)
run_repair_on_app(app_id)
return redirect(finish_url)

View File

@ -142,7 +142,8 @@ class Firewall(app.FollowerComponent):
'details': details
}
results.append(
DiagnosticCheck(check_id, description, result, parameters))
DiagnosticCheck(check_id, description, result, parameters,
self.component_id))
# External zone
if self.is_external:
@ -161,7 +162,8 @@ class Firewall(app.FollowerComponent):
parameters = {'name': port, 'details': details}
results.append(
DiagnosticCheck(check_id, description, result, parameters))
DiagnosticCheck(check_id, description, result, parameters,
self.component_id))
return results

View File

@ -161,28 +161,28 @@ def test_diagnose(get_enabled_services, get_port_details):
'networks', Result.PASSED, {
'name': 'test-port1',
'details': '1234/tcp, 1234/udp'
}),
}, 'test-firewall-1'),
DiagnosticCheck(
'firewall-port-external-unavailable-test-port1',
'Port {name} ({details}) unavailable for external '
'networks', Result.PASSED, {
'name': 'test-port1',
'details': '1234/tcp, 1234/udp'
}),
}, 'test-firewall-1'),
DiagnosticCheck(
'firewall-port-internal-test-port2',
'Port {name} ({details}) available for internal networks',
Result.FAILED, {
'name': 'test-port2',
'details': '2345/udp'
}),
}, 'test-firewall-1'),
DiagnosticCheck(
'firewall-port-external-unavailable-test-port2',
'Port {name} ({details}) unavailable for external networks',
Result.FAILED, {
'name': 'test-port2',
'details': '2345/udp'
}),
}, 'test-firewall-1'),
]
firewall = Firewall('test-firewall-1', ports=['test-port3', 'test-port4'],
@ -195,28 +195,28 @@ def test_diagnose(get_enabled_services, get_port_details):
Result.PASSED, {
'name': 'test-port3',
'details': '3456/tcp'
}),
}, 'test-firewall-1'),
DiagnosticCheck(
'firewall-port-external-available-test-port3',
'Port {name} ({details}) available for external networks',
Result.PASSED, {
'name': 'test-port3',
'details': '3456/tcp'
}),
}, 'test-firewall-1'),
DiagnosticCheck(
'firewall-port-internal-test-port4',
'Port {name} ({details}) available for internal networks',
Result.FAILED, {
'name': 'test-port4',
'details': '4567/udp'
}),
}, 'test-firewall-1'),
DiagnosticCheck(
'firewall-port-external-available-test-port4',
'Port {name} ({details}) available for external networks',
Result.FAILED, {
'name': 'test-port4',
'details': '4567/udp'
}),
}, 'test-firewall-1'),
]

View File

@ -6,17 +6,17 @@ import logging
import pathlib
from django.utils.translation import gettext_lazy as _
from django.utils.translation import gettext_noop
from plinth import app as app_module
from plinth import cfg, menu
from plinth.config import DropinConfigs
from plinth.diagnostic_check import DiagnosticCheck, Result
from plinth.diagnostic_check import DiagnosticCheck
from plinth.modules import names
from plinth.modules.apache.components import diagnose_url
from plinth.modules.backups.components import BackupRestore
from plinth.modules.names.components import DomainType
from plinth.package import Packages
from plinth.setup import store_error_message
from plinth.signals import domain_added, domain_removed, post_app_loading
from plinth.utils import format_lazy
@ -96,17 +96,40 @@ class LetsEncryptApp(app_module.App):
for domain in names.components.DomainName.list():
if domain.domain_type.can_have_certificate:
results.append(diagnose_url('https://' + domain.name))
if not results:
results.append(
DiagnosticCheck(
'letsencrypt-cannot-test',
gettext_noop('Cannot test: No domains are configured.'),
Result.WARNING))
result = diagnose_url('https://' + domain.name)
result.check_id = f'letsencrypt-domain-{domain.name}'
result.parameters['domain'] = domain.name
results.append(result)
return results
def repair(self, failed_checks: list) -> bool:
"""Try to repair failed diagnostics.
Returns whether the app setup should be re-run.
"""
status = get_status()
# Obtain/re-obtain certificates for failing domains
for failed_check in failed_checks:
if not failed_check.check_id.startswith('letsencrypt-domain'):
continue
domain = failed_check.parameters['domain']
try:
domain_status = status['domains'][domain]
if domain_status.get('certificate_available', False):
certificate_obtain(domain)
else:
certificate_reobtain(domain)
except Exception as error:
# This happens if a non-functional domain is configured.
logger.error('Could not re-obtain certificate: %s', error)
# Add the error message to thread local storage
store_error_message(str(error))
return False
def setup(self, old_version):
"""Install and configure the app."""
super().setup(old_version)

View File

@ -2,17 +2,15 @@
"""
FreedomBox app to configure minidlna.
"""
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
from plinth import app as app_module
from plinth import frontpage, menu
from plinth.config import DropinConfigs
from plinth.daemon import Daemon
from plinth.modules import firewall
from plinth.modules.apache.components import Webserver
from plinth.modules.backups.components import BackupRestore
from plinth.modules.firewall.components import Firewall
from plinth.modules.users.components import UsersAndGroups
from plinth.package import Packages, install
from plinth.utils import Version
@ -29,20 +27,20 @@ _description = [
'such as PS3 and Xbox 360) or applications such as totem and Kodi.')
]
SYSTEM_USER = 'minidlna'
class MiniDLNAApp(app_module.App):
"""Freedombox app managing miniDlna."""
app_id = 'minidlna'
_version = 5
_version = 6
def __init__(self) -> None:
"""Initialize the app components."""
super().__init__()
groups = {'minidlna': _('Media streaming server')}
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('MiniDLNA'), icon_filename='minidlna',
short_description=_('Simple Media Server'),
@ -61,29 +59,20 @@ class MiniDLNAApp(app_module.App):
)
self.add(menu_item)
shortcut = frontpage.Shortcut('shortcut-minidlna', info.name,
short_description=info.short_description,
description=info.description,
icon=info.icon_filename,
url='/_minidlna/', login_required=True,
allowed_groups=list(groups))
shortcut = frontpage.Shortcut(
'shortcut-minidlna', info.name,
short_description=info.short_description,
description=info.description, icon=info.icon_filename,
configure_url=reverse_lazy('minidlna:index'), login_required=True)
self.add(shortcut)
packages = Packages('packages-minidlna', ['minidlna'])
self.add(packages)
dropin_configs = DropinConfigs(
'dropin-configs-minidlna',
['/etc/apache2/conf-available/minidlna-freedombox.conf'])
self.add(dropin_configs)
firewall = Firewall('firewall-minidlna', info.name, ports=['minidlna'],
is_external=False)
self.add(firewall)
webserver = Webserver('webserver-minidlna', 'minidlna-freedombox',
urls=['https://{host}/_minidlna/'])
self.add(webserver)
firewall_minidlna = Firewall('firewall-minidlna', info.name,
ports=['minidlna',
'ssdp'], is_external=False)
self.add(firewall_minidlna)
daemon = Daemon('daemon-minidlna', 'minidlna')
self.add(daemon)
@ -92,10 +81,6 @@ class MiniDLNAApp(app_module.App):
**manifest.backup)
self.add(backup_restore)
users_and_groups = UsersAndGroups('users-and-groups-minidlna',
groups=groups)
self.add(users_and_groups)
def setup(self, old_version):
"""Install and configure the app."""
super().setup(old_version)
@ -108,6 +93,19 @@ class MiniDLNAApp(app_module.App):
firewall.remove_passthrough('ipv4', '-A', 'INPUT', '-p', 'tcp',
'--dport', '8200', '-j', 'REJECT')
if old_version and old_version <= 5:
# Remove minidlna LDAP group and disable minidlna apache config
from plinth.modules.apache import privileged as apache_privileged
from plinth.modules.users import privileged as users_privileged
users_privileged.remove_group('minidlna')
apache_privileged.disable('minidlna-freedombox', 'config')
# Restart app to reload firewall
if self.is_enabled():
self.disable()
self.enable()
if not old_version:
self.enable()

View File

@ -1,9 +0,0 @@
<Location /_minidlna/>
Include includes/freedombox-single-sign-on.conf
<IfModule mod_auth_pubtkt.c>
TKTAuthToken "admin"
</IfModule>
ProxyPass http://localhost:8200/
</Location>

View File

@ -3,20 +3,21 @@
FreedomBox configuration form for MiniDLNA server.
"""
from django import forms
from django.utils.translation import gettext_lazy as _
from plinth.modules.storage.forms import (DirectorySelectForm,
DirectoryValidator)
class MiniDLNAServerForm(forms.Form):
from . import SYSTEM_USER
class MiniDLNAServerForm(DirectorySelectForm):
"""MiniDLNA server configuration form."""
media_dir = forms.CharField(
label=_('Media Files Directory'),
help_text=_('Directory that MiniDLNA Server will read for content. All'
' sub-directories of this will be also scanned for media '
'files. '
'If you change the default ensure that the new directory '
'exists and that is readable from the "minidlna" user. '
'Any user media directories ("/home/username/") will '
'usually work.'),
required=False,
)
def __init__(self, *args, **kw):
validator = DirectoryValidator(username=SYSTEM_USER)
super().__init__(
title=_('Media Files Directory'), help_text=_(
'Directory that MiniDLNA Server will read for content. All '
'sub-directories of this will be also scanned for media files.'
), default='/var/lib/minidlna', validator=validator, *args, **kw)

View File

@ -1,8 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Views for the minidlna module."""
import os
from django.contrib import messages
from django.utils.translation import gettext_lazy as _
@ -21,7 +19,8 @@ class MiniDLNAAppView(AppView):
def get_initial(self):
"""Return initial values of the form."""
initial = super().get_initial()
initial.update({'media_dir': privileged.get_media_dir()})
initial.update({'storage_path': privileged.get_media_dir()})
return initial
def form_valid(self, form):
@ -29,12 +28,8 @@ class MiniDLNAAppView(AppView):
old_config = form.initial
new_config = form.cleaned_data
if old_config['media_dir'].strip() != new_config['media_dir']:
if os.path.isdir(new_config['media_dir']) is False:
messages.error(self.request,
_('Specified directory does not exist.'))
else:
privileged.set_media_dir(new_config['media_dir'])
messages.success(self.request, _('Updated media directory'))
if old_config['storage_path'] != new_config['storage_path']:
privileged.set_media_dir(new_config['storage_path'])
messages.success(self.request, _('Updated media directory'))
return super().form_valid(form)

View File

@ -1,17 +1,22 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""FreedomBox app to configure Nextcloud."""
import contextlib
from django.utils.translation import gettext_lazy as _
from plinth import app as app_module
from plinth import cfg, frontpage, menu
from plinth.config import DropinConfigs
from plinth.daemon import Daemon, SharedDaemon
from plinth.modules.apache.components import Webserver, diagnose_url
from plinth.modules.apache.components import (Webserver, diagnose_url,
diagnose_url_on_all)
from plinth.modules.backups.components import BackupRestore
from plinth.modules.firewall.components import (Firewall,
FirewallLocalProtection)
from plinth.modules.names.components import DomainName
from plinth.package import Packages
from plinth.signals import domain_added, domain_removed
from plinth.utils import format_lazy
from . import manifest, privileged
@ -27,8 +32,8 @@ _description = [
'setting a password here.'),
format_lazy(
_('Please note that Nextcloud is installed and run inside a container '
'provided by the Nextcloud project. Security, quality, privacy and '
'legal reviews are done by the upstream project and not by '
'provided by the Nextcloud community. Security, quality, privacy '
'and legal reviews are done by the upstream project and not by '
'Debian/{box_name}. Updates are performed following an independent '
'cycle.'), box_name=_(cfg.box_name)),
format_lazy('<div class="alert alert-warning" role="alert">{}</div>',
@ -87,11 +92,10 @@ class NextcloudApp(app_module.App):
self.add(firewall)
firewall_local_protection = FirewallLocalProtection(
'firewall-local-protection-nextcloud', ['8181'])
'firewall-local-protection-nextcloud', ['9000'])
self.add(firewall_local_protection)
webserver = Webserver('webserver-nextcloud', 'nextcloud-freedombox',
urls=['https://{host}/nextcloud/login'])
webserver = Webserver('webserver-nextcloud', 'nextcloud-freedombox')
self.add(webserver)
daemon = SharedDaemon('shared-daemon-podman-auto-update',
@ -105,7 +109,7 @@ class NextcloudApp(app_module.App):
daemon = SharedDaemon('shared-daemon-nextcloud-mysql', 'mysql')
self.add(daemon)
daemon = Daemon('daemon-nextcloud', 'nextcloud-freedombox')
daemon = NextcloudDaemon('daemon-nextcloud', 'nextcloud-freedombox')
self.add(daemon)
daemon = Daemon('daemon-nextcloud-timer',
@ -116,19 +120,33 @@ class NextcloudApp(app_module.App):
**manifest.backup)
self.add(backup_restore)
@staticmethod
def post_init():
"""Perform post initialization operations."""
domain_added.connect(_on_domain_added)
domain_removed.connect(_on_domain_removed)
def setup(self, old_version):
"""Install and configure the app."""
super().setup(old_version)
with self.get_component(
'shared-daemon-nextcloud-redis').ensure_running():
with self.get_component(
'shared-daemon-nextcloud-mysql').ensure_running():
# Drop-in configs need to be enabled for setup to succeed
self.get_component('dropin-configs-nextcloud').enable()
redis = self.get_component('shared-daemon-nextcloud-redis')
mysql = self.get_component('shared-daemon-nextcloud-mysql')
nextcloud = self.get_component('daemon-nextcloud')
# Determine whether app should be disabled after setup
should_disable = old_version and not nextcloud.is_enabled()
with redis.ensure_running():
with mysql.ensure_running():
# Database needs to be running for successful initialization or
# upgrade of Nextcloud database.
# Drop-in configs need to be enabled for setup to succeed
self.get_component('dropin-configs-nextcloud').enable()
privileged.setup()
_set_trusted_domains()
if should_disable:
self.disable()
if not old_version:
self.enable()
@ -139,35 +157,105 @@ class NextcloudApp(app_module.App):
super().uninstall()
def diagnose(self):
"""Run diagnostics and return the results."""
"""Run diagnostics and return the results.
When an override domain is set, that domain and all other addresses are
expected to work. This is because Nextcloud will accept any Host: HTTP
header and then override it with the provided domain name. When
override domain is not set, only the configured trusted domains along
with local IP addresses are allowed. Others are rejected with an error.
"""
results = super().diagnose()
kwargs = {'check_certificate': False}
url = 'https://{domain}/nextcloud/login'
domain = privileged.get_override_domain()
if domain:
results.append(diagnose_url(url.format(domain=domain), **kwargs))
results += diagnose_url_on_all(url.format(domain='{host}'),
**kwargs)
else:
local_addresses = [('localhost', '4'), ('localhost', '6'),
('127.0.0.1', '4'), ('[::1]', '6')]
for address, kind in local_addresses:
results.append(
diagnose_url(url.format(domain=address), kind=kind,
**kwargs))
results.append(diagnose_url('docker.com'))
return results
class NextcloudDaemon(Daemon):
"""Component to manage Nextcloud container service."""
def is_enabled(self):
"""Return if the daemon/unit is enabled."""
return privileged.is_enabled()
def enable(self):
"""Run operations to enable the daemon/unit."""
super().enable()
privileged.enable()
def disable(self):
"""Run operations to disable the daemon/unit."""
super().disable()
privileged.disable()
class NextcloudBackupRestore(BackupRestore):
"""Component to backup/restore Nextcloud."""
def backup_pre(self, packet):
"""Save database contents."""
super().backup_pre(packet)
self.app.get_component('dropin-configs-nextcloud').enable()
mysql = self.app.get_component('shared-daemon-nextcloud-mysql')
redis = self.app.get_component('shared-daemon-nextcloud-redis')
container = self.app.get_component('daemon-nextcloud')
with mysql.ensure_running():
with redis.ensure_running():
with container.ensure_running():
privileged.dump_database()
with _ensure_nextcloud_running():
privileged.dump_database()
def restore_post(self, packet):
"""Restore database contents."""
super().restore_post(packet)
self.app.get_component('dropin-configs-nextcloud').enable()
mysql = self.app.get_component('shared-daemon-nextcloud-mysql')
redis = self.app.get_component('shared-daemon-nextcloud-redis')
container = self.app.get_component('daemon-nextcloud')
with mysql.ensure_running():
with redis.ensure_running():
with container.ensure_running():
privileged.restore_database()
with _ensure_nextcloud_running():
privileged.restore_database()
def _on_domain_added(sender, domain_type, name='', description='',
services=None, **kwargs):
"""Add domain to list of trusted domains."""
app = app_module.App.get('nextcloud')
if app.needs_setup():
return
_set_trusted_domains()
def _on_domain_removed(sender, domain_type, name='', **kwargs):
"""Update the list of trusted domains."""
app = app_module.App.get('nextcloud')
if app.needs_setup():
return
_set_trusted_domains()
def _set_trusted_domains():
"""Set the list of trusted domains."""
all_domains = DomainName.list_names()
with _ensure_nextcloud_running():
privileged.set_trusted_domains(list(all_domains))
@contextlib.contextmanager
def _ensure_nextcloud_running():
"""Ensure the nextcloud is running and returns to original state."""
app = app_module.App.get('nextcloud')
app.get_component('dropin-configs-nextcloud').enable()
mysql = app.get_component('shared-daemon-nextcloud-mysql')
redis = app.get_component('shared-daemon-nextcloud-redis')
container = app.get_component('daemon-nextcloud')
with mysql.ensure_running():
with redis.ensure_running():
with container.ensure_running():
yield

View File

@ -0,0 +1,8 @@
[Unit]
Description=Nextcloud cron.php job
Documentation=https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/background_jobs_configuration.html#systemd
[Service]
ExecCondition=/usr/bin/podman exec --user www-data nextcloud-freedombox /var/www/html/occ status -e
ExecStart=/usr/bin/podman exec --user www-data nextcloud-freedombox php -f /var/www/html/cron.php
KillMode=process

View File

@ -0,0 +1,11 @@
[Unit]
Description=Run Nextcloud cron.php every 5 minutes
Documentation=https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/background_jobs_configuration.html#systemd
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloud-cron-freedombox.service
[Install]
WantedBy=timers.target

View File

@ -16,10 +16,36 @@ Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav
Redirect 301 /.well-known/webfinger /nextcloud/index.php/.well-known/webfinger
Redirect 301 /.well-known/nodeinfo /nextcloud/index.php/.well-known/nodeinfo
<Location /nextcloud>
ProxyPass http://127.0.0.1:8181
Alias /nextcloud/ /var/lib/nextcloud/
## Send the scheme from user's request to enable Nextcloud to redirect URLs,
## set cookies, set absolute URLs (if any) properly.
RequestHeader set X-Forwarded-Proto 'https' env=HTTPS
</Location>
<IfModule proxy_fcgi_module>
ProxyPassMatch "^/nextcloud/(.*\.php(/.*)?)$" "fcgi://localhost:9000/var/www/html/$1"
</IfModule>
<Directory /var/lib/nextcloud/>
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
# Enable http authorization headers
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>
<FilesMatch ".+\.phps$">
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(ar|p|ps|tml)$">
Require all denied
</FilesMatch>
</IfModule>
</IfModule>
Require all granted
# Allow a limited set of directives in .htaccess files found in /, /config,
# and /data directories of nextcloud.
AllowOverride AuthConfig FileInfo Indexes Limit Options=Indexes,MultiViews
</Directory>

View File

@ -1 +1 @@
#plinth.modules.nextcloud
plinth.modules.nextcloud

View File

@ -22,9 +22,12 @@ def _get_phone_regions():
class NextcloudForm(forms.Form):
"""Nextcloud configuration form."""
domain = forms.CharField(
label=_('Domain'), required=False, help_text=_(
'Examples: "myfreedombox.example.org" or "example.onion".'))
override_domain = forms.CharField(
label=_('Override domain'), required=False, help_text=_(
'Set to the domain or IP address that Nextcloud should be forced '
'to generate URLs with. Should not be needed if a valid domain is '
'used to access Nextcloud. Examples: "myfreedombox.example.org" '
'or "example.onion".'))
admin_password = forms.CharField(
label=_('Administrator password'), help_text=_(

View File

@ -48,9 +48,7 @@ clients = [{
backup = {
'data': {
'directories': [
'/var/lib/containers/storage/volumes/nextcloud-volume-freedombox/'
],
'directories': ['/var/lib/nextcloud/'],
'files': ['/var/lib/plinth/backups-data/nextcloud-database.sql']
}
}

View File

@ -15,13 +15,10 @@ import augeas
from plinth import action_utils
from plinth.actions import privileged
NETWORK_NAME = 'nextcloud-fbx'
BRIDGE_IP = '172.16.16.1'
CONTAINER_IP = '172.16.16.2'
CONTAINER_NAME = 'nextcloud-freedombox'
SERVICE_NAME = 'nextcloud-freedombox'
VOLUME_NAME = 'nextcloud-volume-freedombox'
IMAGE_NAME = 'docker.io/library/nextcloud:stable-apache'
VOLUME_NAME = 'nextcloud-freedombox'
IMAGE_NAME = 'docker.io/library/nextcloud:stable-fpm'
DB_HOST = 'localhost'
DB_NAME = 'nextcloud_fbx'
@ -29,11 +26,7 @@ DB_USER = 'nextcloud_fbx'
GUI_ADMIN = 'nextcloud-admin'
REDIS_DB = 8 # Don't clash with other redis apps
_volume_path = pathlib.Path(
'/var/lib/containers/storage/volumes/') / VOLUME_NAME
_systemd_location = pathlib.Path('/etc/systemd/system/')
_cron_service_file = _systemd_location / 'nextcloud-cron-freedombox.service'
_cron_timer_file = _systemd_location / 'nextcloud-cron-freedombox.timer'
_data_path = pathlib.Path('/var/lib/nextcloud/')
DB_BACKUP_FILE = pathlib.Path(
'/var/lib/plinth/backups-data/nextcloud-database.sql')
@ -42,47 +35,40 @@ DB_BACKUP_FILE = pathlib.Path(
@privileged
def setup():
"""Setup Nextcloud configuration."""
database_password = _generate_secret_key(16)
administrator_password = _generate_secret_key(16)
# Setup database
_create_database()
_set_database_privileges(database_password)
# Setup redis for caching
_redis_listen_socket()
action_utils.podman_run(
network_name=NETWORK_NAME, subnet='172.16.16.0/24',
bridge_ip=BRIDGE_IP, host_port='8181', container_port='80',
container_ip=CONTAINER_IP, container_name=CONTAINER_NAME,
image_name=IMAGE_NAME, extra_run_options=[
'--volume=/run/mysqld/mysqld.sock:/run/mysqld/mysqld.sock',
'--volume=/run/redis/redis-server.sock:'
'/run/redis/redis-server.sock',
'--volume=/run/slapd/ldapi:/run/slapd/ldapi',
f'--volume={VOLUME_NAME}:/var/www/html',
f'--env=TRUSTED_PROXIES={BRIDGE_IP}',
'--env=OVERWRITEWEBROOT=/nextcloud'
])
_configure_firewall(action='add', interface_name=NETWORK_NAME)
volumes = {
'/run/mysqld/mysqld.sock': '/run/mysqld/mysqld.sock',
'/run/redis/redis-server.sock': '/run/redis/redis-server.sock',
'/run/slapd/ldapi': '/run/slapd/ldapi',
VOLUME_NAME: '/var/www/html'
}
env = {'OVERWRITEWEBROOT': '/nextcloud'}
binds_to = ['mariadb.service', 'redis-server.service', 'slapd.service']
action_utils.podman_create(container_name=CONTAINER_NAME,
image_name=IMAGE_NAME, volume_name=VOLUME_NAME,
volume_path=str(_data_path), volumes=volumes,
env=env, binds_to=binds_to)
action_utils.service_start(CONTAINER_NAME)
# OCC isn't immediately available after the container is spun up.
# Wait until CAN_INSTALL file is available.
timeout = 300
while timeout > 0:
if (_volume_path / '_data/config/CAN_INSTALL').exists():
break
_nextcloud_wait_until_ready()
timeout = timeout - 1
time.sleep(1)
# Setup database
_create_database()
database_password = _get_database_password()
if not database_password:
database_password = _generate_secret_key(16)
_set_database_privileges(database_password)
_nextcloud_setup_wizard(database_password, administrator_password)
# Setup redis configuration
_create_redis_config()
_configure_ldap()
# Run setup wizard
_nextcloud_setup_wizard(database_password)
_configure_systemd()
# Setup LDAP configuraiton
_configure_ldap()
def _run_in_container(
@ -101,8 +87,26 @@ def _run_occ(*args, **kwargs) -> subprocess.CompletedProcess:
@privileged
def get_domain():
"""Return domain name set in Nextcloud."""
def is_enabled() -> bool:
"""Return if the systemd container service is enabled."""
return action_utils.podman_is_enabled(CONTAINER_NAME)
@privileged
def enable():
"""Enable the systemd container service."""
action_utils.podman_enable(CONTAINER_NAME)
@privileged
def disable():
"""Disable the systemd container service."""
action_utils.podman_disable(CONTAINER_NAME)
@privileged
def get_override_domain():
"""Return the domain name that Nextcloud is configured to override with."""
try:
domain = _run_occ('config:system:get', 'overwritehost',
capture_output=True)
@ -112,22 +116,33 @@ def get_domain():
@privileged
def set_domain(domain_name: str):
"""Set Nextcloud domain name."""
def set_override_domain(domain_name: str):
"""Set the domain name that Nextcloud will use to override all domains."""
protocol = 'https'
if domain_name.endswith('.onion'):
protocol = 'http'
if domain_name:
_run_occ('config:system:set', 'overwritehost', '--value', domain_name)
_run_occ('config:system:set', 'overwriteprotocol', '--value', protocol)
_run_occ('config:system:set', 'overwrite.cli.url', '--value',
f'{protocol}://{domain_name}/nextcloud')
else:
_run_occ('config:system:delete', 'overwritehost')
_run_occ('config:system:delete', 'overwriteprotocol')
_run_occ('config:system:delete', 'overwrite.cli.url')
_run_occ('config:system:set', 'overwriteprotocol', '--value', protocol)
# Restart to apply changes immediately
action_utils.service_restart('nextcloud-freedombox')
# Restart to apply changes immediately
action_utils.service_restart('nextcloud-freedombox')
@privileged
def set_trusted_domains(domains: list[str]):
"""Set the list of trusted domains."""
_run_occ('config:system:delete', 'trusted_domains')
for index, domain in enumerate(domains):
_run_occ('config:system:set', 'trusted_domains', str(index), '--value',
domain)
@privileged
@ -155,14 +170,6 @@ def set_default_phone_region(region: str):
_run_occ('config:system:set', 'default_phone_region', '--value', region)
def _configure_firewall(action, interface_name):
subprocess.run([
'firewall-cmd', '--permanent', '--zone=trusted',
f'--{action}-interface={interface_name}'
], check=True)
action_utils.service_restart('firewalld')
def _database_query(query: str):
"""Run a database query."""
subprocess.run(['mysql'], input=query.encode(), check=True)
@ -175,9 +182,8 @@ def _create_database():
if _db_file_path.exists():
return
query = f'''CREATE DATABASE {DB_NAME} CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
'''
query = f'CREATE DATABASE IF NOT EXISTS {DB_NAME} ' \
'CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;'
_database_query(query)
@ -192,15 +198,39 @@ def _set_database_privileges(db_password: str):
_database_query(query)
def _nextcloud_wait_until_ready():
"""Wait for Nextcloud container to get ready."""
# Nextcloud copies sources from /usr/src/nextcloud to /var/www/html inside
# the container. Nextcloud is served from the latter location. This happens
# on first run of the container and when upgrade happen.
start_time = time.time()
while time.time() < start_time + 300:
if (_data_path / 'version.php').exists():
break
time.sleep(1)
# Wait while Nextcloud is syncing files, running install or performing an
# upgrade by trying to obtain an exclusive on its init-sync.lock. Wrap the
# echo command with the lock so that the lock is immediately released after
# obtaining. We are unable to obtain the lock for 5 minutes, fail and stop
# the setup process.
lock_file = _data_path / 'nextcloud-init-sync.lock'
subprocess.run(
['flock', '--exclusive', '--wait', '300', lock_file, 'echo'],
check=True)
def _nextcloud_get_status():
"""Return Nextcloud status such installed, in maintenance, etc."""
output = _run_occ('status', '--output=json', capture_output=True)
return json.loads(output.stdout)
def _nextcloud_setup_wizard(db_password, admin_password):
def _nextcloud_setup_wizard(db_password: str):
"""Run the Nextcloud installation wizard and enable cron jobs."""
if not _nextcloud_get_status()['installed']:
admin_password = _generate_secret_key(16)
_run_occ('maintenance:install', '--database=mysql',
'--database-host=localhost:/run/mysqld/mysqld.sock',
f'--database-name={DB_NAME}', f'--database-user={DB_USER}',
@ -211,6 +241,16 @@ def _nextcloud_setup_wizard(db_password, admin_password):
# jobs correctly. Cron is the recommended setting.
_run_occ('background:cron')
# Enable pretty URLs without /index.php in them.
_run_occ('config:system:set', 'htaccess.RewriteBase', '--value',
'/nextcloud')
_run_occ('config:system:set', 'htaccess.IgnoreFrontController',
'--type=boolean', '--value=true')
# Update the .htaccess file to contain mod_rewrite rules needed for pretty
# URLs. This is automatically re-run by scripts when upgrading to next
# version.
_run_occ('maintenance:update:htaccess')
def _configure_ldap():
_run_occ('app:enable', 'user_ldap')
@ -254,50 +294,14 @@ def _configure_ldap():
_run_occ('ldap:set-config', 's01', key, value)
def _configure_systemd():
"""Create systemd units files for container and cron jobs."""
# Create service and timer for running periodic php jobs.
doc = 'https://docs.nextcloud.com/server/stable/admin_manual/' \
'configuration_server/background_jobs_configuration.html#systemd'
nextcloud_cron_service_content = f'''
[Unit]
Description=Nextcloud cron.php job
Documentation={doc}
[Service]
ExecCondition=/usr/bin/podman exec --user www-data {CONTAINER_NAME} /var/www/html/occ status -e
ExecStart=/usr/bin/podman exec --user www-data {CONTAINER_NAME} php -f /var/www/html/cron.php
KillMode=process
''' # noqa: E501
nextcloud_cron_timer_content = '''[Unit]
Description=Run Nextcloud cron.php every 5 minutes
Documentation={doc}
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloud-cron-freedombox.service
[Install]
WantedBy=timers.target
'''
_cron_service_file.write_text(nextcloud_cron_service_content)
_cron_timer_file.write_text(nextcloud_cron_timer_content)
action_utils.service_daemon_reload()
@privileged
def uninstall():
"""Uninstall Nextcloud"""
_drop_database()
_configure_firewall(action='remove', interface_name=NETWORK_NAME)
action_utils.podman_uninstall(container_name=CONTAINER_NAME,
network_name=NETWORK_NAME,
volume_name=VOLUME_NAME,
image_name=IMAGE_NAME)
for path in [_cron_service_file, _cron_timer_file]:
path.unlink(missing_ok=True)
image_name=IMAGE_NAME,
volume_path=str(_data_path))
def _drop_database():
@ -353,7 +357,7 @@ def restore_database():
subprocess.run(['redis-cli', '-n',
str(REDIS_DB), 'FLUSHDB', 'SYNC'], check=False)
_set_database_privileges(_get_dbpassword())
_set_database_privileges(_get_database_password())
# After updating the configuration, a restart seems to be required for the
# new DB password be used.
@ -370,20 +374,21 @@ def restore_database():
_run_occ('maintenance:data-fingerprint')
def _get_dbpassword():
"""Return the database password from config.php.
def _get_database_password():
"""Return the database password from config.php or '' if not set.
OCC cannot run unless Nextcloud can already connect to the database.
"""
code = 'include_once("/var/www/html/config/config.php");' \
'print($CONFIG["dbpassword"]);'
code = 'if (file_exists("/var/www/html/config/config.php")) {' \
'include_once("/var/www/html/config/config.php");' \
'print($CONFIG["dbpassword"] ?? ""); }'
return _run_in_container('php', '-r', code,
capture_output=True).stdout.decode().strip()
def _create_redis_config():
"""Create a php file for Redis configuration."""
config_file = _volume_path / '_data/config/freedombox.config.php'
config_file = _data_path / 'config/freedombox.config.php'
file_content = fr'''<?php
$CONFIG = [
'memcache.distributed' => '\OC\Memcache\Redis',

View File

@ -24,7 +24,7 @@ class NextcloudAppView(AppView):
"""Return the values to fill in the form."""
initial = super().get_initial()
initial.update({
'domain': privileged.get_domain(),
'override_domain': privileged.get_override_domain(),
'default_phone_region': privileged.get_default_phone_region() or ''
})
return initial
@ -39,8 +39,8 @@ class NextcloudAppView(AppView):
def _value_changed(key):
return old_config.get(key) != new_config.get(key)
if _value_changed('domain'):
privileged.set_domain(new_config['domain'])
if _value_changed('override_domain'):
privileged.set_override_domain(new_config['override_domain'])
is_changed = True
if new_config['admin_password']:

View File

@ -89,11 +89,11 @@ class DirectorySelectForm(forms.Form):
storage_subdir = forms.CharField(label=_('Subdirectory (optional)'),
required=False)
def __init__(self, title=None, default='/', validator=DirectoryValidator,
*args, **kwargs):
def __init__(self, title=None, help_text='', default='/',
validator=DirectoryValidator, *args, **kwargs):
super().__init__(*args, **kwargs)
if title:
self.fields['storage_dir'].label = title
self.fields['storage_dir'].label = title
self.fields['storage_dir'].help_text = help_text
self.validator = validator
self.default = default
self.set_form_data()

View File

@ -292,7 +292,7 @@ class Notification(models.StoredNotification):
string_ = str(string_)
if data:
string_ = SafeFormatter().vformat(string_, [], data)
except KeyError as error:
except (KeyError, AttributeError) as error:
logger.warning(
'Notification missing required key during translation: %s',
error)

View File

@ -210,7 +210,7 @@ class Packages(app_module.FollowerComponent):
}
results.append(
DiagnosticCheck(check_id, description, Result.FAILED,
parameters))
parameters, self.component_id))
continue
result = Result.WARNING
@ -230,7 +230,8 @@ class Packages(app_module.FollowerComponent):
'latest_version': str(latest_version)
}
results.append(
DiagnosticCheck(check_id, description, result, parameters))
DiagnosticCheck(check_id, description, result, parameters,
self.component_id))
return results

View File

@ -13,6 +13,7 @@ from django.utils.translation import gettext_noop
import plinth
from plinth import app as app_module
from plinth.diagnostic_check import Result
from plinth.package import Packages
from plinth.signals import post_setup
@ -26,6 +27,8 @@ _is_first_setup = False
is_first_setup_running = False
_is_shutting_down = False
thread_local_storage = threading.local()
def run_setup_on_app(app_id, allow_install=True, rerun=False):
"""Execute the setup process in a thread."""
@ -50,10 +53,10 @@ def run_setup_on_app(app_id, allow_install=True, rerun=False):
thread_data={'allow_install': allow_install})
def _run_setup_on_app(app, current_version):
def _run_setup_on_app(app, current_version, repair: bool = False):
"""Execute the setup process."""
logger.info('Setup run: %s', app.app_id)
exception_to_update = None
exception_to_update: Exception | None = None
message = None
try:
current_version = app.get_setup_version()
@ -74,12 +77,17 @@ def _run_setup_on_app(app, current_version):
if not current_version:
message = gettext_noop('Error installing app: {error}').format(
error=exception)
elif repair:
message = gettext_noop('Error repairing app: {error}').format(
error=exception)
else:
message = gettext_noop('Error updating app: {error}').format(
error=exception)
else:
if not current_version:
message = gettext_noop('App installed.')
elif repair:
return
else:
message = gettext_noop('App updated')
@ -89,6 +97,86 @@ def _run_setup_on_app(app, current_version):
operation.on_update(message, exception_to_update)
def run_repair_on_app(app_id):
"""Execute the repair process in a thread."""
app = app_module.App.get(app_id)
current_version = app.get_setup_version()
if not current_version:
logger.warning('App %s is not installed, cannot repair', app_id)
return
logger.debug('Creating operation to repair app: %s', app_id)
return operation_module.manager.new(f'{app_id}-repair', app_id,
gettext_noop('Repairing app'),
_run_repair_on_app, [app],
show_message=True,
show_notification=True)
def _run_repair_on_app(app: app_module.App):
"""Execute the repair process."""
logger.info('Repair run: %s', app.app_id)
message = None
operation = operation_module.Operation.get_operation()
# Always re-run diagnostics first for this app, to ensure results are
# current.
checks = []
try:
checks = app.diagnose()
except Exception as exception:
logger.error('Error running %s diagnostics - %s', app.app_id,
exception)
message = gettext_noop('Error running diagnostics: {error}').format(
error=exception)
operation.on_update(message, exception)
return
# Filter for checks that have failed.
failed_checks = []
for check in checks:
if check.result in [Result.FAILED, Result.WARNING]:
failed_checks.append(check)
if not failed_checks:
logger.warning('Skipping repair for %s: no failed checks', app.app_id)
message = gettext_noop('Skipping repair, no failed checks')
operation.on_update(message, None)
return
try:
should_rerun_setup = app.repair(failed_checks)
except Exception as exception:
logger.error('Repair error: %s: %s %s', app.app_id, message, exception)
message = gettext_noop('Error repairing app: {error}').format(
error=exception)
operation.on_update(message, exception)
return
if should_rerun_setup:
message = gettext_noop('Re-running setup to complete repairs')
operation.on_update(message, None)
current_version = app.get_setup_version()
_run_setup_on_app(app, current_version, True)
logger.info('Repair completed: %s', app.app_id)
# Check for errors in thread local storage
message = gettext_noop('App repaired.')
errors = retrieve_error_messages()
exceptions = None
if errors:
message = gettext_noop('App repair completed with errors:\n')
error_message = ''
for error in errors:
message += str(error) + '\n'
error_message += str(error) + '\n'
exceptions = Exception(error_message)
operation.on_update(message, exceptions)
def run_uninstall_on_app(app_id):
"""Execute the uninstall process in a thread."""
# App is already uninstalled
@ -565,3 +653,24 @@ def on_package_cache_updated():
"""Called by D-Bus service when apt package cache is updated."""
force_upgrader = ForceUpgrader.get_instance()
force_upgrader.on_package_cache_updated()
def store_error_message(error_message: str):
"""Add an error message to thread local storage."""
try:
thread_local_storage.errors.append(error_message)
except AttributeError:
thread_local_storage.errors = [error_message]
def retrieve_error_messages() -> list[str]:
"""Retrieve the error messages from thread local storage.
Errors are cleared after retrieval."""
try:
errors = thread_local_storage.errors
thread_local_storage.errors = []
except AttributeError:
errors = []
return errors

View File

@ -279,6 +279,38 @@ def test_app_has_diagnostics(app_with_components):
assert app.has_diagnostics()
@patch('plinth.setup.run_setup_on_app')
def test_app_repair(_run_setup_on_app, app_with_components):
"""Test running repair on an app."""
component = app_with_components.get_component('test-follower-1')
component.repair = Mock(return_value=True)
check1 = DiagnosticCheck('check1', 'check1', Result.FAILED, {})
check2 = DiagnosticCheck('check2', 'check2', Result.WARNING, {})
check3 = DiagnosticCheck('check3', 'check3', Result.FAILED, {},
'test-follower-1')
should_rerun_setup = app_with_components.repair([])
assert not should_rerun_setup
should_rerun_setup = app_with_components.repair([check1])
assert should_rerun_setup
should_rerun_setup = app_with_components.repair([check2])
assert should_rerun_setup
should_rerun_setup = app_with_components.repair([check1, check2])
assert should_rerun_setup
component.repair.assert_not_called()
should_rerun_setup = app_with_components.repair([check3])
assert should_rerun_setup
assert component.repair.mock_calls == [call([check3])]
component.repair = Mock(return_value=False)
should_rerun_setup = app_with_components.repair([check3])
assert not should_rerun_setup
def test_component_initialization():
"""Test that component is initialized properly."""
with pytest.raises(ValueError):
@ -340,6 +372,13 @@ def test_component_has_diagnostics():
assert not component.has_diagnostics()
@patch('plinth.setup.run_setup_on_app')
def test_component_repair(_run_setup_on_app):
"""Test running repair on component."""
component = Component('test-component')
assert component.repair(['test-check'])
def test_follower_component_initialization():
"""Test that follower component is initialized properly."""
component = FollowerComponent('test-follower-1')

View File

@ -165,11 +165,13 @@ def test_dropin_config_diagnose_symlinks(dropin_configs, tmp_path):
DiagnosticCheck(
f'dropin-config-{tmp_path}/etc/test/path1',
'Static configuration {etc_path} is setup properly',
Result.FAILED, {'etc_path': f'{tmp_path}/etc/test/path1'}),
Result.FAILED, {'etc_path': f'{tmp_path}/etc/test/path1'},
'test-component'),
DiagnosticCheck(
f'dropin-config-{tmp_path}/etc/path2',
'Static configuration {etc_path} is setup properly',
Result.FAILED, {'etc_path': f'{tmp_path}/etc/path2'}),
Result.FAILED, {'etc_path': f'{tmp_path}/etc/path2'},
'test-component'),
]
# Proper symlinks exist

View File

@ -181,9 +181,9 @@ def test_ensure_running(subprocess_call, subprocess_run, service_is_running,
def test_diagnose(port_listening, service_is_running, daemon):
"""Test running diagnostics."""
def side_effect(port, kind):
def side_effect(port, kind, _listen_address, component_id):
name = f'test-result-{port}-{kind}'
return DiagnosticCheck(name, name, Result.PASSED)
return DiagnosticCheck(name, name, Result.PASSED, {}, component_id)
daemon = Daemon('test-daemon', 'test-unit', listen_ports=[(8273, 'tcp4'),
(345, 'udp')])
@ -193,13 +193,16 @@ def test_diagnose(port_listening, service_is_running, daemon):
assert results == [
DiagnosticCheck('daemon-running-test-unit',
'Service {service_name} is running', Result.PASSED,
{'service_name': 'test-unit'}),
{'service_name': 'test-unit'}, 'test-daemon'),
DiagnosticCheck('test-result-8273-tcp4', 'test-result-8273-tcp4',
Result.PASSED),
Result.PASSED, {}, 'test-daemon'),
DiagnosticCheck('test-result-345-udp', 'test-result-345-udp',
Result.PASSED)
Result.PASSED, {}, 'test-daemon')
]
port_listening.assert_has_calls([call(8273, 'tcp4'), call(345, 'udp')])
port_listening.assert_has_calls([
call(8273, 'tcp4', None, 'test-daemon'),
call(345, 'udp', None, 'test-daemon')
])
service_is_running.assert_has_calls([call('test-unit')])
service_is_running.return_value = False
@ -342,12 +345,13 @@ def test_diagnose_netcat(popen):
assert popen.mock_calls[2] == call().communicate(input=b'test-input')
result = diagnose_netcat('test-host', 3300, remote_input='test-input',
negate=True)
negate=True, component_id='test-component')
parameters2 = parameters.copy()
parameters2['negate'] = True
assert result == DiagnosticCheck('daemon-netcat-negate-test-host-3300',
'Cannot connect to {host}:{port}',
Result.FAILED, parameters2)
Result.FAILED, parameters2,
'test-component')
popen().returncode = 1
result = diagnose_netcat('test-host', 3300, remote_input='test-input')

View File

@ -23,13 +23,14 @@ def test_result():
def test_diagnostic_check():
"""Test the diagnostic check data class."""
with pytest.raises(TypeError):
DiagnosticCheck()
DiagnosticCheck() # pylint: disable=E1120
check = DiagnosticCheck('some-check-id', 'sample check')
assert check.check_id == 'some-check-id'
assert check.description == 'sample check'
assert check.translated_description == 'sample check'
assert check.result == Result.NOT_DONE
assert check.component_id is None
assert not check.parameters
check = DiagnosticCheck('some-check-id', 'sample check', Result.PASSED)
@ -40,6 +41,10 @@ def test_diagnostic_check():
{'key': 'value'})
assert check.parameters['key'] == 'value'
check = DiagnosticCheck('some-check-id', 'sample check', Result.FAILED, {},
'some-component')
assert check.component_id == 'some-component'
def test_translate():
"""Test formatting the translated description."""
@ -58,7 +63,7 @@ def test_json_encoder_decoder():
check_json = json.dumps(check, cls=CheckJSONEncoder)
for string in [
'"check_id": "some-check-id"', '"description": "sample check"',
'"result": "passed"', '"parameters": {}',
'"result": "passed"', '"parameters": {}', '"component_id": null',
'"__class__": "DiagnosticCheck"'
]:
assert string in check_json

View File

@ -284,32 +284,34 @@ def test_diagnose(cache):
DiagnosticCheck(
'package-available-package1',
'Package {package_expression} is not available for install',
Result.FAILED, {'package_expression': 'package1'}),
Result.FAILED, {'package_expression': 'package1'},
'test-component'),
DiagnosticCheck(
'package-latest-package2',
'Package {package_name} is the latest version ({latest_version})',
Result.PASSED, {
'package_name': 'package2',
'latest_version': '2.0'
}),
}, 'test-component'),
DiagnosticCheck(
'package-latest-package3',
'Package {package_name} is the latest version ({latest_version})',
Result.WARNING, {
'package_name': 'package3',
'latest_version': '3.0'
}),
}, 'test-component'),
DiagnosticCheck(
'package-available-package4 | package5',
'Package {package_expression} is not available for install',
Result.FAILED, {'package_expression': 'package4 | package5'}),
Result.FAILED, {'package_expression': 'package4 | package5'},
'test-component'),
DiagnosticCheck(
'package-latest-package7',
'Package {package_name} is the latest version ({latest_version})',
Result.PASSED, {
'package_name': 'package7',
'latest_version': '4.0'
}),
}, 'test-component'),
]

View File

@ -0,0 +1,19 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Test module for setup module.
"""
from plinth.setup import store_error_message, retrieve_error_messages
def test_store_retrieve_error_message():
"""Test storing and retrieving error messages."""
store_error_message('error 1')
assert retrieve_error_messages() == ['error 1']
store_error_message('error 1')
store_error_message('error 2')
assert retrieve_error_messages() == ['error 1', 'error 2']
# errors are cleared after retrieving
assert retrieve_error_messages() == []