diff --git a/.gitignore b/.gitignore index 849b4ff89..db26474e7 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,13 @@ debian/freedombox/ debian/plinth.debhelper.log debian/plinth.substvars debian/plinth/ +debian/tmp/ +debian/freedombox-doc-en.debhelper.log +debian/freedombox-doc-en.substvars +debian/freedombox-doc-en/ +debian/freedombox-doc-es.debhelper.log +debian/freedombox-doc-es.substvars +debian/freedombox-doc-es/ *.pytest_cache/ .container/ diff --git a/HACKING.md b/HACKING.md index 4ad6b9301..630f96e11 100644 --- a/HACKING.md +++ b/HACKING.md @@ -396,9 +396,11 @@ host$ sudo apt install xvfb python3-pytest-xvfb # optional, to avoid opening br host$ sudo apt install smbclient # optional, to test samba ``` -- Install the latest version of geckodriver. It is usually a single binary which - you can place at /usr/local/bin/geckodriver . Geckodriver will use whichever - binary is named 'firefox' for launching the browser and interacting with it. +- Install the latest version of + [geckodriver](https://github.com/mozilla/geckodriver/releases). It is usually + a single binary which you can place at `/usr/local/bin/geckodriver` . + Geckodriver will use whichever binary is named 'firefox' for launching the + browser and interacting with it. #### Run FreedomBox Service diff --git a/actions/upgrades b/actions/upgrades index b52e01499..5e7e711be 100755 --- a/actions/upgrades +++ b/actions/upgrades @@ -12,11 +12,15 @@ import pathlib import re import subprocess import sys +import time from plinth.action_utils import (apt_hold, debconf_set_selections, run_apt_command, service_daemon_reload, service_restart) from plinth.modules.apache.components import check_url +from plinth.modules.snapshot import (is_apt_snapshots_enabled, is_supported as + snapshot_is_supported, load_augeas as + snapshot_load_augeas) from plinth.modules.upgrades import (BACKPORTS_SOURCES_LIST, SOURCES_LIST, get_current_release, is_backports_current) @@ -366,10 +370,9 @@ def _check_dist_upgrade(test_upgrade=False): if check_dist == 'testing' and not test_upgrade: return (False, 'test-not-set') - output = subprocess.check_output(['df', '--output=avail,pcent', '/']) - output = output.decode().split('\n')[1].split() - free_space, free_percent = int(output[0]), int(output[1][:-1]) - if free_space < 5000000 or free_percent < 10: + output = subprocess.check_output(['df', '--output=avail', '/']) + free_space = int(output.decode().split('\n')[1]) + if free_space < 5000000: return (False, 'not-enough-free-space') logging.info('Upgrading from %s to %s...', dist, codename) @@ -397,6 +400,26 @@ def _check_dist_upgrade(test_upgrade=False): def _perform_dist_upgrade(): """Perform upgrade to next release of Debian.""" + # Take a snapshot if supported and enabled, then disable snapshots. + snapshots_supported = snapshot_is_supported() + if snapshots_supported: + print('Taking a snapshot before dist upgrade...', flush=True) + subprocess.run(['/usr/share/plinth/actions/snapshot', 'create'], + check=True) + aug = snapshot_load_augeas() + apt_snapshots_enabled = is_apt_snapshots_enabled(aug) + if apt_snapshots_enabled: + print('Disable apt snapshots during dist upgrade...', flush=True) + subprocess.run([ + '/usr/share/plinth/actions/snapshot', 'disable-apt-snapshot', + 'yes' + ], check=True) + else: + print('Apt snapshots already disabled.', flush=True) + else: + print('Snapshots are not supported, skip taking a snapshot.', + flush=True) + # Hold freedombox package during entire dist upgrade. print('Holding freedombox package...', flush=True) with apt_hold(): @@ -448,12 +471,21 @@ def _perform_dist_upgrade(): print('Running unattended-upgrade...', flush=True) subprocess.run(['unattended-upgrade', '--verbose']) + # Restore original snapshots configuration. + if snapshots_supported and apt_snapshots_enabled: + print('Re-enable apt snapshots...', flush=True) + subprocess.run([ + '/usr/share/plinth/actions/snapshot', 'disable-apt-snapshot', 'no' + ], check=True) + # Restart FreedomBox service to ensure it is using the latest # dependencies. print('Restarting FreedomBox service...', flush=True) service_restart('plinth') - # Update apt cache again to trigger force_upgrades. + # After 10 minutes, update apt cache again to trigger force_upgrades. + print('Waiting for 10 minutes...', flush=True) + time.sleep(10 * 60) print('Updating Apt cache...', flush=True) run_apt_command(['update']) diff --git a/actions/zoph b/actions/zoph new file mode 100755 index 000000000..3b6b8a831 --- /dev/null +++ b/actions/zoph @@ -0,0 +1,147 @@ +#!/usr/bin/python3 +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Configuration helper for Zoph server. +""" + +import argparse +import configparser +import json +import os +import re +import subprocess + +from plinth import action_utils + +APACHE_CONF = '/etc/apache2/conf-available/zoph.conf' +DB_BACKUP_FILE = '/var/lib/plinth/backups-data/zoph-database.sql' + + +def parse_arguments(): + """Return parsed command line arguments as dictionary.""" + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + + subparsers.add_parser('pre-install', + help='Perform Zoph pre-install configuration') + subparser = subparsers.add_parser('setup', + help='Perform Zoph configuration setup') + subparsers.add_parser('get-configuration', + help='Return the current configuration') + subparser = subparsers.add_parser('set-configuration', + help='Configure zoph') + subparser.add_argument('--admin-user', help='Name of the admin user') + subparser.add_argument('--enable-osm', help='Enable OpenSteetMap maps') + subparsers.add_parser('is-configured', help='return true if configured') + subparsers.add_parser('dump-database', help='Dump database to file') + subparsers.add_parser('restore-database', + help='Restore database from file') + + subparsers.required = True + return parser.parse_args() + + +def subcommand_pre_install(_): + """Preseed debconf values before packages are installed.""" + action_utils.debconf_set_selections([ + 'zoph zoph/dbconfig-install boolean true', + 'zoph zoph/mysql/admin-user string root' + ]) + + +def subcommand_get_configuration(_): + """Return the current configuration.""" + configuration = {} + process = subprocess.run(['zoph', '--dump-config'], stdout=subprocess.PIPE, + check=True) + for line in process.stdout.decode().splitlines(): + name, value = line.partition(':')[::2] + configuration[name.strip()] = value[1:] + + print(json.dumps(configuration)) + + +def _zoph_configure(key, value): + """Set a configure value in Zoph.""" + subprocess.run(['zoph', '--config', key, value], check=True) + + +def subcommand_setup(_): + """Setup Zoph configuration.""" + _zoph_configure('import.enable', 'true') + _zoph_configure('import.upload', 'true') + _zoph_configure('import.rotate', 'true') + _zoph_configure('path.unzip', 'unzip') + _zoph_configure('path.untar', 'tar xvf') + _zoph_configure('path.ungz', 'gunzip') + + # Maps using OpenStreetMap is enabled by default. + _zoph_configure('maps.provider', 'osm') + + +def _get_db_name(): + """Return the name of the database configured by dbconfig.""" + config = configparser.ConfigParser() + config.read_file(open('/etc/zoph.ini', 'r')) + return config['zoph']['db_name'].strip('"') + + +def subcommand_set_configuration(arguments): + """Setup Zoph Apache configuration.""" + _zoph_configure('interface.user.remote', 'true') + + # Note that using OpenSteetmap as a mapping provider is a very nice + # feature, but some people may regard its use as a privacy issue + if arguments.enable_osm: + value = 'osm' if arguments.enable_osm == 'True' else '' + _zoph_configure('maps.provider', value) + + if arguments.admin_user: + # Edit the database to rename the admin user to FreedomBox admin user. + admin_user = arguments.admin_user + if not re.match(r'^[\w.@][\w.@-]+\Z', admin_user, flags=re.ASCII): + # Check to avoid SQL injection + raise ValueError('Invalid username') + + query = f"UPDATE zoph_users SET user_name='{admin_user}' \ + WHERE user_name='admin';" + + subprocess.run(['mysql', _get_db_name()], input=query.encode(), + check=True) + + +def subcommand_is_configured(_): + """Print whether zoph app is configured.""" + subprocess.run(['zoph', '--get-config', 'interface.user.remote'], + check=True) + + +def subcommand_dump_database(_): + """Dump database to file.""" + db_name = _get_db_name() + os.makedirs(os.path.dirname(DB_BACKUP_FILE), exist_ok=True) + with open(DB_BACKUP_FILE, 'w') as db_backup_file: + subprocess.run(['mysqldump', db_name], stdout=db_backup_file, + check=True) + + +def subcommand_restore_database(_): + """Restore database from file.""" + db_name = _get_db_name() + subprocess.run(['mysqladmin', '--force', 'drop', db_name]) + subprocess.run(['mysqladmin', 'create', db_name], check=True) + with open(DB_BACKUP_FILE, 'r') as db_restore_file: + subprocess.run(['mysql', db_name], stdin=db_restore_file, check=True) + + +def main(): + """Parse arguments and perform all duties.""" + arguments = parse_arguments() + + subcommand = arguments.subcommand.replace('-', '_') + subcommand_method = globals()['subcommand_' + subcommand] + subcommand_method(arguments) + + +if __name__ == '__main__': + main() diff --git a/debian/changelog b/debian/changelog index d9f24c0b9..b6140702d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,46 @@ +freedombox (21.3) unstable; urgency=medium + + [ Oğuz Ersen ] + * Translated using Weblate (Turkish) + + [ ikmaak ] + * Translated using Weblate (Dutch) + + [ Burak Yavuz ] + * Translated using Weblate (Turkish) + + [ Michael Breidenbach ] + * Translated using Weblate (Swedish) + + [ Michalis ] + * Translated using Weblate (Greek) + + [ James Valleroy ] + * upgrades: Mark string as no-python-format + * locale: Update translation strings + * upgrades: Only check free space bytes before dist upgrade + * upgrades: Add 10 minute delay before apt update + * upgrades: Disable apt snapshots during dist upgrade + * locale: Update translation strings + * doc: Fetch latest manual + + [ John Lines ] + * gitignore: Ignore files generated during package build + * zoph: Add new app to organize photos + + [ Sunil Mohan Adapa ] + * tests: functional: Introduce step def. to check if app is enabled + * zoph: Make app unavailable in Buster + + [ Aurélien Couderc ] + * sharing: Improve shares group access description + + [ Fioddor Superconcentrado ] + * HACKING: Link download page for Geckodriver. + * Translated using Weblate (Spanish) + + -- James Valleroy Thu, 11 Feb 2021 17:59:49 -0500 + freedombox (21.2~bpo10+1) buster-backports; urgency=medium * Rebuild for buster-backports. diff --git a/debian/copyright b/debian/copyright index 3491ea7f6..c0cdc3f70 100644 --- a/debian/copyright +++ b/debian/copyright @@ -69,6 +69,8 @@ Files: static/themes/default/icons/diaspora.png static/themes/default/icons/privoxy.png static/themes/default/icons/privoxy.svg static/themes/default/icons/radicale.svg + static/themes/default/icons/zoph.png + static/themes/default/icons/zoph.svg static/themes/default/img/network-connection.svg static/themes/default/img/network-connection-vertical.svg static/themes/default/img/network-ethernet.svg diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki index 15650d433..79a872be1 100644 --- a/doc/manual/en/ReleaseNotes.raw.wiki +++ b/doc/manual/en/ReleaseNotes.raw.wiki @@ -10,6 +10,21 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 21.3 (2021-02-11) == + +=== Highlights === + + * zoph: Add new app to organize photos + * Only available in Debian testing (bullseye) due to issues in buster. + +=== Other Changes === + + * locale: Update translations for Dutch, Greek, Spanish, Swedish, Turkish + * sharing: Improve shares group access description + * upgrades: Add 10 minute delay before apt update + * upgrades: Disable apt snapshots during dist upgrade + * upgrades: Only check free space bytes before dist upgrade + == FreedomBox 21.2 (2021-02-05) == === Highlights === diff --git a/doc/manual/en/ejabberd.raw.wiki b/doc/manual/en/ejabberd.raw.wiki index 63a0aa120..7689159c0 100644 --- a/doc/manual/en/ejabberd.raw.wiki +++ b/doc/manual/en/ejabberd.raw.wiki @@ -60,7 +60,9 @@ If your !FreedomBox is behind a router, you will need to set up port forwarding === Compatible clients === * !FreedomBox provides a web client: [[FreedomBox/Manual/JSXC|JSXC]]. - * [[https://xmpp.org/software/clients.html|XMPP clients]] are available for various desktop and mobile platforms. + * [[https://xmpp.org/software/clients.html|XMPP clients]] are available for various desktop and mobile platforms. !FreedomBox links to the download sources of some of them. Feel free to include more [[https://wiki.debian.org/FreedomBox/Manual/ejabberd?action=edit&editor=text|here]] (needs free registration). We'll notice and might list them in !FreedomBox. + +{{attachment:xmpp-clients_en_V01.png|XMPP clients}} ==== Mobile clients ==== @@ -68,7 +70,7 @@ You can download an XMPP client for your smartphone or tablet among the ones lis ===== Conversations (Android) ===== -[[https://conversations.im/|Conversations]] is an Android XMPP client available on [[https://f-droid.org/packages/eu.siacs.conversations|F-Droid]] or the [[https://play.google.com/store/apps/details?id=eu.siacs.conversations|Play Store]]. In addition to text messaging, you can use Conversations to send images and have group chats. +[[https://conversations.im/|Conversations]] is an Android XMPP client with videochat support available on [[https://f-droid.org/packages/eu.siacs.conversations|F-Droid]] or the [[https://play.google.com/store/apps/details?id=eu.siacs.conversations|Play Store]]. In addition to text messaging, you can use Conversations to send images and have group chats. || {{attachment:conversations-first-screen.png|Conversations - First screen|width=200}} {{attachment:conversations-login.png|Conversations - Login|width=200}} {{attachment:conversations-add-contacts.png|Conversations - Add contacts|width=200}}|| @@ -80,6 +82,22 @@ With ejabberd installed, the !FreedomBox provides an XMPP account for every !Fre Once logged into a FreedomBox/XMPP account (2), the Conversation app provides a + button that brings up a few choices to contact other people (3). +===== Movim (Android) ===== + +[[https://movim.eu/|Movim]] is a free software XMPP client with videochat support for Android available on [[https://f-droid.org/packages/com.movim.movim/|F-Droid]]. + +===== ChatSecure (iOS) ===== + +[[https://chatsecure.org|ChatSecure]] is a free software XMPP client with videochat support available from the [[https://apps.apple.com/us/app/chatsecure/id464200063|App Store]]. + +===== Monal (iOS) ===== + +[[https://monal.im|Monal]] is a free software XMPP client with videochat support available from the [[https://apps.apple.com/us/app/monal-free-xmpp-chat/id317711500|App Store]]. + +===== Siskin (iOS) ===== + +[[https://siskin.im|Siskin]] is a free software XMPP client with videochat support available from the [[https://apps.apple.com/us/app/tigase-messenger/id1153516838|App Store]]. + ==== Desktop clients ==== ===== Gajim (Windows, MacOS, Linux) ===== @@ -107,6 +125,14 @@ When first starting Dino after installation, click on the `Setup account` button Once you have logged in, you will be able to either start a conversation with one of your XMPP contacts or to join a channel (3). +===== Movim (Linux) ===== + +[[https://movim.eu/|Movim]] is a free software XMPP client with videochat support for Linux. The project provides an unofficial Debian package. + +===== Monal (MacOS) ===== + +[[https://monal.im|Monal]] is a free software XMPP client with videochat support available from the [[https://apps.apple.com/app/id1499227291?mt=12|Mac App Store]]. + === External links === @@ -117,6 +143,10 @@ Clients' sites: * Conversations: https://conversations.im * Gajim: https://gajim.org * Dino: https://github.com/dino/dino + * Movim: https://movim.eu + * !ChatSecure: https://chatsecure.org + * Monal: https://monal.im + * Siskin: https://siskin.im ## END_INCLUDE diff --git a/doc/manual/en/images/xmpp-clients_en_V01.png b/doc/manual/en/images/xmpp-clients_en_V01.png new file mode 100644 index 000000000..17ff60652 Binary files /dev/null and b/doc/manual/en/images/xmpp-clients_en_V01.png differ diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki index 15650d433..79a872be1 100644 --- a/doc/manual/es/ReleaseNotes.raw.wiki +++ b/doc/manual/es/ReleaseNotes.raw.wiki @@ -10,6 +10,21 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 21.3 (2021-02-11) == + +=== Highlights === + + * zoph: Add new app to organize photos + * Only available in Debian testing (bullseye) due to issues in buster. + +=== Other Changes === + + * locale: Update translations for Dutch, Greek, Spanish, Swedish, Turkish + * sharing: Improve shares group access description + * upgrades: Add 10 minute delay before apt update + * upgrades: Disable apt snapshots during dist upgrade + * upgrades: Only check free space bytes before dist upgrade + == FreedomBox 21.2 (2021-02-05) == === Highlights === diff --git a/doc/manual/es/ejabberd.raw.wiki b/doc/manual/es/ejabberd.raw.wiki index 1d4ab4cc3..ab47c5492 100644 --- a/doc/manual/es/ejabberd.raw.wiki +++ b/doc/manual/es/ejabberd.raw.wiki @@ -23,7 +23,7 @@ Actualmente !FreedomBox ofrece ambas partes desde su interfaz web: un servidor ( === Privacidad === Con XMPP las conversaciones se pueden securizar de 2 maneras: - 1. TLS: Esto securiza la conexión entre el cliente y el servidor o entre 2 servidores. Esto está áltamente recomendado y ya debería estar soportado por todos los clientes. + 1. TLS: Esto securiza la conexión entre el cliente y el servidor o entre 2 servidores. Esto está altamente recomendado y ya debería estar soportado por todos los clientes. 1. Punto a punto: Esto securiza los mensajes enviados entre los clientes de modo que ni siquiera el servidor pueda ver los contenidos. El último protocolo y también el más cómodo se llama ''OMEMO'' pero solo lo soportan algunos clientes. Algunos clientes que no soportan OMEMO podrían soportar otro protocolo llamado OTR. Para que funcione ambos clientes tienen que ser compatibles con el mismo protocolo. === Establer un Nombre de Dominio === @@ -58,7 +58,9 @@ Si tu !FreedomBox está detrás de un router tendrás que configurar en él la r === Clientes compatibles === * !FreedomBox proporciona un cliente web: [[es/FreedomBox/Manual/JSXC|JSXC]]. - * Hay [[https://xmpp.org/software/clients.html|clientes XMPP]] disponibles para varias platformas de escritorio y móviles. + * Hay [[https://xmpp.org/software/clients.html|clientes XMPP]] disponibles para varias plataformas de escritorio y móviles. !FreedomBox enlaza a las fuentes de descarga de algunos. Eres libre de incluir más [[https://wiki.debian.org/FreedomBox/Manual/ejabberd?action=edit&editor=text|aquí]] (requiere registro libre). Nosotros lo notaremos y quizá lo listemos en !FreedomBox. + +{{attachment:FreedomBox/Manual/ejabberd/xmpp-clients_en_V01.png|clientes XMPP}} ==== Clientes para móvil ==== @@ -66,7 +68,7 @@ Puedes descargar uno de los cliente XMPP para tu smartphone o tableta listados a ===== Conversations (Android) ===== -[[https://conversations.im/|Conversations]] es un cliente XMPP para Android disponnible en [[https://f-droid.org/packages/eu.siacs.conversations|F-Droid]] o en la [[https://play.google.com/store/apps/details?id=eu.siacs.conversations|Play Store]]. Además de para mensajería de texto puedes usar Conversations para enviar imágenes y tener conversaciones grupales. +[[https://conversations.im/|Conversations]] es un cliente XMPP para Android con soporte de videollamada disponible en [[https://f-droid.org/packages/eu.siacs.conversations|F-Droid]] o en la [[https://play.google.com/store/apps/details?id=eu.siacs.conversations|Play Store]]. Además de para mensajería de texto puedes usar Conversations para enviar imágenes y tener conversaciones grupales. || {{attachment:FreedomBox/Manual/ejabberd/conversations-first-screen.png|Conversations - Primera pantalla|width=200}} {{attachment:FreedomBox/Manual/ejabberd/conversations-login.png|Conversations - Pantalla de acceso|width=200}} {{attachment:FreedomBox/Manual/ejabberd/conversations-add-contacts.png|Conversations - Añadir contactos|width=200}}|| @@ -76,7 +78,23 @@ All abrir Conversations por primera vez se te preguntará si quieres crear una c Con ejabberd instalado !FreedomBox proporciona una cuenta XMPP a cada usuario. Se pueden crear usuarios (no-administradores) !FreedomBox en ''Sistema'' -> [[es/FreedomBox/Manual/Users|Usuarios y Grupos]]. -Una vez ingresado en tu cuenta !Freedombox/XMPP la app Conversation proporciona un botón + que ofrece varias opciones para contactar a otra gente (3). +Una vez ingresado en tu cuenta !Freedombox/XMPP la app Conversations proporciona un botón + que ofrece varias opciones para contactar a otra gente (3). + +===== Movim (Android) ===== + +[[https://movim.eu/|Movim]] es un cliente XMPP libre con soporte a videollamadas disponible en [[https://f-droid.org/packages/com.movim.movim/|F-Droid]]. + +===== ChatSecure (iOS) ===== + +[[https://chatsecure.org|ChatSecure]] es un cliente XMPP libre con soporte a videollamadas disponible en [[https://apps.apple.com/us/app/chatsecure/id464200063|App Store]]. + +===== Monal (iOS) ===== + +[[https://monal.im|Monal]] es un cliente XMPP libre con soporte a videollamadas disponible en [[https://apps.apple.com/us/app/monal-free-xmpp-chat/id317711500|App Store]]. + +===== Siskin (iOS) ===== + +[[https://siskin.im|Siskin]] es un cliente XMPP libre con soporte a videollamadas disponible en [[https://apps.apple.com/us/app/tigase-messenger/id1153516838|App Store]]. ==== Clientes de escritorio ==== @@ -105,6 +123,14 @@ Tras la instalación, al abrir Dino por primera vez haz clic en el botón `Confi Una vez ingreses podrás comenzar una conversación con algún contacto XMPP o unirte a un canal (3). +===== Movim (Linux) ===== + +[[https://movim.eu/|Movim]] es un cliente XMPP libre para Linux con soporte a videollamadas. El proyecto proporciona un paquete Debian extraoficial. + +===== Monal (MacOS) ===== + +[[https://monal.im|Monal]] es un cliente XMPP libre con soporte a videollamadas disponible en [[https://apps.apple.com/app/id1499227291?mt=12|Mac App Store]]. + === Enlaces externos === * Sitio web: https://www.ejabberd.im @@ -114,7 +140,10 @@ Sitios de aplicaciones cliente: * Conversations: https://conversations.im * Gajim: https://gajim.org * Dino: https://dino.im - + * Movim: https://movim.eu + * !ChatSecure: https://chatsecure.org + * Monal: https://monal.im + * Siskin: https://siskin.im ## END_INCLUDE diff --git a/doc/manual/es/images/xmpp-clients_en_V01.png b/doc/manual/es/images/xmpp-clients_en_V01.png new file mode 100644 index 000000000..17ff60652 Binary files /dev/null and b/doc/manual/es/images/xmpp-clients_en_V01.png differ diff --git a/plinth/__init__.py b/plinth/__init__.py index 66139952b..ba82630a0 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -3,4 +3,4 @@ Package init file. """ -__version__ = '21.2' +__version__ = '21.3' diff --git a/plinth/locale/ar_SA/LC_MESSAGES/django.po b/plinth/locale/ar_SA/LC_MESSAGES/django.po index 8dd76d6ea..5c0ed09ca 100644 --- a/plinth/locale/ar_SA/LC_MESSAGES/django.po +++ b/plinth/locale/ar_SA/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2020-06-10 15:41+0000\n" "Last-Translator: aiman an \n" "Language-Team: Arabic (Saudi Arabia) %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index 3159dd977..0e176bdbe 100644 --- a/plinth/locale/bg/LC_MESSAGES/django.po +++ b/plinth/locale/bg/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Bulgarian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index b1c628e4e..6397d66c5 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-02-01 18:42+0000\n" "Last-Translator: Oymate \n" "Language-Team: Bengali %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index 2da117cbe..986897de1 100644 --- a/plinth/locale/cs/LC_MESSAGES/django.po +++ b/plinth/locale/cs/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-25 11:32+0000\n" "Last-Translator: Milan \n" "Language-Team: Czech %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index 907e3b1c1..e1197a684 100644 --- a/plinth/locale/da/LC_MESSAGES/django.po +++ b/plinth/locale/da/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Danish %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index cf73f3ead..05f6d3982 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-02-06 03:51+0000\n" "Last-Translator: nautilusx \n" "Language-Team: German %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index c94339021..66df4d940 100644 --- a/plinth/locale/django.pot +++ b/plinth/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -835,13 +835,13 @@ msgstr "" #: plinth/modules/bepasty/views.py:91 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 -#: plinth/modules/tor/views.py:157 +#: plinth/modules/tor/views.py:157 plinth/modules/zoph/views.py:69 msgid "Configuration updated." msgstr "" #: plinth/modules/bepasty/views.py:94 plinth/modules/gitweb/views.py:117 #: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 -#: plinth/modules/tor/views.py:159 +#: plinth/modules/tor/views.py:159 plinth/modules/zoph/views.py:72 msgid "An error occurred during configuration." msgstr "" @@ -5265,7 +5265,7 @@ msgid "Make files in this folder available to anyone with the link." msgstr "" #: plinth/modules/sharing/forms.py:34 -msgid "User groups that can read the files in the share" +msgid "User groups that can read the files in the share:" msgstr "" #: plinth/modules/sharing/forms.py:36 @@ -6160,12 +6160,10 @@ msgid "Could not start distribution update" msgstr "" #: plinth/modules/upgrades/__init__.py:212 -#, python-format msgid "" "There is not enough free space in the root partition to start the " -"distribution update. Please ensure at least 5 GB, and at least 10% of the " -"total space, is free. Distribution update will be retried after 24 hours, if " -"enabled." +"distribution update. Please ensure at least 5 GB is free. Distribution " +"update will be retried after 24 hours, if enabled." msgstr "" #: plinth/modules/upgrades/__init__.py:223 @@ -6896,6 +6894,57 @@ msgstr "" msgid "Server deleted." msgstr "" +#: plinth/modules/zoph/__init__.py:33 +#, python-brace-format +msgid "" +"Zoph manages your photo collection. Photos are stored on your {box_name}, " +"under your control. Instead of focusing on galleries for public display, " +"Zoph focuses on managing them for your own use, organizing them by who took " +"them, where they were taken, and who is in them. Photos can be linked to " +"multiple hierarchical albums and categories. It is easy to find all photos " +"containing a person, or photos taken on a date, or photos taken at a " +"location using search, map and calendar views. Individual photos can be " +"shared with others by sending a direct link." +msgstr "" + +#: plinth/modules/zoph/__init__.py:44 +#, python-brace-format +msgid "" +"The {box_name} user who setup Zoph will also become the administrator in " +"Zoph. For additional users, accounts must be created both in {box_name} and " +"in Zoph with the same user name." +msgstr "" + +#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +msgid "Zoph" +msgstr "" + +#: plinth/modules/zoph/__init__.py:63 +msgid "Photo Organizer" +msgstr "" + +#: plinth/modules/zoph/forms.py:14 +msgid "Enable OpenStreetMap for maps" +msgstr "" + +#: plinth/modules/zoph/forms.py:15 +msgid "" +"When enabled, requests will be made to OpenStreetMap servers from user's " +"browser. This impacts privacy." +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:15 +#: plinth/modules/zoph/templates/zoph-pre-setup.html:28 +msgid "Setup" +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:18 +#, python-format +msgid "" +"User account %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index b690ddbbe..71be22323 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" -"PO-Revision-Date: 2021-01-18 12:32+0000\n" -"Last-Translator: ikmaak \n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" +"PO-Revision-Date: 2021-02-09 23:50+0000\n" +"Last-Translator: Michalis \n" "Language-Team: Greek \n" "Language: el\n" @@ -926,13 +926,13 @@ msgstr "" #: plinth/modules/bepasty/views.py:91 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 -#: plinth/modules/tor/views.py:157 +#: plinth/modules/tor/views.py:157 plinth/modules/zoph/views.py:69 msgid "Configuration updated." msgstr "Η ρύθμιση παραμέτρων Ενημερώθηκε." #: plinth/modules/bepasty/views.py:94 plinth/modules/gitweb/views.py:117 #: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 -#: plinth/modules/tor/views.py:159 +#: plinth/modules/tor/views.py:159 plinth/modules/zoph/views.py:72 msgid "An error occurred during configuration." msgstr "Παρουσιάστηκε σφάλμα κατά τη ρύθμιση παραμέτρων." @@ -3669,7 +3669,7 @@ msgstr "Δημοσίευση κλειδιού στο διακομιστή κλε #: plinth/modules/monkeysphere/templates/monkeysphere.html:27 msgid "Cancel" -msgstr "Ακύρωση" +msgstr "Άκυρο" #: plinth/modules/monkeysphere/templates/monkeysphere.html:36 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:41 @@ -4389,7 +4389,7 @@ msgstr "Διακομιστής DNS" #: plinth/modules/networks/templates/connection_show.html:248 #: plinth/modules/storage/forms.py:139 msgid "Default" -msgstr "Προεπιλεγμένο" +msgstr "Προεπιλογή" #: plinth/modules/networks/templates/connection_show.html:213 msgid "IPv6" @@ -6227,7 +6227,9 @@ msgstr "" "σύνδεσμο." #: plinth/modules/sharing/forms.py:34 -msgid "User groups that can read the files in the share" +#, fuzzy +#| msgid "User groups that can read the files in the share" +msgid "User groups that can read the files in the share:" msgstr "Ομάδες χρηστών που μπορούν να διαβάσουν τα αρχεία στο μέρισμα" #: plinth/modules/sharing/forms.py:36 @@ -6764,7 +6766,7 @@ msgstr "Υποκατάλογος (προαιρετικό)" #: plinth/modules/storage/forms.py:143 msgid "Share" -msgstr "Μέρισμα" +msgstr "Κοινοποίηση" #: plinth/modules/storage/forms.py:151 msgid "Other directory (specify below)" @@ -6969,7 +6971,7 @@ msgstr "Συνδεδεμένοι εισαγωγείς" #: plinth/modules/tahoe/templates/tahoe-post-setup.html:82 msgid "Remove" -msgstr "Καταργήστε" +msgstr "Αφαίρεση" #: plinth/modules/tor/__init__.py:35 msgid "" @@ -7279,12 +7281,10 @@ msgid "Could not start distribution update" msgstr "" #: plinth/modules/upgrades/__init__.py:212 -#, python-format msgid "" "There is not enough free space in the root partition to start the " -"distribution update. Please ensure at least 5 GB, and at least 10% of the " -"total space, is free. Distribution update will be retried after 24 hours, if " -"enabled." +"distribution update. Please ensure at least 5 GB is free. Distribution " +"update will be retried after 24 hours, if enabled." msgstr "" #: plinth/modules/upgrades/__init__.py:223 @@ -8168,6 +8168,59 @@ msgstr "Διαγραφή σύνδεσης" msgid "Server deleted." msgstr "Το μέρισμα διαγράφηκε." +#: plinth/modules/zoph/__init__.py:33 +#, python-brace-format +msgid "" +"Zoph manages your photo collection. Photos are stored on your {box_name}, " +"under your control. Instead of focusing on galleries for public display, " +"Zoph focuses on managing them for your own use, organizing them by who took " +"them, where they were taken, and who is in them. Photos can be linked to " +"multiple hierarchical albums and categories. It is easy to find all photos " +"containing a person, or photos taken on a date, or photos taken at a " +"location using search, map and calendar views. Individual photos can be " +"shared with others by sending a direct link." +msgstr "" + +#: plinth/modules/zoph/__init__.py:44 +#, python-brace-format +msgid "" +"The {box_name} user who setup Zoph will also become the administrator in " +"Zoph. For additional users, accounts must be created both in {box_name} and " +"in Zoph with the same user name." +msgstr "" + +#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +msgid "Zoph" +msgstr "" + +#: plinth/modules/zoph/__init__.py:63 +msgid "Photo Organizer" +msgstr "" + +#: plinth/modules/zoph/forms.py:14 +msgid "Enable OpenStreetMap for maps" +msgstr "" + +#: plinth/modules/zoph/forms.py:15 +msgid "" +"When enabled, requests will be made to OpenStreetMap servers from user's " +"browser. This impacts privacy." +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:15 +#: plinth/modules/zoph/templates/zoph-pre-setup.html:28 +#, fuzzy +#| msgid "Start Setup" +msgid "Setup" +msgstr "Έναρξη εγκατάστασης" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:18 +#, python-format +msgid "" +"User account %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index 54fc4c9b7..819f06bea 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" -"PO-Revision-Date: 2021-02-03 16:41+0000\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" +"PO-Revision-Date: 2021-02-11 18:50+0000\n" "Last-Translator: Fioddor Superconcentrado \n" "Language-Team: Spanish \n" @@ -180,10 +180,8 @@ msgstr "" "lograron. El último fallo es: {error_message}" #: plinth/modules/backups/__init__.py:250 -#, fuzzy -#| msgid "Existing Backups" msgid "Error During Backup" -msgstr "Copias de seguridad existentes" +msgstr "Error al respaldar" #: plinth/modules/backups/forms.py:33 #, python-brace-format @@ -660,10 +658,8 @@ msgid "Backup schedule updated." msgstr "Calendario de respaldos actualizado." #: plinth/modules/backups/views.py:74 -#, fuzzy -#| msgid "Create Backup" msgid "Schedule Backups" -msgstr "Crear copia de seguridad" +msgstr "Agendar respaldos" #: plinth/modules/backups/views.py:106 msgid "Archive created." @@ -916,13 +912,13 @@ msgstr "Admin" #: plinth/modules/bepasty/views.py:91 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 -#: plinth/modules/tor/views.py:157 +#: plinth/modules/tor/views.py:157 plinth/modules/zoph/views.py:69 msgid "Configuration updated." msgstr "Configuración actualizada." #: plinth/modules/bepasty/views.py:94 plinth/modules/gitweb/views.py:117 #: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 -#: plinth/modules/tor/views.py:159 +#: plinth/modules/tor/views.py:159 plinth/modules/zoph/views.py:72 msgid "An error occurred during configuration." msgstr "Ha habido un error en la configuración." @@ -6071,7 +6067,9 @@ msgid "Make files in this folder available to anyone with the link." msgstr "Dar acceso a los archivos de esta carpeta a quien tenga el enlace." #: plinth/modules/sharing/forms.py:34 -msgid "User groups that can read the files in the share" +#, fuzzy +#| msgid "User groups that can read the files in the share" +msgid "User groups that can read the files in the share:" msgstr "Grupos de usuarias/os que pueden leer los archivos compartidos" #: plinth/modules/sharing/forms.py:36 @@ -7092,27 +7090,35 @@ msgstr "FreedomBox actualizado" #: plinth/modules/upgrades/__init__.py:210 msgid "Could not start distribution update" -msgstr "" +msgstr "No se pudo iniciar la actualización de la distribución" #: plinth/modules/upgrades/__init__.py:212 -#, python-format +#, fuzzy +#| msgid "" +#| "There is not enough free space in the root partition to start the " +#| "distribution update. Please ensure at least 5 GB, and at least 10% of the " +#| "total space, is free. Distribution update will be retried after 24 hours, " +#| "if enabled." msgid "" "There is not enough free space in the root partition to start the " -"distribution update. Please ensure at least 5 GB, and at least 10% of the " -"total space, is free. Distribution update will be retried after 24 hours, if " -"enabled." +"distribution update. Please ensure at least 5 GB is free. Distribution " +"update will be retried after 24 hours, if enabled." msgstr "" +"No hay suficiente espacio libre en la partición raíz para iniciar la " +"actualización de la distrbución. Por favor, asegure que al menos 5 GB y un " +"10% del espacio libre total están libres. Si está habilitada, la " +"actualización de la distribución se reintentará tras 24h ." #: plinth/modules/upgrades/__init__.py:223 -#, fuzzy -#| msgid "Distribution upgrade disabled" msgid "Distribution update started" -msgstr "Actualización automática de distibución desactivada" +msgstr "Iniciada la actualización de la distribución" #: plinth/modules/upgrades/__init__.py:225 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" +"Se inició la actualización a la nueva publicación estable. Podría llevar " +"mucho tiempo completarla." #: plinth/modules/upgrades/forms.py:15 msgid "Enable auto-update" @@ -7916,6 +7922,59 @@ msgstr "Eliminar conexión al servidor" msgid "Server deleted." msgstr "Servidor eliminado." +#: plinth/modules/zoph/__init__.py:33 +#, python-brace-format +msgid "" +"Zoph manages your photo collection. Photos are stored on your {box_name}, " +"under your control. Instead of focusing on galleries for public display, " +"Zoph focuses on managing them for your own use, organizing them by who took " +"them, where they were taken, and who is in them. Photos can be linked to " +"multiple hierarchical albums and categories. It is easy to find all photos " +"containing a person, or photos taken on a date, or photos taken at a " +"location using search, map and calendar views. Individual photos can be " +"shared with others by sending a direct link." +msgstr "" + +#: plinth/modules/zoph/__init__.py:44 +#, python-brace-format +msgid "" +"The {box_name} user who setup Zoph will also become the administrator in " +"Zoph. For additional users, accounts must be created both in {box_name} and " +"in Zoph with the same user name." +msgstr "" + +#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +msgid "Zoph" +msgstr "" + +#: plinth/modules/zoph/__init__.py:63 +msgid "Photo Organizer" +msgstr "" + +#: plinth/modules/zoph/forms.py:14 +msgid "Enable OpenStreetMap for maps" +msgstr "" + +#: plinth/modules/zoph/forms.py:15 +msgid "" +"When enabled, requests will be made to OpenStreetMap servers from user's " +"browser. This impacts privacy." +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:15 +#: plinth/modules/zoph/templates/zoph-pre-setup.html:28 +#, fuzzy +#| msgid "Start Setup" +msgid "Setup" +msgstr "Iniciar configuración" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:18 +#, python-format +msgid "" +"User account %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index 9d77aae06..97d130849 100644 --- a/plinth/locale/fa/LC_MESSAGES/django.po +++ b/plinth/locale/fa/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Persian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 6db960824..effd43c8c 100644 --- a/plinth/locale/fake/LC_MESSAGES/django.po +++ b/plinth/locale/fake/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth 0.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPOE" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index be97e833b..1072eb3a9 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-02-06 03:51+0000\n" "Last-Translator: Coucouf \n" "Language-Team: French %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index 2ad02f535..7f02102da 100644 --- a/plinth/locale/gl/LC_MESSAGES/django.po +++ b/plinth/locale/gl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Galician %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index 292ebfba6..06c325e89 100644 --- a/plinth/locale/gu/LC_MESSAGES/django.po +++ b/plinth/locale/gu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Gujarati %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index 84f796677..5251c6b83 100644 --- a/plinth/locale/hi/LC_MESSAGES/django.po +++ b/plinth/locale/hi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Hindi %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "पीपीपीअोइ" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 76a7c9897..f25e736cb 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-02-01 18:42+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Hungarian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index b3edc6db1..f18ebce62 100644 --- a/plinth/locale/id/LC_MESSAGES/django.po +++ b/plinth/locale/id/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (FreedomBox)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2018-11-02 00:44+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Indonesian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index 197c0955c..90455f3e0 100644 --- a/plinth/locale/it/LC_MESSAGES/django.po +++ b/plinth/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-02-01 18:42+0000\n" "Last-Translator: Dietmar \n" "Language-Team: Italian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index 921d6c0bc..452abc14a 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -836,13 +836,13 @@ msgstr "" #: plinth/modules/bepasty/views.py:91 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 -#: plinth/modules/tor/views.py:157 +#: plinth/modules/tor/views.py:157 plinth/modules/zoph/views.py:69 msgid "Configuration updated." msgstr "" #: plinth/modules/bepasty/views.py:94 plinth/modules/gitweb/views.py:117 #: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 -#: plinth/modules/tor/views.py:159 +#: plinth/modules/tor/views.py:159 plinth/modules/zoph/views.py:72 msgid "An error occurred during configuration." msgstr "" @@ -5266,7 +5266,7 @@ msgid "Make files in this folder available to anyone with the link." msgstr "" #: plinth/modules/sharing/forms.py:34 -msgid "User groups that can read the files in the share" +msgid "User groups that can read the files in the share:" msgstr "" #: plinth/modules/sharing/forms.py:36 @@ -6161,12 +6161,10 @@ msgid "Could not start distribution update" msgstr "" #: plinth/modules/upgrades/__init__.py:212 -#, python-format msgid "" "There is not enough free space in the root partition to start the " -"distribution update. Please ensure at least 5 GB, and at least 10% of the " -"total space, is free. Distribution update will be retried after 24 hours, if " -"enabled." +"distribution update. Please ensure at least 5 GB is free. Distribution " +"update will be retried after 24 hours, if enabled." msgstr "" #: plinth/modules/upgrades/__init__.py:223 @@ -6897,6 +6895,57 @@ msgstr "" msgid "Server deleted." msgstr "" +#: plinth/modules/zoph/__init__.py:33 +#, python-brace-format +msgid "" +"Zoph manages your photo collection. Photos are stored on your {box_name}, " +"under your control. Instead of focusing on galleries for public display, " +"Zoph focuses on managing them for your own use, organizing them by who took " +"them, where they were taken, and who is in them. Photos can be linked to " +"multiple hierarchical albums and categories. It is easy to find all photos " +"containing a person, or photos taken on a date, or photos taken at a " +"location using search, map and calendar views. Individual photos can be " +"shared with others by sending a direct link." +msgstr "" + +#: plinth/modules/zoph/__init__.py:44 +#, python-brace-format +msgid "" +"The {box_name} user who setup Zoph will also become the administrator in " +"Zoph. For additional users, accounts must be created both in {box_name} and " +"in Zoph with the same user name." +msgstr "" + +#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +msgid "Zoph" +msgstr "" + +#: plinth/modules/zoph/__init__.py:63 +msgid "Photo Organizer" +msgstr "" + +#: plinth/modules/zoph/forms.py:14 +msgid "Enable OpenStreetMap for maps" +msgstr "" + +#: plinth/modules/zoph/forms.py:15 +msgid "" +"When enabled, requests will be made to OpenStreetMap servers from user's " +"browser. This impacts privacy." +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:15 +#: plinth/modules/zoph/templates/zoph-pre-setup.html:28 +msgid "Setup" +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:18 +#, python-format +msgid "" +"User account %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index 8121bbab4..81d1a060f 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2020-07-16 16:41+0000\n" "Last-Translator: Yogesh \n" "Language-Team: Kannada %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index 4ebc0b197..f233225de 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Lithuanian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index 5929a166b..3fa3804b1 100644 --- a/plinth/locale/nb/LC_MESSAGES/django.po +++ b/plinth/locale/nb/LC_MESSAGES/django.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-23 17:44+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index dbd04fff4..508650a4a 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" -"PO-Revision-Date: 2021-02-01 18:42+0000\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" +"PO-Revision-Date: 2021-02-08 06:50+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch \n" @@ -913,13 +913,13 @@ msgstr "Admin" #: plinth/modules/bepasty/views.py:91 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 -#: plinth/modules/tor/views.py:157 +#: plinth/modules/tor/views.py:157 plinth/modules/zoph/views.py:69 msgid "Configuration updated." msgstr "Configuratie bijgewerkt." #: plinth/modules/bepasty/views.py:94 plinth/modules/gitweb/views.py:117 #: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 -#: plinth/modules/tor/views.py:159 +#: plinth/modules/tor/views.py:159 plinth/modules/zoph/views.py:72 msgid "An error occurred during configuration." msgstr "Er is een fout opgetreden tijdens de configuratie." @@ -6111,7 +6111,9 @@ msgid "Make files in this folder available to anyone with the link." msgstr "Bestanden in deze map beschikbaar maken voor iedereen met de link." #: plinth/modules/sharing/forms.py:34 -msgid "User groups that can read the files in the share" +#, fuzzy +#| msgid "User groups that can read the files in the share" +msgid "User groups that can read the files in the share:" msgstr "Gebruikersgroepen die de bestanden in de share kunnen lezen" #: plinth/modules/sharing/forms.py:36 @@ -7129,27 +7131,33 @@ msgstr "FreedomBox geaktualiseerd" #: plinth/modules/upgrades/__init__.py:210 msgid "Could not start distribution update" -msgstr "" +msgstr "Kan distributie-update niet starten" #: plinth/modules/upgrades/__init__.py:212 -#, python-format +#, fuzzy +#| msgid "" +#| "There is not enough free space in the root partition to start the " +#| "distribution update. Please ensure at least 5 GB, and at least 10% of the " +#| "total space, is free. Distribution update will be retried after 24 hours, " +#| "if enabled." msgid "" "There is not enough free space in the root partition to start the " -"distribution update. Please ensure at least 5 GB, and at least 10% of the " -"total space, is free. Distribution update will be retried after 24 hours, if " -"enabled." +"distribution update. Please ensure at least 5 GB is free. Distribution " +"update will be retried after 24 hours, if enabled." msgstr "" +"Er is niet genoeg vrije ruimte in de root partitie om de distributie-update " +"te starten. Zorg ervoor dat ten minste 5 GB en ten minste 10% van de totale " +"ruimte vrij is. Als ingeschakeld, wordt de distributie-update na 24 uur " +"opnieuw geprobeerd." #: plinth/modules/upgrades/__init__.py:223 -#, fuzzy -#| msgid "Distribution upgrade disabled" msgid "Distribution update started" -msgstr "Distributie bijwerken uitgeschakeld" +msgstr "Distributie-update gestart" #: plinth/modules/upgrades/__init__.py:225 msgid "" "Started update to next stable release. This may take a long time to complete." -msgstr "" +msgstr "Update naar volgende stabiele release gestart. Dit kan lang duren." #: plinth/modules/upgrades/forms.py:15 msgid "Enable auto-update" @@ -7958,6 +7966,59 @@ msgstr "Verwijder verbinding met server" msgid "Server deleted." msgstr "Server verwijderd." +#: plinth/modules/zoph/__init__.py:33 +#, python-brace-format +msgid "" +"Zoph manages your photo collection. Photos are stored on your {box_name}, " +"under your control. Instead of focusing on galleries for public display, " +"Zoph focuses on managing them for your own use, organizing them by who took " +"them, where they were taken, and who is in them. Photos can be linked to " +"multiple hierarchical albums and categories. It is easy to find all photos " +"containing a person, or photos taken on a date, or photos taken at a " +"location using search, map and calendar views. Individual photos can be " +"shared with others by sending a direct link." +msgstr "" + +#: plinth/modules/zoph/__init__.py:44 +#, python-brace-format +msgid "" +"The {box_name} user who setup Zoph will also become the administrator in " +"Zoph. For additional users, accounts must be created both in {box_name} and " +"in Zoph with the same user name." +msgstr "" + +#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +msgid "Zoph" +msgstr "" + +#: plinth/modules/zoph/__init__.py:63 +msgid "Photo Organizer" +msgstr "" + +#: plinth/modules/zoph/forms.py:14 +msgid "Enable OpenStreetMap for maps" +msgstr "" + +#: plinth/modules/zoph/forms.py:15 +msgid "" +"When enabled, requests will be made to OpenStreetMap servers from user's " +"browser. This impacts privacy." +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:15 +#: plinth/modules/zoph/templates/zoph-pre-setup.html:28 +#, fuzzy +#| msgid "Start Setup" +msgid "Setup" +msgstr "Setup starten" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:18 +#, python-format +msgid "" +"User account %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index a04914edd..34f2e03d5 100644 --- a/plinth/locale/pl/LC_MESSAGES/django.po +++ b/plinth/locale/pl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-02-01 18:42+0000\n" "Last-Translator: Stanisław Stefan Krukowski \n" "Language-Team: Polish %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index 07093b935..56eb11fd5 100644 --- a/plinth/locale/pt/LC_MESSAGES/django.po +++ b/plinth/locale/pt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Portuguese %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index c0a5cf967..8dfe3ebe0 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-02-01 18:42+0000\n" "Last-Translator: Алексей Докучаев \n" "Language-Team: Russian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPоE" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index 7a26f6ae5..3a89dd7cc 100644 --- a/plinth/locale/sl/LC_MESSAGES/django.po +++ b/plinth/locale/sl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Slovenian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/sr/LC_MESSAGES/django.po b/plinth/locale/sr/LC_MESSAGES/django.po index 597755bc1..370180161 100644 --- a/plinth/locale/sr/LC_MESSAGES/django.po +++ b/plinth/locale/sr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Serbian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 4fac6ba8b..356ba9559 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" -"PO-Revision-Date: 2021-02-01 18:42+0000\n" -"Last-Translator: ikmaak \n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" +"PO-Revision-Date: 2021-02-08 06:50+0000\n" +"Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -154,10 +154,12 @@ msgid "" "Enable an automatic backup schedule for data safety. Prefer an encrypted " "remote backup location or an extra attached disk." msgstr "" +"Aktivera ett automatiskt reservschema för datasäkerhet. Föredra en krypterad " +"plats för fjärrbackup eller en extra ansluten disk." #: plinth/modules/backups/__init__.py:203 msgid "Enable a Backup Schedule" -msgstr "" +msgstr "Aktivera ett schema för säkerhetskopiering" #: plinth/modules/backups/__init__.py:207 #: plinth/modules/backups/__init__.py:254 @@ -172,12 +174,12 @@ msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " "succeed. The latest error is: {error_message}" msgstr "" +"En schemalagd säkerhetskopiering misslyckades. Tidigare {error_count} försök " +"för säkerhetskopiering lyckades inte. Det senaste felet är: {error_message}" #: plinth/modules/backups/__init__.py:250 -#, fuzzy -#| msgid "Existing Backups" msgid "Error During Backup" -msgstr "Befintliga säkerhetskopior" +msgstr "Fel under säkerhetskopiering" #: plinth/modules/backups/forms.py:33 #, python-brace-format @@ -186,37 +188,45 @@ msgstr "{app} (Inga data att säkerhetskopiera)" #: plinth/modules/backups/forms.py:53 msgid "Enable scheduled backups" -msgstr "" +msgstr "Aktivera schemalagda säkerhetskopior" #: plinth/modules/backups/forms.py:54 msgid "" "If enabled, a backup is taken every day, every week and every month. Older " "backups are removed." msgstr "" +"Om aktiverad tas en säkerhetskopia varje dag, varje vecka och varje månad. " +"Äldre säkerhetskopior tas bort." #: plinth/modules/backups/forms.py:58 msgid "Number of daily backups to keep" -msgstr "" +msgstr "Antal dagliga säkerhetskopior att behålla" #: plinth/modules/backups/forms.py:59 msgid "" "This many latest backups are kept and the rest are removed. A value of \"0\" " "disables backups of this type. Triggered at specified hour every day." msgstr "" +"Så här många senaste säkerhetskopior hålls och resten tas bort. Ett värde av " +"\"0\" inaktiverar säkerhetskopior av den här typen. Utlöses vid angiven " +"timme varje dag." #: plinth/modules/backups/forms.py:64 msgid "Number of weekly backups to keep" -msgstr "" +msgstr "Antal veckovisa säkerhetskopior att behålla" #: plinth/modules/backups/forms.py:66 msgid "" "This many latest backups are kept and the rest are removed. A value of \"0\" " "disables backups of this type. Triggered at specified hour every Sunday." msgstr "" +"Så här många senaste säkerhetskopior hålls och resten tas bort. Ett värde av " +"\"0\" inaktiverar säkerhetskopior av den här typen. Utlöses vid angiven " +"timme varje dag." #: plinth/modules/backups/forms.py:71 msgid "Number of monthly backups to keep" -msgstr "" +msgstr "Antal månatliga säkerhetskopior att behålla" #: plinth/modules/backups/forms.py:73 msgid "" @@ -224,14 +234,17 @@ msgid "" "disables backups of this type. Triggered at specified hour first day of " "every month." msgstr "" +"Så här många senaste säkerhetskopior hålls och resten tas bort. Ett värde av " +"\"0\" inaktiverar säkerhetskopior av den här typen. Utlöses vid angiven " +"timme första dagen i varje månad." #: plinth/modules/backups/forms.py:78 msgid "Hour of the day to trigger backup operation" -msgstr "" +msgstr "Timme på dagen för att utlösa säkerhetskopiering" #: plinth/modules/backups/forms.py:79 msgid "In 24 hour format." -msgstr "" +msgstr "I 24-timmarsformat." #: plinth/modules/backups/forms.py:82 plinth/modules/backups/forms.py:104 msgid "Included apps" @@ -503,7 +516,7 @@ msgstr "Den här databasen är krypterad" #: plinth/modules/backups/templates/backups_repository.html:29 msgid "Schedule" -msgstr "" +msgstr "Schema" #: plinth/modules/backups/templates/backups_repository.html:40 msgid "Unmount Location" @@ -636,13 +649,11 @@ msgstr "Verifiera Host" #: plinth/modules/backups/views.py:55 msgid "Backup schedule updated." -msgstr "" +msgstr "Backup schema uppdaterat." #: plinth/modules/backups/views.py:74 -#, fuzzy -#| msgid "Create Backup" msgid "Schedule Backups" -msgstr "Skapa säkerhetskopia" +msgstr "Schemalägg säkerhetskopior" #: plinth/modules/backups/views.py:106 msgid "Archive created." @@ -899,13 +910,13 @@ msgstr "Admin" #: plinth/modules/bepasty/views.py:91 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 -#: plinth/modules/tor/views.py:157 +#: plinth/modules/tor/views.py:157 plinth/modules/zoph/views.py:69 msgid "Configuration updated." msgstr "Konfiguration uppdaterad." #: plinth/modules/bepasty/views.py:94 plinth/modules/gitweb/views.py:117 #: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 -#: plinth/modules/tor/views.py:159 +#: plinth/modules/tor/views.py:159 plinth/modules/zoph/views.py:72 msgid "An error occurred during configuration." msgstr "Ett fel inträffade under konfiguration." @@ -3785,22 +3796,28 @@ msgid "" "Automatic (DHCP): Configure automatically, use Internet connection from this " "network" msgstr "" +"Automatiskt (DHCP): Konfigurera automatiskt, använd Internetanslutning från " +"det här nätverket" #: plinth/modules/networks/forms.py:44 msgid "" "Shared: Act as a router, provide Internet connection to other devices on " "this network" msgstr "" +"Delad: Agera som en router, ge Internet-anslutning till andra enheter i det " +"här nätverket" #: plinth/modules/networks/forms.py:47 plinth/modules/networks/forms.py:85 msgid "" "Manual: Use manually specified parameters, use Internet connection from this " "network" msgstr "" +"Manuell: Använd manuellt angivna parametrar, använd Internet-anslutning från " +"det här nätverket" #: plinth/modules/networks/forms.py:50 msgid "Disabled: Do not configure this addressing method" -msgstr "" +msgstr "Inaktiverad: Konfigurera inte den här adresseringsmetoden" #: plinth/modules/networks/forms.py:57 msgid "Netmask" @@ -3857,16 +3874,20 @@ msgstr "IPv6-Addresseringsmetod" msgid "" "Automatic: Configure automatically, use Internet connection from this network" msgstr "" +"Automatiskt: Konfigurera automatiskt, använd Internetanslutning från det här " +"nätverket" #: plinth/modules/networks/forms.py:82 msgid "" "Automatic (DHCP only): Configure automatically, use Internet connection from " "this network" msgstr "" +"Endast automatiskt (Endast DHCP): Konfigurera automatiskt, använd " +"Internetanslutning från det här nätverket" #: plinth/modules/networks/forms.py:87 msgid "Ignore: Ignore this addressing method" -msgstr "" +msgstr "Ignorera: Ignorera den här adresseringsmetoden" #: plinth/modules/networks/forms.py:92 msgid "Prefix" @@ -4155,6 +4176,10 @@ msgid "" "that you have other means to access %(box_name)s before altering this " "connection." msgstr "" +"Detta är den primära anslutningen som %(box_name)s är beroende av för " +"Internet-anslutning. Ändra det kan göra din %(box_name)s onåbar. Se till att " +"du har andra sätt att komma åt %(box_name)s innan du ändrar den här " +"anslutningen." #: plinth/modules/networks/templates/connection_show.html:36 msgid "Edit connection" @@ -6031,7 +6056,9 @@ msgid "Make files in this folder available to anyone with the link." msgstr "Gör filer i den här mappen tillgängliga för alla med länken." #: plinth/modules/sharing/forms.py:34 -msgid "User groups that can read the files in the share" +#, fuzzy +#| msgid "User groups that can read the files in the share" +msgid "User groups that can read the files in the share:" msgstr "Användargrupper som kan läsa filerna i Share" #: plinth/modules/sharing/forms.py:36 @@ -6963,7 +6990,7 @@ msgstr "" #: plinth/modules/transmission/__init__.py:32 msgid "Please do not change the default port of the transmission daemon." -msgstr "" +msgstr "Vänligen ändra inte standardporten för transmissionsdemonen." #: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 @@ -7042,27 +7069,30 @@ msgstr "FreedomBox uppdaterad" #: plinth/modules/upgrades/__init__.py:210 msgid "Could not start distribution update" -msgstr "" +msgstr "Det gick inte att starta distributionsuppdatering" #: plinth/modules/upgrades/__init__.py:212 -#, python-format +#, fuzzy msgid "" "There is not enough free space in the root partition to start the " -"distribution update. Please ensure at least 5 GB, and at least 10% of the " -"total space, is free. Distribution update will be retried after 24 hours, if " -"enabled." +"distribution update. Please ensure at least 5 GB is free. Distribution " +"update will be retried after 24 hours, if enabled." msgstr "" +"Det finns inte tillräckligt med ledigt utrymme i rotpartitionen för att " +"starta distributionsuppdateringen. Se till att minst 5 GB, och minst 10 % ov " +"det totala utrymmet, är ledigt. Distributionsuppdateringen kommer att prövas " +"igen efter 24 timmar, om den är aktiverad." #: plinth/modules/upgrades/__init__.py:223 -#, fuzzy -#| msgid "Distribution upgrade disabled" msgid "Distribution update started" -msgstr "Distributionsuppgradering inaktiverad" +msgstr "Distributionsuppdateringen har startats" #: plinth/modules/upgrades/__init__.py:225 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" +"Startade uppdateringen till nästa stabila utgåva. Det kan ta lång tid att " +"slutföra." #: plinth/modules/upgrades/forms.py:15 msgid "Enable auto-update" @@ -7864,6 +7894,59 @@ msgstr "Ta bort anslutning till server" msgid "Server deleted." msgstr "Servern har tagits bort." +#: plinth/modules/zoph/__init__.py:33 +#, python-brace-format +msgid "" +"Zoph manages your photo collection. Photos are stored on your {box_name}, " +"under your control. Instead of focusing on galleries for public display, " +"Zoph focuses on managing them for your own use, organizing them by who took " +"them, where they were taken, and who is in them. Photos can be linked to " +"multiple hierarchical albums and categories. It is easy to find all photos " +"containing a person, or photos taken on a date, or photos taken at a " +"location using search, map and calendar views. Individual photos can be " +"shared with others by sending a direct link." +msgstr "" + +#: plinth/modules/zoph/__init__.py:44 +#, python-brace-format +msgid "" +"The {box_name} user who setup Zoph will also become the administrator in " +"Zoph. For additional users, accounts must be created both in {box_name} and " +"in Zoph with the same user name." +msgstr "" + +#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +msgid "Zoph" +msgstr "" + +#: plinth/modules/zoph/__init__.py:63 +msgid "Photo Organizer" +msgstr "" + +#: plinth/modules/zoph/forms.py:14 +msgid "Enable OpenStreetMap for maps" +msgstr "" + +#: plinth/modules/zoph/forms.py:15 +msgid "" +"When enabled, requests will be made to OpenStreetMap servers from user's " +"browser. This impacts privacy." +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:15 +#: plinth/modules/zoph/templates/zoph-pre-setup.html:28 +#, fuzzy +#| msgid "Start Setup" +msgid "Setup" +msgstr "Starta installationsprogrammet" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:18 +#, python-format +msgid "" +"User account %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "Pppoe" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index 0e5b4bf74..5593a5ac1 100644 --- a/plinth/locale/ta/LC_MESSAGES/django.po +++ b/plinth/locale/ta/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -836,13 +836,13 @@ msgstr "" #: plinth/modules/bepasty/views.py:91 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 -#: plinth/modules/tor/views.py:157 +#: plinth/modules/tor/views.py:157 plinth/modules/zoph/views.py:69 msgid "Configuration updated." msgstr "" #: plinth/modules/bepasty/views.py:94 plinth/modules/gitweb/views.py:117 #: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 -#: plinth/modules/tor/views.py:159 +#: plinth/modules/tor/views.py:159 plinth/modules/zoph/views.py:72 msgid "An error occurred during configuration." msgstr "" @@ -5266,7 +5266,7 @@ msgid "Make files in this folder available to anyone with the link." msgstr "" #: plinth/modules/sharing/forms.py:34 -msgid "User groups that can read the files in the share" +msgid "User groups that can read the files in the share:" msgstr "" #: plinth/modules/sharing/forms.py:36 @@ -6161,12 +6161,10 @@ msgid "Could not start distribution update" msgstr "" #: plinth/modules/upgrades/__init__.py:212 -#, python-format msgid "" "There is not enough free space in the root partition to start the " -"distribution update. Please ensure at least 5 GB, and at least 10% of the " -"total space, is free. Distribution update will be retried after 24 hours, if " -"enabled." +"distribution update. Please ensure at least 5 GB is free. Distribution " +"update will be retried after 24 hours, if enabled." msgstr "" #: plinth/modules/upgrades/__init__.py:223 @@ -6897,6 +6895,57 @@ msgstr "" msgid "Server deleted." msgstr "" +#: plinth/modules/zoph/__init__.py:33 +#, python-brace-format +msgid "" +"Zoph manages your photo collection. Photos are stored on your {box_name}, " +"under your control. Instead of focusing on galleries for public display, " +"Zoph focuses on managing them for your own use, organizing them by who took " +"them, where they were taken, and who is in them. Photos can be linked to " +"multiple hierarchical albums and categories. It is easy to find all photos " +"containing a person, or photos taken on a date, or photos taken at a " +"location using search, map and calendar views. Individual photos can be " +"shared with others by sending a direct link." +msgstr "" + +#: plinth/modules/zoph/__init__.py:44 +#, python-brace-format +msgid "" +"The {box_name} user who setup Zoph will also become the administrator in " +"Zoph. For additional users, accounts must be created both in {box_name} and " +"in Zoph with the same user name." +msgstr "" + +#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +msgid "Zoph" +msgstr "" + +#: plinth/modules/zoph/__init__.py:63 +msgid "Photo Organizer" +msgstr "" + +#: plinth/modules/zoph/forms.py:14 +msgid "Enable OpenStreetMap for maps" +msgstr "" + +#: plinth/modules/zoph/forms.py:15 +msgid "" +"When enabled, requests will be made to OpenStreetMap servers from user's " +"browser. This impacts privacy." +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:15 +#: plinth/modules/zoph/templates/zoph-pre-setup.html:28 +msgid "Setup" +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:18 +#, python-format +msgid "" +"User account %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index ce52f4aca..0dca77ec7 100644 --- a/plinth/locale/te/LC_MESSAGES/django.po +++ b/plinth/locale/te/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2020-10-26 13:27+0000\n" "Last-Translator: Praveen Illa \n" "Language-Team: Telugu %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "పిపిపిఒఇ" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index 5dcd3c157..3d77d44d7 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" -"PO-Revision-Date: 2021-02-01 18:42+0000\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" +"PO-Revision-Date: 2021-02-08 06:50+0000\n" "Last-Translator: Burak Yavuz \n" "Language-Team: Turkish \n" @@ -900,13 +900,13 @@ msgstr "Yönetici" #: plinth/modules/bepasty/views.py:91 plinth/modules/searx/views.py:38 #: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 -#: plinth/modules/tor/views.py:157 +#: plinth/modules/tor/views.py:157 plinth/modules/zoph/views.py:69 msgid "Configuration updated." msgstr "Yapılandırma güncellendi." #: plinth/modules/bepasty/views.py:94 plinth/modules/gitweb/views.py:117 #: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 -#: plinth/modules/tor/views.py:159 +#: plinth/modules/tor/views.py:159 plinth/modules/zoph/views.py:72 msgid "An error occurred during configuration." msgstr "Yapılandırma sırasında bir hata meydana geldi." @@ -6072,7 +6072,9 @@ msgid "Make files in this folder available to anyone with the link." msgstr "Bu klasördeki dosyaları bağlantıya sahip herkesin kullanımına açın." #: plinth/modules/sharing/forms.py:34 -msgid "User groups that can read the files in the share" +#, fuzzy +#| msgid "User groups that can read the files in the share" +msgid "User groups that can read the files in the share:" msgstr "Paylaşımdaki dosyaları okuyabilen kullanıcı grupları" #: plinth/modules/sharing/forms.py:36 @@ -7088,27 +7090,34 @@ msgstr "FreedomBox Güncellendi" #: plinth/modules/upgrades/__init__.py:210 msgid "Could not start distribution update" -msgstr "" +msgstr "Dağıtım güncellemesi başlatılamadı" #: plinth/modules/upgrades/__init__.py:212 -#, python-format +#, fuzzy +#| msgid "" +#| "There is not enough free space in the root partition to start the " +#| "distribution update. Please ensure at least 5 GB, and at least 10% of the " +#| "total space, is free. Distribution update will be retried after 24 hours, " +#| "if enabled." msgid "" "There is not enough free space in the root partition to start the " -"distribution update. Please ensure at least 5 GB, and at least 10% of the " -"total space, is free. Distribution update will be retried after 24 hours, if " -"enabled." +"distribution update. Please ensure at least 5 GB is free. Distribution " +"update will be retried after 24 hours, if enabled." msgstr "" +"Dağıtım güncellemesini başlatmak için kök bölümde yeterli boş alan yok. " +"Lütfen en az 5 GB ve toplam alanın en az %10'unun boş olduğundan emin olun. " +"Dağıtım güncellemesi, etkinleştirildiyse 24 saat sonra yeniden denenecektir." #: plinth/modules/upgrades/__init__.py:223 -#, fuzzy -#| msgid "Distribution upgrade disabled" msgid "Distribution update started" -msgstr "Dağıtım yükseltmesi etkisizleştirildi" +msgstr "Dağıtım güncellemesi başladı" #: plinth/modules/upgrades/__init__.py:225 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" +"Bir sonraki kararlı sürüme güncelleme başladı. Bunun tamamlanması uzun zaman " +"alabilir." #: plinth/modules/upgrades/forms.py:15 msgid "Enable auto-update" @@ -7911,6 +7920,59 @@ msgstr "Sunucuya Bağlantıyı Sil" msgid "Server deleted." msgstr "Sunucu silindi." +#: plinth/modules/zoph/__init__.py:33 +#, python-brace-format +msgid "" +"Zoph manages your photo collection. Photos are stored on your {box_name}, " +"under your control. Instead of focusing on galleries for public display, " +"Zoph focuses on managing them for your own use, organizing them by who took " +"them, where they were taken, and who is in them. Photos can be linked to " +"multiple hierarchical albums and categories. It is easy to find all photos " +"containing a person, or photos taken on a date, or photos taken at a " +"location using search, map and calendar views. Individual photos can be " +"shared with others by sending a direct link." +msgstr "" + +#: plinth/modules/zoph/__init__.py:44 +#, python-brace-format +msgid "" +"The {box_name} user who setup Zoph will also become the administrator in " +"Zoph. For additional users, accounts must be created both in {box_name} and " +"in Zoph with the same user name." +msgstr "" + +#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +msgid "Zoph" +msgstr "" + +#: plinth/modules/zoph/__init__.py:63 +msgid "Photo Organizer" +msgstr "" + +#: plinth/modules/zoph/forms.py:14 +msgid "Enable OpenStreetMap for maps" +msgstr "" + +#: plinth/modules/zoph/forms.py:15 +msgid "" +"When enabled, requests will be made to OpenStreetMap servers from user's " +"browser. This impacts privacy." +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:15 +#: plinth/modules/zoph/templates/zoph-pre-setup.html:28 +#, fuzzy +#| msgid "Start Setup" +msgid "Setup" +msgstr "Kurulumu Başlat" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:18 +#, python-format +msgid "" +"User account %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 2c817e7bc..c78e10bab 100644 --- a/plinth/locale/uk/LC_MESSAGES/django.po +++ b/plinth/locale/uk/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Ukrainian %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index d38dab4d7..5c5107af5 100644 --- a/plinth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hans/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Chinese (Simplified) %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "PPPoE" diff --git a/plinth/locale/zh_Hant/LC_MESSAGES/django.po b/plinth/locale/zh_Hant/LC_MESSAGES/django.po index 8938f8cb1..2d3299366 100644 --- a/plinth/locale/zh_Hant/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hant/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 23:02-0500\n" +"POT-Creation-Date: 2021-02-11 17:23-0500\n" "PO-Revision-Date: 2021-01-25 11:32+0000\n" "Last-Translator: crlambda \n" "Language-Team: Chinese (Traditional) %(username)s will become the administrator " +"account for Zoph." +msgstr "" + #: plinth/network.py:29 msgid "PPPoE" msgstr "" diff --git a/plinth/modules/sharing/forms.py b/plinth/modules/sharing/forms.py index 29b067e8c..78f3ec1fd 100644 --- a/plinth/modules/sharing/forms.py +++ b/plinth/modules/sharing/forms.py @@ -31,7 +31,7 @@ class AddShareForm(forms.Form): groups = forms.MultipleChoiceField( choices=UsersAndGroups.get_group_choices, widget=forms.CheckboxSelectMultiple, required=False, - label=_('User groups that can read the files in the share'), + label=_('User groups that can read the files in the share:'), help_text=_( 'Users of the selected user groups will be able to read the ' 'files in the share.')) diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py index b8f0c9edd..e6ca2d2aa 100644 --- a/plinth/modules/upgrades/__init__.py +++ b/plinth/modules/upgrades/__init__.py @@ -210,9 +210,9 @@ def check_dist_upgrade(_): title = ugettext_noop('Could not start distribution update') message = ugettext_noop( 'There is not enough free space in the root partition to ' - 'start the distribution update. Please ensure at least 5 GB, ' - 'and at least 10% of the total space, is free. Distribution ' - 'update will be retried after 24 hours, if enabled.') + 'start the distribution update. Please ensure at least 5 GB ' + 'is free. Distribution update will be retried after 24 hours,' + ' if enabled.') Notification.update_or_create( id='upgrades-dist-upgrade-free-space', app_id='upgrades', severity='warning', title=title, message=message, actions=[{ diff --git a/plinth/modules/zoph/__init__.py b/plinth/modules/zoph/__init__.py new file mode 100644 index 000000000..60a9ec00d --- /dev/null +++ b/plinth/modules/zoph/__init__.py @@ -0,0 +1,134 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +FreedomBox app to configure Zoph web application +""" + +import json +import logging + +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions +from plinth import app as app_module +from plinth import cfg, frontpage, menu +from plinth.modules.apache.components import Webserver +from plinth.modules.backups.components import BackupRestore +from plinth.modules.firewall.components import Firewall +from plinth.utils import format_lazy + +from . import manifest + +logger = logging.getLogger(__name__) + +version = 1 + +# XXX: This implementation of Zoph does not work with version 0.9.9 in Buster. +# As an easy hack to make the app only available in Bullseye, php7.4 dependency +# has been added. After making the last release for Buster, this can be removed +# to allow compatibility with newer versions of PHP that become available. +managed_packages = ['zoph', 'php7.4'] + +_description = [ + format_lazy( + _('Zoph manages your photo collection. Photos are stored on your ' + '{box_name}, under your control. Instead of focusing on galleries ' + 'for public display, Zoph focuses on managing them for your own ' + 'use, organizing them by who took them, where they were taken, ' + 'and who is in them. Photos can be linked to multiple hierarchical ' + 'albums and categories. It is easy to find all photos containing a ' + 'person, or photos taken on a date, or photos taken at a location ' + 'using search, map and calendar views. Individual photos can be ' + 'shared with others by sending a direct link.'), + box_name=_(cfg.box_name)), + format_lazy( + _('The {box_name} user who setup Zoph will also become the ' + 'administrator in Zoph. For additional users, accounts must be ' + 'created both in {box_name} and in Zoph with the same user name.'), + box_name=_(cfg.box_name)) +] + +app = None + + +class ZophApp(app_module.App): + """FreedomBox app for Zoph.""" + + app_id = 'zoph' + + def __init__(self): + """Create components for the app.""" + super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, + name=_('Zoph'), icon_filename='zoph', + short_description=_('Photo Organizer'), + description=_description, manual_page='Zoph', + clients=manifest.clients) + self.add(info) + + menu_item = menu.Menu('menu-zoph', info.name, info.short_description, + info.icon_filename, 'zoph:index', + parent_url_name='apps') + self.add(menu_item) + + shortcut = frontpage.Shortcut('shortcut-zoph', info.name, + short_description=info.short_description, + icon=info.icon_filename, url='/zoph/', + clients=info.clients, + login_required=True) + self.add(shortcut) + + firewall = Firewall('firewall-zoph', info.name, + ports=['http', 'https'], is_external=True) + self.add(firewall) + + webserver = Webserver('webserver-zoph', 'zoph', + urls=['https://{host}/zoph/']) + self.add(webserver) + + backup_restore = ZophBackupRestore('backup-restore-zoph', + **manifest.backup) + self.add(backup_restore) + + +def setup(helper, old_version=None): + """Install and configure the module.""" + helper.call('pre', actions.superuser_run, 'zoph', ['pre-install']) + helper.install(managed_packages) + helper.call('post', actions.superuser_run, 'zoph', ['setup']) + helper.call('post', app.enable) + + +def set_configuration(admin_user=None, enable_osm=None): + """Configure Zoph.""" + args = [] + if admin_user: + args += ['--admin-user', admin_user] + + if enable_osm is not None: + args += ['--enable-osm', str(enable_osm)] + + actions.superuser_run('zoph', ['set-configuration'] + args) + + +def is_configured(): + """Return whether the Zoph app is configured.""" + output = actions.superuser_run('zoph', ['is-configured']) + return output.strip() == 'true' + + +def get_configuration(): + """Return full configuration of Zoph.""" + configuration = actions.superuser_run('zoph', ['get-configuration']) + return json.loads(configuration) + + +class ZophBackupRestore(BackupRestore): + """Component to backup/restore Zoph database""" + + def backup_pre(self, packet): + """Save database contents.""" + actions.superuser_run('zoph', ['dump-database']) + + def restore_post(self, packet): + """Restore database contents.""" + actions.superuser_run('zoph', ['restore-database']) diff --git a/plinth/modules/zoph/data/etc/plinth/modules-enabled/zoph b/plinth/modules/zoph/data/etc/plinth/modules-enabled/zoph new file mode 100644 index 000000000..a33721589 --- /dev/null +++ b/plinth/modules/zoph/data/etc/plinth/modules-enabled/zoph @@ -0,0 +1 @@ +plinth.modules.zoph diff --git a/plinth/modules/zoph/forms.py b/plinth/modules/zoph/forms.py new file mode 100644 index 000000000..11a149e88 --- /dev/null +++ b/plinth/modules/zoph/forms.py @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +FreedomBox app for configuring Zoph. +""" + +from django import forms +from django.utils.translation import ugettext_lazy as _ + + +class ZophForm(forms.Form): + """Zoph application configuration form.""" + + enable_osm = forms.BooleanField( + label=_('Enable OpenStreetMap for maps'), required=False, + help_text=_('When enabled, requests will be made to OpenStreetMap ' + 'servers from user\'s browser. This impacts privacy.')) diff --git a/plinth/modules/zoph/manifest.py b/plinth/modules/zoph/manifest.py new file mode 100644 index 000000000..bf6ea5268 --- /dev/null +++ b/plinth/modules/zoph/manifest.py @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later + +from django.utils.translation import ugettext_lazy as _ + +clients = [{ + 'name': _('Zoph'), + 'platforms': [{ + 'type': 'web', + 'url': '/zoph/', + }] +}] + +backup = { + 'data': { + 'files': ['/var/lib/plinth/backups-data/zoph-database.sql'], + 'directories': ['/var/lib/zoph/'] + }, + 'secrets': { + 'files': ['/etc/zoph.ini'], + } +} diff --git a/plinth/modules/zoph/templates/zoph-pre-setup.html b/plinth/modules/zoph/templates/zoph-pre-setup.html new file mode 100644 index 000000000..0eb12544e --- /dev/null +++ b/plinth/modules/zoph/templates/zoph-pre-setup.html @@ -0,0 +1,31 @@ +{% extends "app.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} + +{% block pagetitle %} +

