mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-03-25 09:21:10 +00:00
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:
commit
41cdeeefd2
55
debian/changelog
vendored
55
debian/changelog
vendored
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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]].
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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]].
|
||||
|
||||
@ -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
|
||||
|
||||
@ -3,4 +3,4 @@
|
||||
Package init file.
|
||||
"""
|
||||
|
||||
__version__ = '24.9'
|
||||
__version__ = '24.10'
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 "Настройките на моментните снимки на хранилището са променени"
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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ítě"
|
||||
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"
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 "Η ρύθμιση παραμέτρων των στιγμιότυπων αποθήκευσης Ενημερώθηκε"
|
||||
|
||||
|
||||
@ -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 "
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 à l’URL {url} via tcp{kind}"
|
||||
|
||||
#: modules/apache/components.py:162
|
||||
#: modules/apache/components.py:165
|
||||
#, python-brace-format
|
||||
msgid "Access URL {url}"
|
||||
msgstr "Accès à l’URL {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 "Let’s Encrypt"
|
||||
msgid "Certificates"
|
||||
msgstr "Certificats de chiffrement"
|
||||
|
||||
#: modules/letsencrypt/__init__.py:105
|
||||
msgid "Cannot test: No domains are configured."
|
||||
msgstr "Test impossible : aucun domaine n’est 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 "
|
||||
"qu’il existe et que l’utilisateur « 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é n’existe 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 d’applications 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} n’est pas disponible à l’installatio
|
||||
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 l’application"
|
||||
|
||||
#: setup.py:41
|
||||
#: setup.py:44
|
||||
msgid "Updating app"
|
||||
msgstr "Mise à jour de l’application"
|
||||
|
||||
#: setup.py:75
|
||||
#: setup.py:78
|
||||
#, python-brace-format
|
||||
msgid "Error installing app: {error}"
|
||||
msgstr "Erreur lors de l’installation de l’appli : {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 l’appli : {error}"
|
||||
|
||||
#: setup.py:84
|
||||
#, python-brace-format
|
||||
msgid "Error updating app: {error}"
|
||||
msgstr "Erreur lors de la mise à jour de l’appli : {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 l’application"
|
||||
|
||||
#: 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 l’appli : {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 l’application"
|
||||
|
||||
#: setup.py:117
|
||||
#: setup.py:205
|
||||
#, python-brace-format
|
||||
msgid "Error uninstalling app: {error}"
|
||||
msgstr "Erreur lors de la désinstallation de l’appli : {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 l’application"
|
||||
|
||||
@ -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 n’est 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 qu’il existe et que l’utilisateur « 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é n’existe pas."
|
||||
|
||||
#~ msgid "Storage snapshots configuration updated"
|
||||
#~ msgstr "Configuration des instantanés de disque mise à jour"
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 "Для выполнения административных действий, используйте "
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 "S’lidhet 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 "S’mund të testojë: S’ka 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ë s’ekziston."
|
||||
|
||||
#: 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 "S’u arrit të fshihet lidhje: S’u 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 & Bashkëpunim"
|
||||
|
||||
@ -5275,15 +5260,32 @@ msgstr "Depozitim Kartelash & 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 "S’mund të testojë: S’ka 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ë s’ekziston."
|
||||
|
||||
#~ 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 "
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 "నిల్వ స్నాప్షాట్ల కాన్ఫిగరేషన్ నవీకరించబడింది"
|
||||
|
||||
|
||||
@ -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: "
|
||||
|
||||
|
||||
@ -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 "Налаштування зрізів сховища оновлено"
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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'),
|
||||
]
|
||||
|
||||
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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'),
|
||||
]
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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'),
|
||||
]
|
||||
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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>
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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>
|
||||
|
||||
@ -1 +1 @@
|
||||
#plinth.modules.nextcloud
|
||||
plinth.modules.nextcloud
|
||||
|
||||
@ -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=_(
|
||||
|
||||
@ -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']
|
||||
}
|
||||
}
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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']:
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
113
plinth/setup.py
113
plinth/setup.py
@ -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
|
||||
|
||||
@ -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')
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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')
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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'),
|
||||
]
|
||||
|
||||
|
||||
|
||||
19
plinth/tests/test_setup.py
Normal file
19
plinth/tests/test_setup.py
Normal 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() == []
|
||||
Loading…
x
Reference in New Issue
Block a user