{{ name }}

+{% endblock %} + + +{% block configuration %} +

{% trans "Setup" %}

+ +

+ {% blocktrans trimmed with username=request.user.username %} + User account {{ username }} will become the administrator + account for Zoph. + {% endblocktrans %} +

+ +
+ {% csrf_token %} + + +
+ +{% endblock %} diff --git a/plinth/modules/zoph/tests/__init__.py b/plinth/modules/zoph/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/plinth/modules/zoph/tests/test_functional.py b/plinth/modules/zoph/tests/test_functional.py new file mode 100644 index 000000000..f0ebab73a --- /dev/null +++ b/plinth/modules/zoph/tests/test_functional.py @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Functional, browser based tests for zoph app. +""" + +from pytest_bdd import given, parsers, scenarios + +from plinth.tests import functional + +scenarios('zoph.feature') + + +@given(parsers.parse('the zoph application is setup')) +def _zoph_is_setup(session_browser): + """Click setup button on the setup page.""" + functional.nav_to_module(session_browser, 'zoph') + button = session_browser.find_by_css('input[name="zoph_setup"]') + if button: + functional.submit(session_browser, element=button) diff --git a/plinth/modules/zoph/tests/zoph.feature b/plinth/modules/zoph/tests/zoph.feature new file mode 100644 index 000000000..e7c655794 --- /dev/null +++ b/plinth/modules/zoph/tests/zoph.feature @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later + +@apps @zoph +Feature: Zoph Organises PHotos + Run photo organiser + +Background: + Given I'm a logged in user + Given the zoph application is installed + Given the zoph application is setup + +Scenario: Enable zoph application + Given the zoph application is disabled + When I enable the zoph application + Then the zoph application is enabled + +@backups +Scenario: Backup and restore zoph + Given the zoph application is enabled + When I create a backup of the zoph app data with name test_zoph + And I restore the zoph app data backup with name test_zoph + Then the zoph application is enabled + +Scenario: Disable zoph application + Given the zoph application is enabled + When I disable the zoph application + Then the zoph application is disabled diff --git a/plinth/modules/zoph/urls.py b/plinth/modules/zoph/urls.py new file mode 100644 index 000000000..15e49d964 --- /dev/null +++ b/plinth/modules/zoph/urls.py @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +URLs for the Zoph module. +""" + +from django.conf.urls import url + +from .views import SetupView, ZophAppView + +urlpatterns = [ + url(r'^apps/zoph/setup/$', SetupView.as_view(), name='setup'), + url(r'^apps/zoph/$', ZophAppView.as_view(app_id='zoph'), name='index') +] diff --git a/plinth/modules/zoph/views.py b/plinth/modules/zoph/views.py new file mode 100644 index 000000000..067179853 --- /dev/null +++ b/plinth/modules/zoph/views.py @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +FreedomBox app for configuring Zoph photo organiser. +""" + +import logging + +from django.contrib import messages +from django.http import HttpResponseRedirect +from django.shortcuts import redirect +from django.urls import reverse_lazy +from django.utils.translation import ugettext as _ +from django.views.generic import TemplateView + +from plinth import views +from plinth.errors import ActionError +from plinth.modules import zoph + +from .forms import ZophForm + +logger = logging.getLogger(__name__) + + +class SetupView(TemplateView): + """Show zoph setup page.""" + template_name = 'zoph-pre-setup.html' + success_url = reverse_lazy('zoph:index') + + def get_context_data(self, *args, **kwargs): + """Provide context data to the template.""" + context = super().get_context_data(**kwargs) + context['title'] = zoph.app.info.name + context['app_info'] = zoph.app.info + return context + + def post(self, _request, *args, **kwargs): + """Handle form submission.""" + admin_user = self.request.user.get_username() + zoph.set_configuration(admin_user=admin_user) + return HttpResponseRedirect(reverse_lazy('zoph:index')) + + +class ZophAppView(views.AppView): + """App configuration page.""" + form_class = ZophForm + app_id = 'zoph' + + def dispatch(self, request, *args, **kwargs): + """Redirect to setup page if setup is not done yet.""" + if not zoph.is_configured(): + return redirect('zoph:setup') + + return super().dispatch(request, *args, **kwargs) + + def get_initial(self): + """Get the current settings from Zoph.""" + status = super().get_initial() + config = zoph.get_configuration() + status['enable_osm'] = (config['maps.provider'] == 'osm') + return status + + def form_valid(self, form): + """Apply the changes submitted in the form.""" + old_status = form.initial + new_status = form.cleaned_data + if old_status['enable_osm'] != new_status['enable_osm']: + try: + zoph.set_configuration(enable_osm=new_status['enable_osm']) + messages.success(self.request, _('Configuration updated.')) + except ActionError: + messages.error(self.request, + _('An error occurred during configuration.')) + + return super().form_valid(form) diff --git a/plinth/tests/functional/__init__.py b/plinth/tests/functional/__init__.py index 11fbd6018..b3c14d9c3 100644 --- a/plinth/tests/functional/__init__.py +++ b/plinth/tests/functional/__init__.py @@ -379,6 +379,13 @@ def app_disable(browser, app_name): _change_app_status(browser, app_name, 'disabled') +def app_is_enabled(browser, app_name): + """Return whether the app is enabled.""" + nav_to_module(browser, app_name) + should_enable_field = browser.find_by_id('id_should_enable') + return should_enable_field.value == 'False' + + def app_can_be_disabled(browser, app_name): """Return whether the application can be disabled.""" nav_to_module(browser, app_name) diff --git a/plinth/tests/functional/step_definitions.py b/plinth/tests/functional/step_definitions.py index a20f0a0fd..9bb445f70 100644 --- a/plinth/tests/functional/step_definitions.py +++ b/plinth/tests/functional/step_definitions.py @@ -58,6 +58,13 @@ def app_can_be_disabled(session_browser, app_name): pytest.skip('network time application can\'t be disabled') +@then(parsers.parse('the {app_name:w} application is {enabled:w}')) +def app_assert_is_enabled(session_browser, app_name, enabled): + assert enabled in ('enabled', 'disabled') + enabled = (enabled == 'enabled') + assert functional.app_is_enabled(session_browser, app_name) == enabled + + @then(parsers.parse('the {service_name:w} service should be running')) def service_should_be_running(session_browser, service_name): assert functional.eventually(functional.service_is_running, diff --git a/static/themes/default/icons/zoph.png b/static/themes/default/icons/zoph.png new file mode 100644 index 000000000..cc8b9d093 Binary files /dev/null and b/static/themes/default/icons/zoph.png differ diff --git a/static/themes/default/icons/zoph.svg b/static/themes/default/icons/zoph.svg new file mode 100644 index 000000000..f718e008a --- /dev/null +++ b/static/themes/default/icons/zoph.svg @@ -0,0 +1,522 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + Photo Camera + + + camera + photo + SLR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +