https://<your freedombox>/deluge. You will need to enter a password to login: https://<your freedombox>/deluge. You will need to enter a password to login: MyWebName.comhttps://MyWebName.comMyWebName.comhttps://MyWebName.comhttps://<your freedombox>/mldonkey. Users belonging to the https://<your freedombox>/mldonkey. Users belonging to the username run the following commands as root user: internal and external appropriately. nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: ip addr should show a tun0 connection. traceroute freedombox.org should show you the ip address of the VPN server as the first hop. ip addr should show a tun0 connection. traceroute freedombox.org should show you the ip address of the VPN server as the first hop. enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: EDIT button on the configuration screen in http://config.privoxy.org/. enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: EDIT button on the configuration screen in http://config.privoxy.org/. irc://irc.debian.org/freedombox. If your FreedomBox is running Connect to Core. Add button to launch Add Core Account dialog. Account Name field. Fill proper DNS hostname of your FreedomBox in Hostname filed. Port field must have the value 4242. Provide the username and password of the account you wish to create to connect to the Quassel Core in the User and Password fields. Choose Remember if don't wish to be prompted for a password every time you launch Quassel client. OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. OK to connect to it. Untrusted Security Certificate warning and need to accept the server certificate. Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. Core Configuration Wizard. Select Next. Create Admin User page, enter the username and password you have used earlier to create the core connection. Select Remember password to remember this password for future sessions. Click Next. Select Storage Backend page, select SQLite and click Commit. Quassel IRC wizard to configure your IRC connections. Click Next. Setup Identity page next, provide a name and multiple nicknames. This is how you present yourself to other users on IRC. It is not necessary to give your real world name. Multiple nicknames are useful as fallback nicknames when the first nickname can't be used for some reason. After providing the information click Next. Setup Network Connection page next, provide a network name of your choice. Next provide a list of servers to which Quassel Core should connect to in order to join this IRC network (such as irc.debian.org:6667). Edit. In the Server Info dialog, set the port 6697 (consult your network's documentation for actual list of servers and their secure ports) and click Use SSL. Click OK. This is to ensure that communication between your FreedomBox and the IRC network server is encrypted. Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. All Chats pane on the left of the Quassel Client main window. irc://irc.debian.org/freedombox. If your FreedomBox is running Connect to Core. Add button to launch Add Core Account dialog. Account Name field. Fill proper DNS hostname of your FreedomBox in Hostname filed. Port field must have the value 4242. Provide the username and password of the account you wish to create to connect to the Quassel Core in the User and Password fields. Choose Remember if don't wish to be prompted for a password every time you launch Quassel client. OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. OK to connect to it. Untrusted Security Certificate warning and need to accept the server certificate. Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. Core Configuration Wizard. Select Next. Create Admin User page, enter the username and password you have used earlier to create the core connection. Select Remember password to remember this password for future sessions. Click Next. Select Storage Backend page, select SQLite and click Commit. Quassel IRC wizard to configure your IRC connections. Click Next. Setup Identity page next, provide a name and multiple nicknames. This is how you present yourself to other users on IRC. It is not necessary to give your real world name. Multiple nicknames are useful as fallback nicknames when the first nickname can't be used for some reason. After providing the information click Next. Setup Network Connection page next, provide a network name of your choice. Next provide a list of servers to which Quassel Core should connect to in order to join this IRC network (such as irc.debian.org:6667). Edit. In the Server Info dialog, set the port 6697 (consult your network's documentation for actual list of servers and their secure ports) and click Use SSL. Click OK. This is to ensure that communication between your FreedomBox and the IRC network server is encrypted. Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. All Chats pane on the left of the Quassel Client main window. --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as openssh-server server by default allowing remote logins from all interfaces. If your hardware device is connected to a monitor and a keyboard, you may login directly as well. Regular operation of FreedomBox does not require you to use the shell. However, some tasks or identifying a problem may require you to login to a shell. Admin users are able to log in using ssh (see Logging In below) and have superuser privileges via sudo. sudo ./bin/passwd-in-image <image-file> fbx. fbx with the name of the user you wish to login as. freedombox should be replaced with the hostname or IP address of you FreedomBox device as found in the fbx is the default user present on FreedomBox with superuser privileges. Any other user created using Plinth and belonging to the group admin will be able to login. The root account has no password set and will not be able to login. Access will be denied to all other users. fbx and users in admin group will also be able to login on the terminal directly. Other users will be denied access. libpam-abl package that FreedomBox installs by default. To control this behavior consult libpam-abl documentation. admin username (see above). admin username, and ADDRESS with the onion service address for your FreedomBox. fbx default user is not managed by Plinth and its password cannot be changed in the web interface. admin username (see above). admin username, and ADDRESS with the onion service address for your FreedomBox. fbx default user is not managed by Plinth and its password cannot be changed in the web interface. all_proxy environment variable: all_proxy environment variable: https://<your freedombox>/transmission. Transmission uses single sign-on from FreedomBox, which means that if you are logged in on your FreedomBox, you can directly access Transmission without having to enter the credentials again. Otherwise, you will be prompted to login first and then redirected to the Transmission app. https://<your freedombox>/transmission. Transmission uses single sign-on from FreedomBox, which means that if you are logged in on your FreedomBox, you can directly access Transmission without having to enter the credentials again. Otherwise, you will be prompted to login first and then redirected to the Transmission app. apt-get update asks for a confirmation to change apt-get update asks for a confirmation to change https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name. https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name. /home/<un_usuario_de_plinth>/public_htmlUser websites servirá los documentos que haya en este directorio cuando se reciban peticiones con la URI ~<un_usuario_de_plinth>. Por tanto para un dominio ejemplo.org con un usuario pepe una petición ejemplo.org/~pepe/index.html transferirá el fichero /home/pepe/public_html/index.html. /home/<un_usuario_de_plinth>/public_htmlUser websites servirá los documentos que haya en este directorio cuando se reciban peticiones con la URI ~<un_usuario_de_plinth>. Por tanto para un dominio ejemplo.org con un usuario pepe una petición ejemplo.org/~pepe/index.html transferirá el fichero /home/pepe/public_html/index.html. https://<tu freedombox>/deluge. Necesitarás introducir una contraseña para ingresar: deluge. La primera vez que ingreses https://<tu freedombox>/deluge. Necesitarás introducir una contraseña para ingresar: deluge. La primera vez que ingreses .git/config del repositorio local. .git/config del repositorio local. Por este motivo debes crear un usuario FreedomBox que solo tenga acceso a gitweb y no usar nunca una cuenta de administrador. .i2p. Por ejemplo, http://i2p-projekt.i2p/ es el sitio web del proyecto I2P en la red I2P. Los eepsites son inaccesibles a un navegador normal a través de una conexión Internet normal. Para navegar a los eepsites tu navegador necesita configurarse para usar los proxies HTTP y HTTPS como se describió antes. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona .i2p. Por ejemplo, http://i2p-projekt.i2p/ es el sitio web del proyecto I2P en la red I2P. Los eepsites son inaccesibles a un navegador normal a través de una conexión Internet normal. Para navegar a los eepsites tu navegador necesita configurarse para usar los proxies HTTP y HTTPS como se describió antes. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona MiWeb.comhttps://MiWeb.comMiWeb.comhttps://MiWeb.comhttps://<tu_freedombox>/mldonkey. https://<tu_freedombox>/mldonkey. miusuario ejecuta los siguientes comandos como usuario root: Minetest en esta FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un Minetest en esta FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un admin usando network manager lo configurará automáticamente. En la mayoría de los casos esto no funcionará. Borra la configuración creada automáticamente en el interfaz y crea una conexión de red nueva. Selecciona tu interfaz recién creado en la página "añadir conexión". BATMAN (con mayúsculas). nmcli mira su página man. Para obtener una lista completa de configuraciones y tipos de conexión que acepta Network Manager mira: nmcli mira su página man. Para obtener una lista completa de configuraciones y tipos de conexión que acepta Network Manager mira: <usuario>.ovpn, siendo <usuario> un usuario de FreedomBox. Todos los usuarios de FreedomBox podrán descargar un perfil propio y diferente. Los usuarios que no sean administradores pueden descargar el perfil desde la portada después de ingresar. <usuario>.ovpn. <usuario>.opvn que acabas de descargar. Pon un nombre a la conexión y graba el perfil. ip addr debe mostrar una conexión tun0. traceroute freedombox.org debiera mostrar la dirección IP del servidor VPN como primer salto. Network Manager puedes crear una conexión nueva importando el fichero: http://config.privoxy.org/ o en http://p.p. /etc/privoxy/config a 1. Antes de hacerlo lee el manual con atención, especialmente: EDITAR en la pantalla de configuración de http://config.privoxy.org/. http://config.privoxy.org/ o en http://p.p. /etc/privoxy/config a 1. Antes de hacerlo lee el manual con atención, especialmente: EDITAR en la pantalla de configuración de http://config.privoxy.org/. irc://irc.debian.org/freedombox. Si tu FreedomBox ejecuta Conectar con el Núcleo. Añadir para abrir el diálogo Añadir Cuenta al Núcleo. Nombre de Cuenta. Introduce el Hostname. El campo Puerto debe tener el valor 4242. Pon el usuario y la contraseña de la cuenta que quieres crear para conectar con el Núcleo de Quassel en los campos Usuario y Contraseña. Si no quieres que se te pida la contraseña cada vez que arranques el cliente de Quassel marca la opción Recordarme. OK en el diálogo Añadir Cuenta al Núcleo deberías ver la cuenta en el diálogo Conectar con el Núcleo. OK para conectar con él. Certificado de Seguridad Desconocido y necesitarás aceptar el certificado del servidor. Continuar. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona Para siempre. Asistente de Configuración del Núcleo. Selecciona Siguiente. Crear Usuario Administrador introduce el usuario y la contraseña que has usado antes para crear la conexión al núcleo. Selecciona Recordar contraseña para que recuerde la contraseña para futuras sesiones. Haz clic en Siguiente. Seleccionar Backend de Almacenamiento selecciona SQLite y haz clic en Confirmar. Quassel IRC para configurar tus conexiones IRC. Haz clic en Siguiente. Configuración de Identidad pon un nombre y múltiples pseudónimos. Te presentarás con estos a otros usuarios de IRC. No es necesario dar tu nombre real. Los pseudónimos múltipes son útiles como suplentes cuando el primero no se pueda usar por cualquier motivo. Tras aportar la información haz clic en Siguiente. Configuración de Conexión de Red pon el nombre de red que quieras y una lista de servidores a los que se deba conectar el Núcleo de Quassel para unirte a esa red IRC (por ejemplo irc.debian.org:6667). Editar. En el diálogo Información del Servidor pon el puerto 6697 (consulta la lista real de servidores y sus puertos seguros en la documentación de tu red) y haz clic en Usar SSL. Clic en OK. Esto es para asegurar que la comunicación entre tu FreedomBox y el servidor de la red IRC va cifrada. Configuración de Conexión de Red proporciona una lista de canales IRC (como #freedombox) a los que unirte al conectarte a la red. Dale a Grabar y Conectar. Todas las conversaciones de la izquierda de la ventana principal del Cliente Quassel. irc://irc.debian.org/freedombox. Si tu FreedomBox ejecuta Conectar con el Núcleo. Añadir para abrir el diálogo Añadir Cuenta al Núcleo. Nombre de Cuenta. Introduce el Hostname. El campo Puerto debe tener el valor 4242. Pon el usuario y la contraseña de la cuenta que quieres crear para conectar con el Núcleo de Quassel en los campos Usuario y Contraseña. Si no quieres que se te pida la contraseña cada vez que arranques el cliente de Quassel marca la opción Recordarme. OK en el diálogo Añadir Cuenta al Núcleo deberías ver la cuenta en el diálogo Conectar con el Núcleo. OK para conectar con él. Certificado de Seguridad Desconocido y necesitarás aceptar el certificado del servidor. Continuar. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona Para siempre. Asistente de Configuración del Núcleo. Selecciona Siguiente. Crear Usuario Administrador introduce el usuario y la contraseña que has usado antes para crear la conexión al núcleo. Selecciona Recordar contraseña para que recuerde la contraseña para futuras sesiones. Haz clic en Siguiente. Seleccionar Backend de Almacenamiento selecciona SQLite y haz clic en Confirmar. Quassel IRC para configurar tus conexiones IRC. Haz clic en Siguiente. Configuración de Identidad pon un nombre y múltiples pseudónimos. Te presentarás con estos a otros usuarios de IRC. No es necesario dar tu nombre real. Los pseudónimos múltipes son útiles como suplentes cuando el primero no se pueda usar por cualquier motivo. Tras aportar la información haz clic en Siguiente. Configuración de Conexión de Red pon el nombre de red que quieras y una lista de servidores a los que se deba conectar el Núcleo de Quassel para unirte a esa red IRC (por ejemplo irc.debian.org:6667). Editar. En el diálogo Información del Servidor pon el puerto 6697 (consulta la lista real de servidores y sus puertos seguros en la documentación de tu red) y haz clic en Usar SSL. Clic en OK. Esto es para asegurar que la comunicación entre tu FreedomBox y el servidor de la red IRC va cifrada. Configuración de Conexión de Red proporciona una lista de canales IRC (como #freedombox) a los que unirte al conectarte a la red. Dale a Grabar y Conectar. Todas las conversaciones de la izquierda de la ventana principal del Cliente Quassel. python-radicale es un paquete antigüo de la versión 1.x de Radicale que sigue disponible en las versiones "en pruebas" (testing) de Debian. Esto es un --export-storage que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. .dpkg-dist solo existirán si has elegido "Conservar tu versión actualmente instalada" cuando se te preguntó durante la actualización a Radicale 2.x. El procedimiento anterior sobrescribirá la configuración antigüa con una nueva. No se necesitan cambios a los 2 ficheros de configuración salvo que hayas cambiado la preferencia de compartición de calendario. /var/lib/radicale/collections. Los datos nuevos se crearán y usarán en el directorio /var/lib/radicale/collections/collections-root/. tar hace una copia de seguridad de tu configuración y tus datos en /root/radicale_backup.tgz por si haces o algo va mal y quieres deshacer los cambios. python-radicale es un paquete antigüo de la versión 1.x de Radicale que sigue disponible en las versiones "en pruebas" (testing) de Debian. Esto es un --export-storage que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. .dpkg-dist solo existirán si has elegido "Conservar tu versión actualmente instalada" cuando se te preguntó durante la actualización a Radicale 2.x. El procedimiento anterior sobrescribirá la configuración antigüa con una nueva. No se necesitan cambios a los 2 ficheros de configuración salvo que hayas cambiado la preferencia de compartición de calendario. /var/lib/radicale/collections. Los datos nuevos se crearán y usarán en el directorio /var/lib/radicale/collections/collections-root/. tar hace una copia de seguridad de tu configuración y tus datos en /root/radicale_backup.tgz por si haces o algo va mal y quieres deshacer los cambios. /repro/domains.html de la FreedomBox. /repro/addUser.html. /repro/domains.html de la FreedomBox. /repro/addUser.html. https://<tu_freedombox>/roundcube. Introduce tu usuario y contraseña. El usuario de muchos servicios de correo electrónico suele ser la propia dirección completa, como imaps://imap.servicio_de_ejemplo.org. imaps://imap.gmail.com. https://<tu_freedombox>/roundcube. Introduce tu usuario y contraseña. El usuario de muchos servicios de correo electrónico suele ser la propia dirección completa, como imaps://imap.servicio_de_ejemplo.org. imaps://imap.gmail.com. openssh-server por defecto permitiendo así accesos remotos desde todos los interfaces. Si tu dispositivo hardware está connectado a un monitor y un teclado, también puedes ingresar directamente. Para la operación habitual de FreedomBox no necesitas usar la shell. No obstante, algunas tareas o identificación de algún problema podrían requerirlo. Admin pueden ingresar mediante ssh (abajo se explica cómo) y escalar sus privilegios a superusuario mediante sudo. fbx pero no tiene contraseña establecida, así que no se puede ingresar con esta cuenta. freedom-maker que permite establecer la contraseña de esta cuenta si fuera necesario: freedom-maker en sudo ./bin/passwd-in-image <archivo_de_imagen> fbx. fbx por el usuario con el que quieres ingresar. Hay que reemplazar freedombox por el hostname o dirección IP de tu dispositivo FreedomBox como se indica en el proceso de fbx es el usuario de FreedomBox con privilegios de superusuario por defecto. Cualquier otro usuario creado con Plinth que pertenezca al grupo admin podrá ingresar. La cuenta root no tiene contraseña configurada y no podrá ingresar. A todos los demás usuarios se les denegará el acceso. fbx y los otros usuarios del grupo admin podrán ingresar directamente por el terminal. A todos los demás usuarios se les denegará el acceso. libpam-abl que FreedomBox instala por defecto. Para controlar este comportamiento consulta la documentación de libpam-abl. netcat-openbsd. ~/.ssh/config para habilitar conexiones sobre Tor. admin (ver arriba). admin y DIRECCION por la dirección del servicio Tor Onion para SSH de tu FreedomBox. root root no puedes romperlo todo accidentalmente. fbx no se administra en Plinth y su contraseña no se puede cambiar desde la interfaz web. admin (ver arriba). admin y DIRECCION por la dirección del servicio Tor Onion para SSH de tu FreedomBox. root root no puedes romperlo todo accidentalmente. fbx no se administra en Plinth y su contraseña no se puede cambiar desde la interfaz web. http://<tu_freedombox>:1080/. http://<tu_freedombox>:1080/. /syncthing. Actualmente este cliente web está accesible solo a los usuarios de FreedomBox que tengan privilegios de administrador aunque en alguna futura versión podría estarlo a todos los usuarios de FreedomBox. all_proxy: /syncthing. Actualmente este cliente web está accesible solo a los usuarios de FreedomBox que tengan privilegios de administrador aunque en alguna futura versión podría estarlo a todos los usuarios de FreedomBox. all_proxy: https://<tu freedombox>/transmission. Transmission emplea el ingreso único de FreedomBox lo que significa que si has ingresado en tu FreedomBox puedes acceder diréctamente a Transmission sin tener que volver a introducir las credenciales. Si no, se te pedirá que ingreses primero y luego se te redirigirá a la app Transmission. sftp para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. https://<tu freedombox>/transmission. Transmission emplea el ingreso único de FreedomBox lo que significa que si has ingresado en tu FreedomBox puedes acceder diréctamente a Transmission sin tener que volver a introducir las credenciales. Si no, se te pedirá que ingreses primero y luego se te redirigirá a la app Transmission. sftp para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. apt-get update te pide confirmación para algo responde que freedombox te pregunta acerca de los archivos de configuración responde que instale los archivos de configuración nuevos que vienen con la última versión del paquete. Este proceso solo actualizará los paquetes que no necesitan preguntar (excepto el paquete freedombox). Después, deja que FreedomBox se encargue de la actualización de los demás paquetes. Sé paciente mientras se crean nuevas versiones de FreedomBox para tratar los paquetes que necesitan intervención manual. apt-get update te pide confirmación para algo responde que freedombox te pregunta acerca de los archivos de configuración responde que instale los archivos de configuración nuevos que vienen con la última versión del paquete. Este proceso solo actualizará los paquetes que no necesitan preguntar (excepto el paquete freedombox). Después, deja que FreedomBox se encargue de la actualización de los demás paquetes. Sé paciente mientras se crean nuevas versiones de FreedomBox para tratar los paquetes que necesitan intervención manual. admin podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo). admin podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo). https://<tu_freedombox>/plinth/apps/xmpp/jsxc/. Automáticamente comprobará la conexión del servidor BOSH al nombre de dominio configurado. https://<tu_freedombox>/plinth/apps/xmpp/jsxc/. Automáticamente comprobará la conexión del servidor BOSH al nombre de dominio configurado. .git/config del repositorio local. .git/config del repositorio local. Por este motivo debes crear un usuario FreedomBox que solo tenga acceso a gitweb y no usar nunca una cuenta de administrador. Most routers " @@ -3058,7 +3051,7 @@ msgid "" "address for your {box_name} in your router's configuration.
" msgstr "" -#: plinth/modules/networks/forms.py:328 +#: plinth/modules/networks/forms.py:332 #, python-brace-format msgid "" "Forward Specific Traffic as needed by each application" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:349 msgid "" "Router is currently unconfigured
Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3181,7 +3174,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3315,7 +3308,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4317,34 +4310,49 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4786,11 +4794,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4798,83 +4806,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr ""
@@ -4937,7 +4954,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -4949,32 +4966,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5286,14 +5296,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5302,6 +5318,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5376,19 +5409,28 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+msgid "Enter a valid username."
+msgstr ""
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5397,63 +5439,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5690,10 +5732,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -5962,40 +6001,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6129,6 +6168,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6197,6 +6240,6 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po
index 9e474ac93..10fdc5c91 100644
--- a/plinth/locale/bn/LC_MESSAGES/django.po
+++ b/plinth/locale/bn/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME Most routers "
@@ -3051,7 +3044,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3174,7 +3167,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3308,7 +3301,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4308,34 +4301,49 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4777,11 +4785,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4789,83 +4797,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr ""
@@ -4928,7 +4945,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -4940,32 +4957,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5277,14 +5287,18 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+msgid "FreedomBox Updated"
+msgstr ""
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5293,6 +5307,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5367,19 +5398,28 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+msgid "Enter a valid username."
+msgstr ""
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5388,63 +5428,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5679,10 +5719,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -5951,40 +5988,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6118,6 +6155,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6186,6 +6227,6 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po
index de8fa7505..21b975f5f 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-10-26 17:53+0000\n"
"Last-Translator: Pavel Borecki Most routers "
@@ -3537,7 +3548,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3664,7 +3675,7 @@ msgstr "Upravit připojení"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Upravit"
@@ -3798,7 +3809,7 @@ msgid "This connection is not active."
msgstr "Toto připojení není aktivní."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Zabezpečení"
@@ -4985,40 +4996,59 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr "Název aplikace"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr "Stávající zranitelnosti zabezpečení"
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr "Minulé zranitelnosti zabezpečení"
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox"
msgid "Sandboxed"
msgstr "Pískoviště s kostkami"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox"
+msgid "Sandbox Coverage"
+msgstr "Pískoviště s kostkami"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "ano"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
#, fuzzy
#| msgid "None"
msgid "No"
msgstr "Žádný"
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "Tor is running"
+msgid "Not running"
+msgstr "Tor je spuštěné"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5526,11 +5556,11 @@ msgstr "Sdružené přihlášení (SSO)"
msgid "Login"
msgstr "Přihlášení"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr "Úložiště"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5541,83 +5571,97 @@ msgstr ""
"{box_name}. Lze zobrazit úložná zařízení, která jsou využívána, připojovat a "
"odpojovat ta vyjímatelná."
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} bajtů"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr "Operace se nezdařila."
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr "Operace byla zrušena."
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr "Toto zařízení už je odpojováno (umount)."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr "Operace není podporována z důvodu chybějící podpory ovladače/nástroje."
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr "Časový limit aplikace překročen."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "Operace by probudila disk který je v režimu hlubokého spánku."
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr "Pokus o odpojení zařízení které je zaneprázdněno."
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr "Operace už byla zrušena."
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr "Chybí oprávnění pro provedení požadované operace."
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr "Toto zařízení je už připojeno (mount)."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr "Zařízení není připojeno."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr "Není umožněno použít požadovanou volbu."
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr "Zařízení je připojeno jiným uživatelem."
+#: plinth/modules/storage/__init__.py:326
+#, fuzzy, python-format, python-brace-format
+#| msgid ""
+#| "Warning: Low space on system partition ({percent_used}% used, "
+#| "{free_space} free)."
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+"Varování: Dochází volné místo na systémovém oddílu ({percent_used}% využito, "
+"{free_space} volné)."
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid repository name."
@@ -5693,7 +5737,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Zvětšit kořenový oddíl"
@@ -5707,34 +5751,25 @@ msgstr ""
"Než budete pokračovat, zazálohujte svá data. Po provedení této operace na "
"kořenovém oddílu bude k dispozici %(expandable_root_size)s dalšího prostoru."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Chyba při zvětšování oddílu: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "Oddíl úspěšně zvětšen."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-"Varování: Dochází volné místo na systémovém oddílu ({percent_used}% využito, "
-"{free_space} volné)."
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr "{drive_vendor} {drive_model} je možné bezpečně odebrat."
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr "Zařízení je možné bezpečně odebrat."
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr "Chyba při vysouvání zařízení: {error_message}"
@@ -6121,15 +6156,21 @@ msgstr "Číst a přihlásit se k odběru novinek"
msgid "Tiny Tiny RSS (Fork)"
msgstr "Tiny Tiny RSS (fork)"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "Aktualizovat"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
"Zjistit dostupnost a uplatnit nejnovější aktualizace a opravy zabezpečení."
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "Nadace FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr "Zapnout automatické aktualizace"
@@ -6138,6 +6179,24 @@ msgstr "Zapnout automatické aktualizace"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr "Když je zapnuto, FreedomBox se jednou denně automaticky zaktualizuje."
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s je aktuální."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr "Aktualizovat nyní"
@@ -6220,20 +6279,31 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "Zkontrolujte LDAP položku „{search_item}“"
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "Přístup ke všem službám a nastavení systému"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
"Toto uživatelské jméno je už používáno někým jiným nebo vyhrazeno pro systém."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Neplatný název serveru"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "Oprávnění"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6247,20 +6317,20 @@ msgstr ""
"skupině správců (admin) se budou moci přihlásit všude. Mohou se k systému "
"přihlásit také prostřednictvím SSH a mají práva správy (sudo)."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "Vytvoření LDAP uživatele se nezdařilo."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "Přidání nového uživatele do skupiny {group} se nezdařilo."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr "Pověřené SSH klíče"
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6270,45 +6340,45 @@ msgstr ""
"systému i bez zadávání hesla. Klíčů je možné vložit vícero, každý na vlastní "
"řádek. Prázdné řádky a ty, které začínají na znak # budou ignorovány."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "Přejmenování LDAP uživatele se nezdařilo."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "Odebrání uživatele ze skupiny se nezdařilo."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "Přidání uživatele do skupiny se nezdařilo."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "Nepodařilo se vložit SSH klíče."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "Přidání uživatele do skupiny se nezdařilo."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr "Není možné smazat účet jediného zbývajícího správce systému."
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "Změna hesla LDAP uživatele se nezdařila."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Přidání nového uživatele do skupiny správců (admin) se nezdařilo."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "Omezení přístupu ke konzoli se nezdařilo."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Uživatelský účet vytvořen, není jste jím přihlášeni"
@@ -6560,10 +6630,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6895,40 +6962,40 @@ msgstr "Základní funkce a webové rozhraní pro %(box_name)s"
msgid "Toggle navigation"
msgstr "Přepnout navigaci"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "Domů"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Aplikace"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "Systém"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Změnit heslo"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "Restartovat"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "Vypnout"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Odhlásit"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr "Vyberte jazyk"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "Přihlásit"
@@ -7076,6 +7143,12 @@ msgstr ""
"Jako vnitřní jsou v tuto chvíli nastavená následující síťová rozhraní: "
"%(interface_list)s"
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Žádný certifikát"
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr "Předávání portů"
@@ -7151,10 +7224,13 @@ msgstr "Aplikace zapnuta"
msgid "Application disabled"
msgstr "Aplikace vypnuta"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr "gudžarátština"
+#~ msgid "Physical Interface"
+#~ msgstr "Fyzické rozhraní"
+
#~ msgid "repro"
#~ msgstr "repro"
@@ -7325,9 +7401,6 @@ msgstr "gudžarátština"
#~ "syncthing/\">/syncthing. Jsou k "
#~ "dispozici také klienti pro osobní počítače a mobilní platformy."
-#~ msgid "Tor is running"
-#~ msgstr "Tor je spuštěné"
-
#~ msgid "Tor is not running"
#~ msgstr "Tor není spuštěné"
diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po
index 26c59e0c7..1f0d8783f 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2016-07-03 21:44+0000\n"
"Last-Translator: Mikkel Kirkgaard Nielsen Most routers "
@@ -3577,7 +3572,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3705,7 +3700,7 @@ msgstr "Rediger Forbindelse"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Rediger"
@@ -3839,7 +3834,7 @@ msgid "This connection is not active."
msgstr "Denne forbindelse er ikke aktiv."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Sikkerhed"
@@ -5045,40 +5040,59 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "Navn"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox (Minetest)"
msgid "Sandboxed"
msgstr "Block Testområde (Minetest)"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox (Minetest)"
+msgid "Sandbox Coverage"
+msgstr "Block Testområde (Minetest)"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "ja"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "is not running"
+msgid "Not running"
+msgstr "er ikke aktiv"
+
#: plinth/modules/security/views.py:69
#, fuzzy, python-brace-format
#| msgid "Error setting time zone: {exception}"
@@ -5587,13 +5601,13 @@ msgstr ""
msgid "Login"
msgstr "Log ind"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
#, fuzzy
#| msgid "reStore"
msgid "Storage"
msgstr "reStore"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5601,94 +5615,103 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
#| msgid "{disk_size} bytes"
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} bytes"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, fuzzy, python-brace-format
#| msgid "{disk_size} KiB"
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, fuzzy, python-brace-format
#| msgid "{disk_size} MiB"
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, fuzzy, python-brace-format
#| msgid "{disk_size} GiB"
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, fuzzy, python-brace-format
#| msgid "{disk_size} TiB"
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
#, fuzzy
#| msgid "repro service is running"
msgid "The device is already unmounting."
msgstr "repro-tjenesten er aktiv"
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
#, fuzzy
#| msgid "This service already exists"
msgid "The device is already mounted."
msgstr "Denne tjeneste eksisterer allerede"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
#, fuzzy
#| msgid "repro service is not running"
msgid "The device is not mounted."
msgstr "repro-tjenesten er ikke aktiv"
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5764,7 +5787,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Udvid Rod-partition"
@@ -5779,32 +5802,25 @@ msgstr ""
"Efter denne operation, vil der være yderligere %(expandable_root_size)s fri "
"diskplads på din rod-partition."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Kunne ikke udvidde partition: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "Partition blev udviddet."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -6169,14 +6185,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "Opdater"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Manual"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox Brugervejledning"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Enable automatic upgrades"
@@ -6187,6 +6209,24 @@ msgstr "Aktiver automatiske opdateringer"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s Setup"
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s Konfiguration"
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update"
@@ -6277,21 +6317,32 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "Kontrol af LDAP-konfiguration \"{search_item}\""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Ugyldigt servernavn"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
#, fuzzy
#| msgid "Transmission BitTorrent"
msgid "Permissions"
msgstr "Transmission BitTorrent"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6306,20 +6357,20 @@ msgstr ""
"tjenester. De kan også logge ind på systemet gennem SSH og har "
"administratorprivilegier (sudo)."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "Kunne ikke oprette LDAP-bruger."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "Kunne ikke tilføje ny bruger til gruppen {group}."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6329,45 +6380,45 @@ msgstr ""
"sikkert ind på systemet uden et kodeord. Der kan defineres flere nøgler, en "
"på hver linje. Tomme linjer og linjer som starter med # bliver ignoreret."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "Kunne ikke omdøbe LDAP-bruger."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "Kunne ikke fjerne bruger fra gruppe."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "Kunne ikke tilføje bruger til gruppe."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "Kunne ikke tilføje bruger til gruppe."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "Kunne ikke ændre LDAP-kodeord."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Kunne ikke tilføje ny bruger til admin-gruppen."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Brugerkonto oprettet, du er nu logget ind"
@@ -6619,10 +6670,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6951,46 +6999,46 @@ msgstr "Plinth administrationsværktøj til %(box_name)s"
msgid "Toggle navigation"
msgstr "Åbn/luk navigation"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Apps"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "System"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Ændr kodeord"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
#, fuzzy
#| msgid "Restart Now"
msgid "Restart"
msgstr "Genstart Nu"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
#, fuzzy
#| msgid "Shut Down Now"
msgid "Shut down"
msgstr "Sluk Nu"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Log ud"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "Sprog"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "Log ind"
@@ -7135,6 +7183,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certficate"
+msgid "Notifications"
+msgstr "Intet certifikat"
+
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
#| msgid "Enable Tor"
@@ -7207,10 +7261,13 @@ msgstr "Applikation aktiveret"
msgid "Application disabled"
msgstr "Applikation deaktiveret"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
+#~ msgid "Physical Interface"
+#~ msgstr "Fysisk Interface"
+
#, fuzzy
#~| msgid "DNS Server"
#~ msgid "SIP Server"
@@ -7860,9 +7917,6 @@ msgstr ""
#~ msgid "is running"
#~ msgstr "er aktiv"
-#~ msgid "is not running"
-#~ msgstr "er ikke aktiv"
-
#~ msgid "Anonymity Network (Tor)"
#~ msgstr "Anonymiseringstjeneste (Tor)"
diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po
index 95d13ce26..9122d9c77 100644
--- a/plinth/locale/de/LC_MESSAGES/django.po
+++ b/plinth/locale/de/LC_MESSAGES/django.po
@@ -9,9 +9,9 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
-"PO-Revision-Date: 2020-01-25 17:21+0000\n"
-"Last-Translator: nautilusx Most routers "
@@ -3560,8 +3569,14 @@ msgid ""
"as the {box_name}'s address. First remember to configure a static local IP "
"address for your {box_name} in your router's configuration. weiterzuleiten. Dadurch kann der Router den gesamten eingehenden "
+"Datenverkehr aus dem Internet an eine einzelne IP-Adresse weiterleiten, z. "
+"B. die Adresse der {box_name}. Denken Sie zunächst daran, eine statische "
+"lokale IP-Adresse für Ihre {box_name} in der Konfiguration Ihres Routers zu "
+"konfigurieren. "
msgstr ""
+"Weiterleiten von spezifiziertem Datenverkehr für jede Anwendung Alternativ können Sie nur bestimmten Datenverkehr an Ihre "
+"{box_name} weiterleiten. Dies ist ideal, wenn Sie andere Server wie "
+"{box_name} in Ihrem Netzwerk haben oder wenn Ihr Router die DMZ-Funktion "
+"nicht unterstützt. Alle Anwendungen, die eine Weboberfläche bereitstellen, "
+"müssen den Datenverkehr von den Ports 80 und 443 weiterleiten. Jede der "
+"anderen Anwendungen schlägt vor, welche Ports für diese Anwendung "
+"weitergeleitet werden müssen. Choose this if you "
"have not configured or are unable to configure the router currently and wish "
"to be reminded later. Some of the other configuration steps may fail. Wählen Sie "
+"diese Option, wenn Sie den Router nicht konfiguriert haben oder nicht "
+"konfigurieren können und später daran erinnert werden möchten. Einige der "
+"anderen Konfigurationsschritte können fehlschlagen. Most routers "
@@ -3050,7 +3043,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3173,7 +3166,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3307,7 +3300,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4307,34 +4300,49 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4776,11 +4784,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4788,83 +4796,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr ""
@@ -4927,7 +4944,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -4939,32 +4956,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5276,14 +5286,18 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+msgid "FreedomBox Updated"
+msgstr ""
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5292,6 +5306,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5366,19 +5397,28 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+msgid "Enter a valid username."
+msgstr ""
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5387,63 +5427,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5678,10 +5718,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -5950,40 +5987,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6117,6 +6154,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6185,6 +6226,6 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po
index 137ca088b..b5fa6078f 100644
--- a/plinth/locale/el/LC_MESSAGES/django.po
+++ b/plinth/locale/el/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2020-01-25 17:21+0000\n"
"Last-Translator: Nektarios Katakis Most routers "
@@ -3605,7 +3616,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3732,7 +3743,7 @@ msgstr "Επεξεργασία σύνδεσης"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Επεξεργασία"
@@ -3866,7 +3877,7 @@ msgid "This connection is not active."
msgstr "Αυτή η σύνδεση δεν είναι ενεργή."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Ασφάλεια"
@@ -5085,34 +5096,51 @@ msgstr ""
"φιλτραρίσματος μετριάζει την επίδραση μιας ενδεχομένως παραβιάσιμης "
"εφαρμογής στο υπόλοιπο σύστημα."
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr "Όνομα εφαρμογής"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr "Τρέχοντα θέματα ασφαλείας"
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr "Προηγούμενα θέματα ασφαλείας"
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr "Φιλτραρισμένα"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Sandboxed"
+msgid "Sandbox Coverage"
+msgstr "Φιλτραρισμένα"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr "Μη εφαρμόσιμα"
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr "Ναι"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr "Όχι"
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5624,11 +5652,11 @@ msgstr "Single Sign On"
msgid "Login"
msgstr "Είσοδος"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr "Χώρος Αποθήκευσης"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5640,84 +5668,98 @@ msgstr ""
"χρησιμοποιούνται προς το παρόν, να προσθέσετε και να αφαιρέσετε αφαιρούμενα "
"μέσα, επεκτείνετε το root διαμέρισμα κλπ."
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} bytes"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr "Η ενέργεια απέτυχε."
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr "Η ενέργεια ακυρώθηκε."
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr "Η συσκευή είναι ήδη προς αφαίρεση."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr "Η ενέργεια δεν υποστηρίζεται λόγω μη υποστήριξης προγραμματος οδηγού."
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr "Η ενέργεια απέτυχε επειδή διήρκησε πολύ χρόνο."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
"Η ενέργεια θα ξυπνήσει ένα δίσκο που είναι σε μια βαθιά κατάσταση ύπνου."
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr "Γίνεται προσπάθεια αφαίρεσης μιας συσκευής που είναι απασχολημένη."
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr "Η ενέργια έχει ήδη ακυρωθεί."
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας."
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr "Η συσκευή έχει ήδη προστεθεί."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr "Η συσκευή δεν είναι τοποθετημένη."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας."
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr "Η συσκευή έχει ήδη προστεθεί από άλλο χρήστη."
+#: plinth/modules/storage/__init__.py:326
+#, fuzzy, python-format, python-brace-format
+#| msgid ""
+#| "Warning: Low space on system partition ({percent_used}% used, "
+#| "{free_space} free)."
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+"Προειδοποίηση: χαμηλός χώρος στο διαμέρισμα του συστήματος ({percent_used}% "
+"χρησιμοποιείται, {free_space} είναι ελεύθερος)."
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr "Το όνομα καταλόγου δεν είναι έγκυρο."
@@ -5783,7 +5825,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Επεκτείνετε το διαμέρισμα root"
@@ -5798,34 +5840,25 @@ msgstr ""
"προχωρήσετε. Μετά από αυτήν τηv ενέργεια, %(expandable_root_size)s του "
"ελεύθερου χώρου θα είναι διαθέσιμο στο root διαμέρισμα."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Σφάλμα επέκτασης του διαμερίσματος: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "Το διαμέρισμα επεκτάθηκε με επιτυχία."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-"Προειδοποίηση: χαμηλός χώρος στο διαμέρισμα του συστήματος ({percent_used}% "
-"χρησιμοποιείται, {free_space} είναι ελεύθερος)."
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr "{drive_vendor} {drive_model} μπορεί να αποσυνδεθεί με ασφάλεια."
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr "Η συσκευή μπορεί να αποσυνδεθεί με ασφάλεια."
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr "Σφάλμα κατά την αφαίρεση της συσκευής: {error_message}"
@@ -6206,15 +6239,21 @@ msgstr "Διαβάστε και εγγραφείτε τροφοδοσίες ει
msgid "Tiny Tiny RSS (Fork)"
msgstr "Tiny Tiny RSS (Fork)"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "Ενημερωμένη έκδοση"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
"Ελέγξτε και εφαρμόστε τις πιο πρόσφατες ενημερώσεις λογισμικού και ασφαλείας."
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "Ίδρυμα FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr "Ενεργοποίηση αυτόματων ενημερώσεων"
@@ -6225,6 +6264,24 @@ msgstr ""
"Όταν είναι ενεργοποιημένες, το Freedombox ενημερώνεται αυτόματα μία φορά την "
"ημέρα."
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "To %(box_name)s είναι ενημερωμένο."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr "Ενημέρωση τώρα"
@@ -6313,19 +6370,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "Ελέγξτε την καταχώρηση LDAP \"{search_item}\""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "Πρόσβαση σε όλες τις υπηρεσίες και τις ρυθμίσεις συστήματος"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "Το όνομα χρήστη είναι δεσμευμένο."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Μη έγκυρο όνομα διακομιστή"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "Δικαιώματα"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6340,20 +6408,20 @@ msgstr ""
"υπηρεσίες. Μπορούν επίσης να συνδεθούν στο σύστημα μέσω του SSH και να έχουν "
"δικαιώματα διαχειριστή (sudo)."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "Η δημιουργία χρήστη LDAP απέτυχε."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "Απέτυχε η προσθήκη νέου χρήστη στην ομάδα {group}."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr "Εξουσιοδοτημένα κλειδιά SSH"
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6364,43 +6432,43 @@ msgstr ""
"Μπορείτε να εισαγάγετε πολλαπλά κλειδιά, ένα σε κάθε γραμμή. Οι κενές "
"γραμμές και οι γραμμές που ξεκινούν με # θα αγνοηθούν."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "Η μετονομασία του χρήστη LDAP απέτυχε."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "Απέτυχε η κατάργηση του χρήστη από την ομάδα."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "Απέτυχε η προσθήκη χρήστη στην ομάδα."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "Δεν ήταν δυνατό να προστεθούν τα κλειδιά SSH."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr "Απέτυχε η αλλαγή της κατάστασης χρήστη."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr "Δεν είναι δυνατή η διαγραφή του μοναδικού διαχειριστή στο σύστημα."
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "Η αλλαγή του κωδικού πρόσβασης χρήστη LDAP απέτυχε."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Αποτυχία προσθήκης νέου χρήστη στην ομάδα διαχειριστών."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "Απέτυχε ο περιορισμός της πρόσβασης στην κονσόλα."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Ο λογαριασμός χρήστη δημιουργήθηκε, τώρα είστε συνδεδεμένοι"
@@ -6651,10 +6719,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6988,40 +7053,40 @@ msgstr "Βασική λειτουργικότητα και σελίδα ιστο
msgid "Toggle navigation"
msgstr "Αλλαγή πλοήγησης"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "Κεντρική σελίδα"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Εφαρμογές"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "Σύστημα"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Αλλαγή κωδικού πρόσβασης"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "Κάνετε επανεκκίνηση"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "ΤΕΡΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΑΣ"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Αποσύνδεση"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr "Επιλογή γλώσσας"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "Σύνδεση"
@@ -7172,6 +7237,12 @@ msgstr ""
"Προς το παρόν οι ακόλουθες διασυνδέσεις δικτύου έχουν ρυθμιστεί ως "
"εσωτερικές: %(interface_list)s"
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Δεν υπάρχει πιστοποιητικό"
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr "Προώθηση θυρών"
@@ -7246,10 +7317,13 @@ msgstr "Η εφαρμογή ενεργοποιήθηκε"
msgid "Application disabled"
msgstr "Η εφαρμογή απενεργοποιήθηκε"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "Physical Interface"
+#~ msgstr "Φυσικό Interface"
+
#~ msgid "repro"
#~ msgstr "repro"
diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po
index 0ee57bcb7..8d9eaf2b2 100644
--- a/plinth/locale/es/LC_MESSAGES/django.po
+++ b/plinth/locale/es/LC_MESSAGES/django.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
-"PO-Revision-Date: 2020-01-25 17:21+0000\n"
-"Last-Translator: Allan Nordhøy Most routers "
@@ -3522,8 +3532,13 @@ msgid ""
"as the {box_name}'s address. First remember to configure a static local IP "
"address for your {box_name} in your router's configuration. . La "
+"mayoría de los routers proporcionan una función DMZ que permite dirigir el "
+"tráfico entrante de Internet a una única dirección IP como puede ser la de "
+"{box_name}. Recuerde configurar su {box_name} con una IP estática en su "
+"router. "
msgstr ""
+"Redirigir el tráfico de aplicaciones específicas . "
+"Puede redirigir solo el tráfico de determinadas aplicaciones a su "
+"{box_name}. Es la opción recomendad si tiene otros servidores como "
+"{box_name} en su red o si su router no soporta la función DMZ. Todas las "
+"aplicaciones con interfaz web necesitarán redirigir el tráfico de los "
+"puertos 80 y 443 para funcionar. Otras aplicaciones sugerirán qué puertos es "
+"necesario redirigir para su funcionamiento. Choose this if you "
"have not configured or are unable to configure the router currently and wish "
"to be reminded later. Some of the other configuration steps may fail. Elija esta opción si "
+"no ha configurado o no puede configurar el router en este momento y desea "
+"que se le recuerde más tarde. Puede que alguno de los siguientes pasos de la "
+"configuración falle. Most routers "
@@ -3458,7 +3452,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3583,7 +3577,7 @@ msgstr "ویرایش اتصال"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "ویرایش"
@@ -3717,7 +3711,7 @@ msgid "This connection is not active."
msgstr "این اتصال فعال نیست."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "امنیت"
@@ -4777,39 +4771,55 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "نام"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
msgid "Sandboxed"
msgstr "بازی مکعبها (Minetest)"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+msgid "Sandbox Coverage"
+msgstr "بازی مکعبها (Minetest)"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "بله"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, fuzzy, python-brace-format
#| msgid "Error setting time zone: {exception}"
@@ -5300,11 +5310,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5312,89 +5322,98 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} بایت"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, fuzzy, python-brace-format
#| msgid "{disk_size} KiB"
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, fuzzy, python-brace-format
#| msgid "{disk_size} MiB"
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, fuzzy, python-brace-format
#| msgid "{disk_size} GiB"
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, fuzzy, python-brace-format
#| msgid "{disk_size} TiB"
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
#, fuzzy
#| msgid "The requested domain is already registered."
msgid "The device is already mounted."
msgstr "دامنهٔ درخواستی از قبل ثبت شده است."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5466,7 +5485,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "بزرگکردن پارتیشن ریشه"
@@ -5481,32 +5500,25 @@ msgstr ""
"%(expandable_root_size)s فضای خالی در اختیار پارتیشن ریشهٔ شما قرار خواهد "
"گرفت."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "خطا در هنگام بزرگکردن پارتیشن: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "پارتیشن با موفقیت بزرگ شد."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5824,14 +5836,19 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+msgid "FreedomBox Updated"
+msgstr "FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
msgid "Enable auto-update"
@@ -5841,6 +5858,24 @@ msgstr "فعالسازی برنامه"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s Setup"
+msgid "%(box_name)s Updated"
+msgstr "راهاندازی %(box_name)s"
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update URL"
@@ -5919,19 +5954,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "نام کاربری معتبر نیست"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5940,65 +5986,65 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "ساختن کاربر LDAP شکست خورد."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add new user to admin group."
msgid "Failed to change user status."
msgstr "افزودن کاربر به گروه مدیران شکست خورد."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "افزودن کاربر به گروه مدیران شکست خورد."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "حساب کاربری ساخته شد، شما الان وارد سیستم هستید"
@@ -6248,10 +6294,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6550,43 +6593,43 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
#, fuzzy
msgid "Apps"
msgstr "برنامهها"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "زبان"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6723,6 +6766,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certficate"
+msgid "Notifications"
+msgstr "بدون گواهی دیجیتال"
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6793,10 +6842,14 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
+#, fuzzy
+#~ msgid "Physical Interface"
+#~ msgstr "درگاه فیزیکی"
+
#, fuzzy
#~| msgid "DNS Server"
#~ msgid "SIP Server"
diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po
index 6e7c34527..d1d79dfdf 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2016-01-31 22:24+0530\n"
"Last-Translator: Sunil Mohan Adapa Most routers "
@@ -3651,7 +3646,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3780,7 +3775,7 @@ msgstr "EDIT CONNECTION"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "EDIT"
@@ -3914,7 +3909,7 @@ msgid "This connection is not active."
msgstr "THIS CONNECTION IS NOT ACTIVE."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "SECURITY"
@@ -5137,40 +5132,59 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "NAME"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Blocked"
msgid "Sandboxed"
msgstr "BLOCKED"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Blocked"
+msgid "Sandbox Coverage"
+msgstr "BLOCKED"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "YES"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "Tor is not running"
+msgid "Not running"
+msgstr "TOR IS NOT RUNNING"
+
#: plinth/modules/security/views.py:69
#, fuzzy, python-brace-format
#| msgid "Error setting time zone: {exception}"
@@ -5679,13 +5693,13 @@ msgstr ""
msgid "Login"
msgstr "LOGIN"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
#, fuzzy
#| msgid "reStore"
msgid "Storage"
msgstr "RESTORE"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5693,89 +5707,98 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
#, fuzzy
#| msgid "repro service is running"
msgid "The device is already unmounting."
msgstr "REPRO SERVICE IS RUNNING"
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
#, fuzzy
#| msgid "This service already exists"
msgid "The device is already mounted."
msgstr "THIS SERVICE ALREADY EXISTS"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
#, fuzzy
#| msgid "repro service is not running"
msgid "The device is not mounted."
msgstr "REPRO SERVICE IS NOT RUNNING"
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5848,7 +5871,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -5860,35 +5883,28 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, fuzzy, python-brace-format
#| msgid "Error setting time zone: {exception}"
msgid "Error expanding partition: {exception}"
msgstr "ERROR SETTING TIME ZONE: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
#, fuzzy
#| msgid "Password changed successfully."
msgid "Partition expanded successfully."
msgstr "PASSWORD CHANGED SUCCESSFULLY."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -6256,16 +6272,22 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
#, fuzzy
#| msgid "Update URL"
msgid "Update"
msgstr "UPDATE URL"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Manual"
+msgid "FreedomBox Updated"
+msgstr "FREEDOMBOX MANUAL"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Enable automatic upgrades"
@@ -6276,6 +6298,24 @@ msgstr "ENABLE AUTOMATIC UPGRADES"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s Setup"
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s SETUP"
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update URL"
@@ -6366,21 +6406,32 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "CHECK LDAP ENTRY \"{search_item}\""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "INVALID SERVER NAME"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
#, fuzzy
#| msgid "Transmission BitTorrent"
msgid "Permissions"
msgstr "TRANSMISSION BITTORRENT"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6394,20 +6445,20 @@ msgstr ""
"ABLE TO LOG IN TO ALL SERVICES. THEY CAN ALSO LOG IN TO THE SYSTEM THROUGH "
"SSH AND HAVE ADMINISTRATIVE PRIVILEGES (SUDO)."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "CREATING LDAP USER FAILED."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "FAILED TO ADD NEW USER TO {group} GROUP."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6417,45 +6468,45 @@ msgstr ""
"SYSTEM WITHOUT USING A PASSWORD. YOU MAY ENTER MULTIPLE KEYS, ONE ON EACH "
"LINE. BLANK LINES AND LINES STARTING WITH # WILL BE IGNORED."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "RENAMING LDAP USER FAILED."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "FAILED TO REMOVE USER FROM GROUP."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "FAILED TO ADD USER TO GROUP."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "FAILED TO ADD USER TO GROUP."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "CHANGING LDAP USER PASSWORD FAILED."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "FAILED TO ADD NEW USER TO ADMIN GROUP."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "USER ACCOUNT CREATED, YOU ARE NOW LOGGED IN"
@@ -6707,10 +6758,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -7044,46 +7092,46 @@ msgstr "PLINTH ADMINISTRATIVE INTERFACE FOR THE %(box_name)s"
msgid "Toggle navigation"
msgstr "TOGGLE NAVIGATION"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "APPS"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "SYSTEM"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "CHANGE PASSWORD"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
#, fuzzy
#| msgid "Restart Now"
msgid "Restart"
msgstr "RESTART NOW"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
#, fuzzy
#| msgid "Shut Down Now"
msgid "Shut down"
msgstr "SHUT DOWN NOW"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "LOG OUT"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "LANGUAGE"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "LOG IN"
@@ -7228,6 +7276,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certficate"
+msgid "Notifications"
+msgstr "NO CERTFICATE"
+
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
#| msgid "Enable Tor"
@@ -7306,10 +7360,13 @@ msgstr "APPLICATIONS"
msgid "Application disabled"
msgstr "APPLICATIONS"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
+#~ msgid "Physical Interface"
+#~ msgstr "PHYSICAL INTERFACE"
+
#, fuzzy
#~| msgid "DNS Server"
#~ msgid "SIP Server"
@@ -7934,11 +7991,6 @@ msgstr ""
#~ msgid "is running"
#~ msgstr "TOR IS RUNNING"
-#, fuzzy
-#~| msgid "Tor is not running"
-#~ msgid "is not running"
-#~ msgstr "TOR IS NOT RUNNING"
-
#~ msgid "Anonymity Network (Tor)"
#~ msgstr "ANONYMITY NETWORK (TOR)"
diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po
index bee197380..10d09cc2b 100644
--- a/plinth/locale/fr/LC_MESSAGES/django.po
+++ b/plinth/locale/fr/LC_MESSAGES/django.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
-"PO-Revision-Date: 2020-01-18 14:42+0000\n"
-"Last-Translator: James Valleroy Most routers "
@@ -3568,7 +3579,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3695,7 +3706,7 @@ msgstr "Modifier Connexion"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Modifier"
@@ -3829,7 +3840,7 @@ msgid "This connection is not active."
msgstr "Cette connexion n'est pas active."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Sécurité"
@@ -3937,7 +3948,7 @@ msgstr "Inactif"
#: plinth/modules/networks/templates/connections_list.html:124
#, python-format
msgid "%(box_name)s Internet Connectivity"
-msgstr ""
+msgstr "Connectivité à Internet de %(box_name)s"
#: plinth/modules/networks/templates/connections_list.html:129
#, python-format
@@ -5029,34 +5040,53 @@ msgstr ""
"L’isolation limite l’impact sur le reste du système d’une application "
"potentiellement compromise."
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr "Application"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr "failles actuelles"
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr "Anciennes failles"
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr "Bac à sable"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Sandboxed"
+msgid "Sandbox Coverage"
+msgstr "Bac à sable"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr "Non applicable"
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr "Oui"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr "Non"
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "is not running"
+msgid "Not running"
+msgstr "n'est pas actif"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5559,11 +5589,11 @@ msgstr "Authentification unique"
msgid "Login"
msgstr "S'identifier"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr "Stockage"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5574,87 +5604,101 @@ msgstr ""
"{box_name}. Vous pouvez vour les media de stockage utilisés actuellement, "
"monter et démonter les média amovibles , étendre la partition racine, etc."
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} octets"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} Kio"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} Mio"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} Gio"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} Tio"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr "L'opération a échoué."
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr "L'opération a été annulée."
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr "Le media est déjà en train d'être démonté."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
"L'opération n'est pas gérée à cause du manque d'un pilote ou d'un outil "
"adapté."
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr "L'opération ne s'est pas terminée."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
"L'opération devrait réveiller un disque qui se trouve dans un état "
"d'endormissement profond."
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr "Tentative de démonter un media qui a du travail en cours."
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr "L'opération a déjà été annulée."
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr "Vous n'êtes pas autorisé à effectuer l'opération demandée."
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr "Le media est déjà monté."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr "Le media n'est pas monté."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr "Vous n'êtes pas autorisé à utiliser l'option demandée."
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr "Le media est monté par un autre utilisateur."
+#: plinth/modules/storage/__init__.py:326
+#, fuzzy, python-format, python-brace-format
+#| msgid ""
+#| "Warning: Low space on system partition ({percent_used}% used, "
+#| "{free_space} free)."
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+"Attention : espace faible sur la partition système, "
+"({percent_used}% utilisé, {free_space} libre)."
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr "Nom de répertoire invalide."
@@ -5720,7 +5764,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Étendre la partition root"
@@ -5735,34 +5779,25 @@ msgstr ""
"%(expandable_root_size)s d'espace en plus sera disponible pour votre "
"partition root."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Erreur lors de l'expansion de la partition : {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "Partition étendue avec succès."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-"Attention : espace faible sur la partition système, ({percent_used}% "
-"utilisé, {free_space} libre)."
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr "{drive_vendor} {drive_model} peut être débranché en toute sécurité."
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr "Le media peut être débranché en toute sécurité."
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr "Erreur lors de l'éjection du media : {error_message}"
@@ -6139,16 +6174,22 @@ msgstr "Lire et souscrire à des abonnements d'infos"
msgid "Tiny Tiny RSS (Fork)"
msgstr "Tiny Tiny RSS (Fork)"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "Actualiser"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
"Rechercher et installer les dernières mises à jour logicielles et les "
"correctifs de sécurité."
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "Fondation FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr "Activer les mises à jour automatiques"
@@ -6159,6 +6200,24 @@ msgstr ""
"Une fois activé, FreedomBox se mettra à jour automatiquement une fois par "
"jour."
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s est à jour."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr "Mettre à jour maintenant"
@@ -6246,19 +6305,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "Vérification de l'entrée LDAP \"{search_item}\""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "Accès à tous les services et les configurations-système"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "Le nom d'utilisateur est déjà pris ou est réservé."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Nom de serveur invalide"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "Permissions"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6273,20 +6343,20 @@ msgstr ""
"peuvent également se connecter au système avec Secure Shell (SSH) et se voir "
"accorder le mode superutilisateur (sudo)."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "La création de l'utilisateur LDAP n'a pas abouti."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "Échec de l'ajout d'un nouvel utilisateur au groupe {group}."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr "Clés SSH autorisées"
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6297,43 +6367,43 @@ msgstr ""
"clefs multiples, une sur chaque ligne. Les lignes vides et celles commençant "
"par # seront ignorées."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "Le changement du nom de l'utilisateur LDAP a échoué."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "Échec du retrait de l'utilisateur du groupe."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "Échec de l'ajout de l'utilisateur au groupe."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "Impossible de définir les clés SSH."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr "Échec du changement de statut de l'utilisateur."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr "Impossible de supprimer le seul administrateur de ce système."
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "Le changement de mot de passe pour l'utilisateur LDAP a échoué."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "L'ajout du nouvel utilisateur au groupe administrateur n'a pas abouti."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "Échec de la restriction de l'accès à la console."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Compte utilisateur créé, vous êtes maintenant connecté."
@@ -6586,10 +6656,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6923,40 +6990,40 @@ msgstr "Fonction centrale et interface web pour %(box_name)s"
msgid "Toggle navigation"
msgstr "Basculer Navigation"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "Accueil"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Applis"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "Système"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Changer le mot de passe"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "Redémarrer"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "Éteindre"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Se déconnecter"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr "Choisir la langue"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "S'identifier"
@@ -7105,6 +7172,12 @@ msgstr ""
"Actuellement les interfaces-réseau suivantes sont configurées comme "
"internes : %(interface_list)s"
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Aucun certificat"
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr "Redirection de port"
@@ -7180,10 +7253,13 @@ msgstr "Application activée"
msgid "Application disabled"
msgstr "Application désactivée"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "Physical Interface"
+#~ msgstr "Interface Physique"
+
#~ msgid "repro"
#~ msgstr "repro"
@@ -8089,9 +8165,6 @@ msgstr "Gujarati"
#~ msgid "is running"
#~ msgstr "est actif"
-#~ msgid "is not running"
-#~ msgstr "n'est pas actif"
-
#~ msgid "Anonymity Network (Tor)"
#~ msgstr "Réseau Anonyme (Tor)"
diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po
index f45ec9721..527d9a7be 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-07-11 08:01+0000\n"
"Last-Translator: Miguel A. Bouzada Most routers "
@@ -3054,7 +3047,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3177,7 +3170,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3311,7 +3304,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4313,34 +4306,49 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4782,11 +4790,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4794,83 +4802,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr ""
@@ -4933,7 +4950,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -4945,32 +4962,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5282,14 +5292,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5298,6 +5314,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5372,19 +5405,28 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+msgid "Enter a valid username."
+msgstr ""
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5393,63 +5435,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5686,10 +5728,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -5958,40 +5997,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6125,6 +6164,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6193,6 +6236,6 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po
index c1b0a58d2..8d02c3e99 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2018-02-05 18:37+0000\n"
"Last-Translator: drashti kaushik Most routers "
@@ -3245,7 +3238,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3370,7 +3363,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3504,7 +3497,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4514,34 +4507,49 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4988,11 +4996,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5000,83 +5008,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5141,7 +5158,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -5153,32 +5170,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5496,14 +5506,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox"
+msgid "FreedomBox Updated"
+msgstr "ફ્રિડમબોક્ષ"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Enable application"
@@ -5514,6 +5530,23 @@ msgstr "એપ્લીકેશનને પ્રસ્થાપિત કર
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update URL"
@@ -5592,19 +5625,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "અમાન્ય સર્વર નામ"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5613,63 +5657,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5910,10 +5954,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6200,42 +6241,42 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "ભાષા"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6369,6 +6410,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "Configuration"
+msgid "Notifications"
+msgstr "રૂપરેખાંકન"
+
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
#| msgid "Enable forwarding"
@@ -6441,7 +6488,7 @@ msgstr "એપ્લિકેશન સક્ષમ કરો"
msgid "Application disabled"
msgstr "એપ્લિકેશન અક્ષમ છે"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po
index e303bff63..cd6960393 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2018-08-09 20:39+0000\n"
"Last-Translator: Gayathri Das Most routers "
@@ -3488,7 +3483,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3613,7 +3608,7 @@ msgstr "कनेक्शन संपादित करें"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "संपादन"
@@ -3747,7 +3742,7 @@ msgid "This connection is not active."
msgstr "यह कनेक्शन सक्रिय नहीं है."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "सुरक्षा"
@@ -4928,42 +4923,61 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "नाम"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox"
msgid "Sandboxed"
msgstr "ब्लॉक सेंडबोक्स"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox"
+msgid "Sandbox Coverage"
+msgstr "ब्लॉक सेंडबोक्स"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "हाँ"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
#, fuzzy
#| msgid "None"
msgid "No"
msgstr "कोई नहीं"
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "Tor is running"
+msgid "Not running"
+msgstr "टोर चल रहा है"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5461,11 +5475,11 @@ msgstr "एकल साइन-ऑन"
msgid "Login"
msgstr "लॉगिन"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr "स्टोरेज"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5473,83 +5487,97 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} बाइट्स"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} किब"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} मेब"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} जिब"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} टीब"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr "ऑपरेशन अनुत्तीर्ण हो गया."
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr "ऑपरेशन रद्द किया गया."
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr "यह डिवाइस पहले से अनमाउट किया जा रहा है."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr "यह ऑपरेशन अनुपलब्ध है क्यैकि ड्राइवर/उपकरण टूल समर्थित नहीं है."
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr "ऑपरेशन टाइम आउट हो गया."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "यह ऑपरेशन गहरी नींद की स्थिति का डिस्क को जाग जाएगा."
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr "व्यस्त डिवाइस को अनमाउंट करने का प्रयास कर रहा है."
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr "ऑपरेशन पहले से रद्द किया गया."
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr "अनुरोधित ऑपरेशन करने के लिए अधिकृत नहीं है."
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr "यह डिवाइस पहले से माउंट किया गया."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr "यह डिवाइस नहीं माउंट किया गया."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr "अनुरोधित विकल्प का उपयोग करने की अनुमति नहीं है."
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है."
+#: plinth/modules/storage/__init__.py:326
+#, fuzzy, python-format, python-brace-format
+#| msgid ""
+#| "Warning: Low space on system partition ({percent_used}% used, "
+#| "{free_space} free)."
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+"वार्निंग: सिस्टम पार्टीशन पर कम जगह ({percent_used}% उपयोग किया गया, "
+"{free_space} free)."
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5627,7 +5655,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "रूट पारटिशन विस्तार करें"
@@ -5641,34 +5669,25 @@ msgstr ""
"आगे बढ़ने से पहले अपने डेटा का बैकअप करें. इस ऑपरेशन के बाद, %(expandable_root_size)s से "
"अतिरिक्त खाली जगह आपके रूट पार्टीशन में उपलब्ध होगा."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "पार्टीशन का विस्तार करने में त्रुटि: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "पार्टीशन सफलतापूर्वक विस्तारित हुआ."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-"वार्निंग: सिस्टम पार्टीशन पर कम जगह ({percent_used}% उपयोग किया गया, "
-"{free_space} free)."
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr "{drive_vendor}{drive_model} को सुरक्षित रूप से अनप्लग किया जा सकता है."
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr "डिवाइस सुरक्षित रूप से अनप्लग किया जा सकता है."
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}"
@@ -6048,14 +6067,20 @@ msgstr "समाचार फ़ीड्स पढ़ें और सब्
msgid "Tiny Tiny RSS (Fork)"
msgstr "टैनी टैनी आरएसएस (फोर्क)"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "अपडेट"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "फ्रीडमबाक्स फाउंडेशन"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Enable automatic upgrades"
@@ -6066,6 +6091,24 @@ msgstr "ऑटोमेटिक अपग्रेडस सक्षम कर
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s उद्दिनांकित है."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update"
@@ -6153,19 +6196,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "एलडीएपी प्रविष्टि चेक करें \"{search_item}\""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "सब सर्विसस और सिस्टम सेटिंग्स तक पहुंच"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "यूसरनाम लिया है या आरक्षित है."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "सर्वर नाम अमान्य है"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "अनुमतियाँ"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6178,20 +6232,20 @@ msgstr ""
" Most routers "
@@ -3529,7 +3540,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3656,7 +3667,7 @@ msgstr "Kapcsolat szerkesztése"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Szerkesztés"
@@ -3790,7 +3801,7 @@ msgid "This connection is not active."
msgstr "Ez a kapcsolat nem aktív."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Biztonság"
@@ -5002,44 +5013,63 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr "Alkalmazás neve"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
#, fuzzy
#| msgid "Show security vulnerabilities"
msgid "Current Vulnerabilities"
msgstr "Biztonsági rések megjelenítése"
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
#, fuzzy
#| msgid "Show security vulnerabilities"
msgid "Past Vulnerabilities"
msgstr "Biztonsági rések megjelenítése"
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox"
msgid "Sandboxed"
msgstr "Blokk sandbox"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox"
+msgid "Sandbox Coverage"
+msgstr "Blokk sandbox"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "igen"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
#, fuzzy
#| msgid "None"
msgid "No"
msgstr "Nincs"
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "Tor is running"
+msgid "Not running"
+msgstr "A Tor fut"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5553,11 +5583,11 @@ msgstr "Egyszeri bejelentkezés"
msgid "Login"
msgstr "Bejelentkezés"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr "Háttértár"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5569,86 +5599,100 @@ msgstr ""
"fel- és lecsatolhatsz cserélhető adathordozókat, kibővítheted a root "
"partíciót, stb."
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} byte"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr "A művelet sikertelen."
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr "A művelet meg lett szakítva."
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr "Az eszköz leválasztása már folyamatban van."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
"A művelet nem támogatott hiányzó eszközvezérlő/segédeszköz támogatás miatt."
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr "A művelet túllépte az időkorlátot."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
"A művelet fel fogja ébreszteni a lemezt, amely mély-alvó állapotban van."
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
"Megpróbáltál leválasztani egy eszközt, amely jelenleg is használatban van."
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr "A művelet már meg lett szakítva."
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr "Nem jogosult végrehajtani a kért műveletet."
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr "Az eszköz már fel lett csatolva."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr "Az eszköz nincs felcsatolva."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr "Nem használhatja a kért lehetőséget."
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr "Az eszközt egy másik felhasználó felcsatolva."
+#: plinth/modules/storage/__init__.py:326
+#, fuzzy, python-format, python-brace-format
+#| msgid ""
+#| "Warning: Low space on system partition ({percent_used}% used, "
+#| "{free_space} free)."
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+"Figyelmeztetés: Kevés a szabad hely a rendszerpartíción "
+"({percent_used}% felhasználva, {free_space} szabad)."
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid repository name."
@@ -5724,7 +5768,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Root partíció kibővítése"
@@ -5739,34 +5783,25 @@ msgstr ""
"után %(expandable_root_size)s további szabad tárterület lesz elérhető a root "
"partíción."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Hiba a partíció kibővítése során: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "A partíció kibővítése sikerült."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-"Figyelmeztetés: Kevés a szabad hely a rendszerpartíción ({percent_used}% "
-"felhasználva, {free_space} szabad)."
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr "{drive_vendor} {drive_model} biztonságosan kivehető."
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr "Az eszköz biztonságosan kivehető."
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr "Hiba történt az eszköz kiadása során: {error_message}"
@@ -6164,15 +6199,21 @@ msgstr "Hírcsatornákra való feliratkozás / olvasás"
msgid "Tiny Tiny RSS (Fork)"
msgstr "Tiny Tiny RSS (Fork)"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "Frissítés"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
"A legfrissebb szoftver- és biztonsági frissítések ellenőrzése és alkalmazása."
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox Alapítvány"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr "Automatikus frissítések engedélyezése"
@@ -6182,6 +6223,24 @@ msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
"Ha engedélyezett, akkor a FreedomBox automatikusan frissít naponta egyszer."
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "A %(box_name)s naprakész."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr "Frissítés most"
@@ -6260,19 +6319,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "LDAP bejegyzés ellenőrzése: \"{search_item}\""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "Hozzáférés az összes szolgáltatáshoz és rendszerbeállításhoz"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "A felhasználói név (már) foglalt."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Érvénytelen kiszolgálónév"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "Engedélyek"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6288,20 +6358,20 @@ msgstr ""
"képesek bejelentkezni a rendszerbe, ahol adminisztrátori jogosultságokkal "
"rendelkeznek (sudo)."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "LDAP felhasználó létrehozása sikertelen."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "Nem sikerült hozzáadni az új felhasználót ehhez a csoporthoz: {group}."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr "Engedélyezett SSH kulcsok"
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6311,45 +6381,45 @@ msgstr ""
"jelszó nélkül jelentkezzen be. Több kulcs is megadható; soronként egy. Az "
"üres, illetve # jellel kezdődő sorok nem számítanak."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "LDAP felhasználó átnevezése sikertelen."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "Nem sikerült eltávolítani a felhasználót a csoportból."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "SSH kulcsok beállítása sikertelen."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr "Nem lehet törölni a rendszer egyetlen rendszergazdáját."
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "LDAP felhasználó jelszavának megváltoztatása sikertelen."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Nem sikerült hozzáadni az új felhasználót a rendszergazda csoporthoz."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "Nem sikerült a konzol hozzáférés korlátozása."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Felhasználói fiók létrehozva, bejelentkezés sikeres"
@@ -6600,10 +6670,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6934,40 +7001,40 @@ msgstr "Alapvető funkcionalitás és webes felület %(box_name)s eszközére"
msgid "Toggle navigation"
msgstr "Navigációs sor ki- vagy bekapcsolása"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "Kezdőlap"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Alkalmazások"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "Rendszer"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Jelszómódosítás"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "Újraindítás"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "Leállítás"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Kijelentkezés"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr "Válassz nyelvet"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "Bejelentkezés"
@@ -7117,6 +7184,12 @@ msgstr ""
"Jelenleg a következő hálózati interfészek vannak belsőként konfigurálva: "
"%(interface_list)s"
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Nincs tanúsítvány"
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr "Porttovábbítás"
@@ -7190,10 +7263,13 @@ msgstr "Alkalmazás engedélyezve"
msgid "Application disabled"
msgstr "Alkalmazás letiltva"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr "Gudzsaráti"
+#~ msgid "Physical Interface"
+#~ msgstr "Fizikai interfész"
+
#~ msgid "repro"
#~ msgstr "repro"
@@ -7368,9 +7444,6 @@ msgstr "Gudzsaráti"
#~ "syncthing címről érhető el. Asztali és mobil kliensek szintén hozzáférhetőek."
-#~ msgid "Tor is running"
-#~ msgstr "A Tor fut"
-
#~ msgid "Tor is not running"
#~ msgstr "A Tor nem fut"
diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po
index d3713655a..8bdade4fe 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2018-11-02 00:44+0000\n"
"Last-Translator: ButterflyOfFire Most routers "
@@ -3208,7 +3202,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3334,7 +3328,7 @@ msgstr "Sunting Koneksi"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Sunting"
@@ -3470,7 +3464,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4515,38 +4509,53 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "Nama"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "ya"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5032,11 +5041,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5044,88 +5053,97 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
#| msgid "{disk_size} bytes"
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} bytes"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, fuzzy, python-brace-format
#| msgid "{disk_size} KiB"
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, fuzzy, python-brace-format
#| msgid "{disk_size} MiB"
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, fuzzy, python-brace-format
#| msgid "{disk_size} GiB"
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, fuzzy, python-brace-format
#| msgid "{disk_size} TiB"
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Actions"
@@ -5192,7 +5210,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -5204,32 +5222,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5551,14 +5562,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Enable application"
@@ -5569,6 +5586,24 @@ msgstr "Aktifkan aplikasi"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s Setup"
+msgid "%(box_name)s Updated"
+msgstr "Pengaturan %(box_name)s"
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update URL"
@@ -5647,19 +5682,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Actions"
+msgid "Enter a valid username."
+msgstr "Aksi"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5668,65 +5714,65 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "Gagal membuat pengguna LDAP."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add new user to admin group."
msgid "Failed to change user status."
msgstr "Gagal menambahkan pengguna baru ke kelompok admin."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Gagal menambahkan pengguna baru ke kelompok admin."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5971,10 +6017,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6269,46 +6312,46 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Apps"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
#, fuzzy
#| msgid "Restart Now"
msgid "Restart"
msgstr "Jalankan ulang Sekarang"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
#, fuzzy
#| msgid "Shut Down Now"
msgid "Shut down"
msgstr "Matikan Sekarang"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "Bahasa"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6446,6 +6489,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certficate"
+msgid "Notifications"
+msgstr "Tidak ada Sertifikat"
+
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
#| msgid "Enable Tor"
@@ -6516,10 +6565,13 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
+#~ msgid "Physical Interface"
+#~ msgstr "Interface Fisik"
+
#, fuzzy
#~| msgid "DNS Server"
#~ msgid "SIP Server"
diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po
index a04e844da..3d15ee5fb 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-09-03 21:24+0000\n"
"Last-Translator: Swann Martinet Most routers "
@@ -3509,7 +3504,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3636,7 +3631,7 @@ msgstr "Modifica Connessione"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Modifica"
@@ -3771,7 +3766,7 @@ msgid "This connection is not active."
msgstr "Questa connessione non è attiva."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Sicurezza"
@@ -4926,40 +4921,57 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "Nome"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox"
msgid "Sandboxed"
msgstr "Block Sandbox"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox"
+msgid "Sandbox Coverage"
+msgstr "Block Sandbox"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "si"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5408,11 +5420,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5420,83 +5432,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
msgid "Invalid directory name."
@@ -5562,7 +5583,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -5574,32 +5595,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5920,14 +5934,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr "Abilita l'aggiornamento automatico"
@@ -5936,6 +5956,24 @@ msgstr "Abilita l'aggiornamento automatico"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s è aggiornato."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -6010,19 +6048,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Nome Server Invalido"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6031,63 +6080,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -6332,10 +6381,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6638,40 +6684,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6805,6 +6851,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Nessun certificato"
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6873,10 +6925,13 @@ msgstr "Applicazione abilitata"
msgid "Application disabled"
msgstr "Applicazione disabilitata"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
+#~ msgid "Physical Interface"
+#~ msgstr "Interfaccia Fisica"
+
#~ msgid "repro"
#~ msgstr "repro"
diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po
index 06b6fa8c9..8c54b5518 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME Most routers "
@@ -3051,7 +3044,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3174,7 +3167,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3308,7 +3301,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4308,34 +4301,49 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4777,11 +4785,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4789,83 +4797,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr ""
@@ -4928,7 +4945,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -4940,32 +4957,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5277,14 +5287,18 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+msgid "FreedomBox Updated"
+msgstr ""
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5293,6 +5307,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5367,19 +5398,28 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+msgid "Enter a valid username."
+msgstr ""
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5388,63 +5428,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5679,10 +5719,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -5951,40 +5988,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6118,6 +6155,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6186,6 +6227,6 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po
index 06b6fa8c9..8c54b5518 100644
--- a/plinth/locale/kn/LC_MESSAGES/django.po
+++ b/plinth/locale/kn/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME Most routers "
@@ -3051,7 +3044,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3174,7 +3167,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3308,7 +3301,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4308,34 +4301,49 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4777,11 +4785,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4789,83 +4797,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr ""
@@ -4928,7 +4945,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -4940,32 +4957,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5277,14 +5287,18 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+msgid "FreedomBox Updated"
+msgstr ""
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5293,6 +5307,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5367,19 +5398,28 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+msgid "Enter a valid username."
+msgstr ""
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5388,63 +5428,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5679,10 +5719,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -5951,40 +5988,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6118,6 +6155,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6186,6 +6227,6 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po
index dd2b139f9..fe7c6f264 100644
--- a/plinth/locale/lt/LC_MESSAGES/django.po
+++ b/plinth/locale/lt/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME Most routers "
@@ -3052,7 +3045,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3175,7 +3168,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3309,7 +3302,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4309,34 +4302,49 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4778,11 +4786,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4790,83 +4798,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr ""
@@ -4929,7 +4946,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -4941,32 +4958,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5278,14 +5288,18 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+msgid "FreedomBox Updated"
+msgstr ""
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5294,6 +5308,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5368,19 +5399,28 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+msgid "Enter a valid username."
+msgstr ""
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5389,63 +5429,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5680,10 +5720,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -5952,40 +5989,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6119,6 +6156,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6187,6 +6228,6 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po
index 33e7a21fe..267275aa2 100644
--- a/plinth/locale/nb/LC_MESSAGES/django.po
+++ b/plinth/locale/nb/LC_MESSAGES/django.po
@@ -15,8 +15,8 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
-"PO-Revision-Date: 2020-01-25 17:21+0000\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
+"PO-Revision-Date: 2020-01-31 13:50+0000\n"
"Last-Translator: Allan Nordhøy Most routers "
@@ -3613,7 +3624,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3740,7 +3751,7 @@ msgstr "Rediger tilkobling"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Rediger"
@@ -3874,7 +3885,7 @@ msgid "This connection is not active."
msgstr "Denne forbindelsen er ikke aktiv."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Sikkerhet"
@@ -5085,45 +5096,64 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr "Programnavn"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
#, fuzzy
#| msgid "Show security vulnerabilities"
msgid "Current Vulnerabilities"
msgstr "Vis sikkerhetssårbarheter"
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
#, fuzzy
#| msgid "Show security vulnerabilities"
msgid "Past Vulnerabilities"
msgstr "Vis sikkerhetssårbarheter"
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox"
msgid "Sandboxed"
msgstr "Block-sandkassen"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox"
+msgid "Sandbox Coverage"
+msgstr "Block-sandkassen"
+
+#: plinth/modules/security/templates/security_report.html:70
#, fuzzy
msgid "N/A"
msgstr "I/t"
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "Ja"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
#, fuzzy
#| msgid "None"
msgid "No"
msgstr "Ingen"
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "is not running"
+msgid "Not running"
+msgstr "kjører ikke"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5630,11 +5660,11 @@ msgstr "Engangspålogging"
msgid "Login"
msgstr "Login"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr "Lager"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5645,84 +5675,98 @@ msgstr ""
"kan vise lagringsmedia som er i bruk, montere og avmontere flyttbare medium, "
"utvide rotpartisjonen, osv."
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} byte"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr "Operasjonen mislyktes."
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr "Operasjonen ble avbrutt."
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr "Enheten avmonteres allerede."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
"Denne aktiviteten støttes ikke på grunn av manglende driver-/verktøystøtte."
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr "Tidsavbrudd for operasjon."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "Operasjonen vil vekke en disk fra en tilstand av dyp søvn."
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr "Prøver å avmontere en opptatt enhet."
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr "Operasjonen har allerede blitt avbrutt."
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr "Mangler rettigheter til utførelse av forespurt operasjon."
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr "Denne enheten er allerede montert."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr "Enheten er ikke montert."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr "Mangler rettigheter til bruk av forespurt valg."
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr "Enheten er montert av en annen bruker."
+#: plinth/modules/storage/__init__.py:326
+#, fuzzy, python-format, python-brace-format
+#| msgid ""
+#| "Warning: Low space on system partition ({percent_used}% used, "
+#| "{free_space} free)."
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+"Advarsel: Lite plass igjen på systempartisjon ({percent_used}% brukt, "
+"{free_space} ledig)."
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5798,7 +5842,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Utvid root-partisjon"
@@ -5813,34 +5857,25 @@ msgstr ""
"operasjonen vil det være %(expandable_root_size)s med ekstra plass "
"tilgjengelig på root-partisjonen din."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Utviding av partisjon feilet: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "Vellykket partisjonsutvidelse."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-"Advarsel: Lite plass igjen på systempartisjon ({percent_used}% brukt, "
-"{free_space} ledig)."
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr "{drive_vendor} {drive_model} kan trygt kobles fra."
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr "Enheten kan trygt kobles fra."
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr "Feil ved utløsing av enhet: {error_message}"
@@ -6230,14 +6265,20 @@ msgstr "Les og abonner på nyhetsstrømmer"
msgid "Tiny Tiny RSS (Fork)"
msgstr "Tiny Tiny RSS (avgreining)"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "Oppdater"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr "Sjekk og legg til siste programvare- og sikkerhetsoppdateringer."
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox Foundation"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr "Aktiver auto-oppdatering"
@@ -6246,6 +6287,24 @@ msgstr "Aktiver auto-oppdatering"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr "Når påskrudd, oppdateres FreedomBox automatisk én gang om dagen."
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s er oppdatert."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr "Oppdater nå"
@@ -6332,19 +6391,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "Sjekk LDAP-oppføring «{search_item}»"
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "Tilgang til alle tjenester og systeminnstillinger"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "Brukernavnet er opptatt eller reservert."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Ugyldig tjenernavn"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "Tilganger"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6358,20 +6428,20 @@ msgstr ""
"gruppen kan logge seg på alle tjenester. De kan også logge inn på systemet "
"via SSH, og ha administrative rettigheter (sudo)."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "Oppretting av LDAP-bruker feilet."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "Klarte ikke legge ny bruker til gruppe {group}."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr "Autoriserte SSH-nøkler"
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6381,45 +6451,45 @@ msgstr ""
"på systemet uten å bruke passord. Du kan legge inn multiple (flere) nøkler, "
"én på hver linje. Blanke linjer og linjer som starter med # vil bli ignorert."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "Klarte ikke å bytte navn på LDAP-bruker."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "Klarte ikke å slette bruker fra gruppe."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "Klarte ikke legge bruker til gruppe."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "Klarte ikke sette SSH-nøkler."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "Klarte ikke legge bruker til gruppe."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr "Kan ikke slette kun administratoren i systemet."
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "Klarte ikke å bytte passord for LDAP-bruker."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Klarte ikke å legge til en ny bruker i admin-gruppen."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "Klarte ikke begrense konsolltilgang."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Brukerkonto er opprettet, du er nå logget inn"
@@ -6655,7 +6725,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:33
msgid "Allowed IPs"
-msgstr ""
+msgstr "Tillatte IP-er"
#: plinth/modules/wireguard/templates/wireguard.html:34
#: plinth/modules/wireguard/templates/wireguard.html:90
@@ -6670,12 +6740,10 @@ msgid "No peers configured to connect to this %(box_name)s yet."
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
-#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
-msgstr ""
+#, fuzzy, python-format
+#| msgid "Public key of this machine:"
+msgid "Public key for this %(box_name)s:"
+msgstr "Offentlig nøkkel tilhørende denne maskinen:"
#: plinth/modules/wireguard/templates/wireguard.html:68
#, fuzzy
@@ -6692,7 +6760,7 @@ msgstr "Legg til en ny introduserer"
#: plinth/modules/wireguard/templates/wireguard.html:76
#: plinth/modules/wireguard/views.py:69
msgid "Add Allowed Client"
-msgstr ""
+msgstr "Legg til tillatt klient"
#: plinth/modules/wireguard/templates/wireguard.html:79
#, fuzzy
@@ -6703,12 +6771,12 @@ msgstr "Nettpratklient"
#: plinth/modules/wireguard/templates/wireguard.html:81
#, python-format
msgid "Servers that %(box_name)s will connect to:"
-msgstr ""
+msgstr "Tjenere %(box_name)s kobler seg til:"
#: plinth/modules/wireguard/templates/wireguard.html:88
#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34
msgid "Endpoint"
-msgstr ""
+msgstr "Sluttpunkt"
#: plinth/modules/wireguard/templates/wireguard.html:111
#, fuzzy
@@ -6765,19 +6833,21 @@ msgid ""
"%(box_name)s will allow this client to connect to it. Ensure that the client "
"is configured with the following information."
msgstr ""
+"%(box_name)s lar denne klienten koble seg til. Forsikre at klienten er satt "
+"opp med følgende info."
#: plinth/modules/wireguard/templates/wireguard_show_client.html:35
msgid "Client public key:"
-msgstr ""
+msgstr "Klientens offentlige nøkkel:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:39
msgid "IP address to use for client:"
-msgstr ""
+msgstr "IP-adresse å bruke for klienten:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:43
#: plinth/modules/wireguard/templates/wireguard_show_server.html:46
msgid "Pre-shared key:"
-msgstr ""
+msgstr "Forhåndsdelt nøkkel:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:47
#, fuzzy
@@ -6795,17 +6865,17 @@ msgstr "Velg bekreftet offentlig SSH-nøkkel"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:65
#: plinth/modules/wireguard/templates/wireguard_show_server.html:64
msgid "Data transmitted:"
-msgstr ""
+msgstr "Data sendt:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:69
#: plinth/modules/wireguard/templates/wireguard_show_server.html:68
msgid "Data received:"
-msgstr ""
+msgstr "Data mottatt:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:73
#: plinth/modules/wireguard/templates/wireguard_show_server.html:72
msgid "Latest handshake:"
-msgstr ""
+msgstr "Siste håndtrykk:"
#: plinth/modules/wireguard/templates/wireguard_show_server.html:29
#, python-format
@@ -6814,6 +6884,9 @@ msgid ""
"information. Ensure that the server is configured to allow %(box_name)s's "
"public key and IP address."
msgstr ""
+"%(box_name)s vil prøve å nå en WireGuard-tjener med følgende info. Forsikre "
+"deg om at tjeneren er satt opp til å tillate %(box_name)s sin offentlige "
+"nøkkel og IP-adresse."
#: plinth/modules/wireguard/templates/wireguard_show_server.html:38
#, fuzzy
@@ -6823,11 +6896,11 @@ msgstr "Tjenerdomene"
#: plinth/modules/wireguard/templates/wireguard_show_server.html:50
msgid "Public key of this machine:"
-msgstr ""
+msgstr "Offentlig nøkkel tilhørende denne maskinen:"
#: plinth/modules/wireguard/templates/wireguard_show_server.html:54
msgid "IP address of this machine:"
-msgstr ""
+msgstr "IP-adresse tilhørende denne maskinen:"
#: plinth/modules/wireguard/views.py:64
#, fuzzy
@@ -7008,40 +7081,40 @@ msgstr "Kjernefunksjonalitet og nettbrukergrensesnitt for %(box_name)s"
msgid "Toggle navigation"
msgstr "Bytt (toggle) navigasjon"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "Hjem"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Apps/Programmer"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "System"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Endre passord"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "Omstart"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "Slå av"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Logg ut"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr "Velg språk"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "Logg inn"
@@ -7188,6 +7261,12 @@ msgid ""
msgstr ""
"Følgende nettverksgrensesnitt er nå satt opp som interne: %(interface_list)s"
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Sertifikat mangler"
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr "Portvideresending"
@@ -7261,10 +7340,13 @@ msgstr "Programmet er aktivert"
msgid "Application disabled"
msgstr "Programmet er deaktivert"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "Physical Interface"
+#~ msgstr "Fysisk grensesnitt"
+
#~ msgid "repro"
#~ msgstr "repro"
@@ -8165,9 +8247,6 @@ msgstr "Gujarati"
#~ msgid "is running"
#~ msgstr "kjører"
-#~ msgid "is not running"
-#~ msgstr "kjører ikke"
-
#~ msgid "Anonymity Network (Tor)"
#~ msgstr "Anonymitetsnettverk (Tor)"
diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po
index 4baacc97b..2ffb60294 100644
--- a/plinth/locale/nl/LC_MESSAGES/django.po
+++ b/plinth/locale/nl/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2020-01-17 21:21+0000\n"
"Last-Translator: ikmaak Most routers "
@@ -3451,7 +3454,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3576,7 +3579,7 @@ msgstr "Wijzig verbinding"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Wijzig"
@@ -3710,7 +3713,7 @@ msgid "This connection is not active."
msgstr "Deze verbinding is niet actief."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Security"
@@ -4902,40 +4905,59 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr "Applicatie naam"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr "Huidige kwetsbaarheden"
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr "Kwetsbaarheden in het verleden"
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox"
msgid "Sandboxed"
msgstr "Block Sandbox"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox"
+msgid "Sandbox Coverage"
+msgstr "Block Sandbox"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "ja"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
#, fuzzy
#| msgid "None"
msgid "No"
msgstr "Geen"
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "is not running"
+msgid "Not running"
+msgstr "draait niet"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5429,11 +5451,11 @@ msgstr "Eenmalige aanmelding"
msgid "Login"
msgstr "Aanmelding"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr "Storage"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5441,83 +5463,97 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} bytes"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr "De bewerking is mislukt."
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr "De bewerking is afgebroken."
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr "Het apparaat is al aan het ontkoppelen."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr "Er is een time-out opgetreden voor deze bewerking."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr "Poging om een apparaat te ontkoppelen dat in gebruik is."
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr "De bewerking is al geannuleerd."
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr "Het apparaat is al gekoppeld."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr "Het apparaat is niet ge-mount."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, fuzzy, python-format, python-brace-format
+#| msgid ""
+#| "Warning: Low space on system partition ({percent_used}% used, "
+#| "{free_space} free)."
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+"Waarschuwing: Weinig ruimte op de systeempartitie ({percent_used} "
+"% gebruikt, {free_space} vrij)."
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5592,7 +5628,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Root-partitie uitbreiden"
@@ -5607,34 +5643,25 @@ msgstr ""
"%(expandable_root_size)s extra vrije ruimte in de root-partitie beschikbaar "
"zijn."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Fout bij partitie uitbreiden: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "Partitie succesvol uitgebreid."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-"Waarschuwing: Weinig ruimte op de systeempartitie ({percent_used} % "
-"gebruikt, {free_space} vrij)."
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr "{drive_vendor} {drive_model} kan veilig worden losgekoppeld."
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr "Het apparaat kan veilig worden losgekoppeld."
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -6033,15 +6060,21 @@ msgstr "Lezen en abonneren op nieuwsfeeds"
msgid "Tiny Tiny RSS (Fork)"
msgstr "Tiny Tiny RSS (Fork)"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "Update"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
"Controleer de nieuwste software- en beveiligingsupdates en pas deze toe."
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox Foundation"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr "Automatisch bijwerken inschakelen"
@@ -6052,6 +6085,24 @@ msgstr ""
"Als deze functie is ingeschakeld, wordt FreedomBox automatisch één keer per "
"dag bijgewerkt."
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "De nieuwste versie van %(box_name)s is geïnstalleerd."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr "Nu bijwerken"
@@ -6131,19 +6182,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "Zoek LDAP item \"{search_item}\""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "Toegang tot alle diensten en systeeminstellingen"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "Gebruikersnaam is in gebruik of is gereserveerd."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Foute servernaam"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "Toegangsrechten"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6158,20 +6220,20 @@ msgstr ""
"ook op het systeem inloggen met SSH en kunnen systeemadministratie doen "
"(sudo)."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "LDAP gebruiker aanmaken mislukt."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "Nieuwe gebruiker aan groep {group} toevoegen mislukt."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr "Geautoriseerde SSH-sleutels"
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6182,45 +6244,45 @@ msgstr ""
"sleutels toevoegen, één op elke regel. Lege regels en regels die beginnen "
"met # worden genegeerd."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "LDAP gebruiker hernoemen mislukt."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "Gebruiker uit groep verwijderen mislukt."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "Gebruiker aan groep toevoegen mislukt."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "Kan de SSH-sleutels niet instellen."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "Gebruiker aan groep toevoegen mislukt."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr "Kan de enige beheerder in het systeem niet verwijderen."
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "Wijzigen LDAP gebruikerswachtwoord mislukt."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Toevoegen van gebruiker aan admin groep mislukt."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "Consoletoegang beperken is mislukt."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Gebruikersaccount aangemaakt, U bent nu ingelogd"
@@ -6472,10 +6534,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6808,40 +6867,40 @@ msgstr "Basisfunctionaliteit en webinterface voor %(box_name)s"
msgid "Toggle navigation"
msgstr "Navigatie in/uitschakelen"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "Startpagina"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Apps"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "Systeem"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Wijzig wachtwoord"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "Herstarten"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "Uitschakelen"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Afmelden"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr "Selecteer taal"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "Aanmelden"
@@ -6989,6 +7048,12 @@ msgstr ""
"Momenteel zijn de volgende netwerkinterfaces geconfigureerd als intern: "
"%(interface_list)s"
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Geen certificaat"
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr "Port Forwarding"
@@ -7059,10 +7124,13 @@ msgstr "Toepassing ingeschakeld"
msgid "Application disabled"
msgstr "Toepassing uitgeschakeld"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "Physical Interface"
+#~ msgstr "Fysieke Interface"
+
#~ msgid "repro"
#~ msgstr "repro"
@@ -8044,9 +8112,6 @@ msgstr "Gujarati"
#~ msgid "is running"
#~ msgstr "draait"
-#~ msgid "is not running"
-#~ msgstr "draait niet"
-
#~ msgid "Anonymity Network (Tor)"
#~ msgstr "Anonimiteitsnetwerk (Tor)"
diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po
index 221d9f629..b4faf830f 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-11-18 18:04+0000\n"
"Last-Translator: Radek Pasiok Most routers "
@@ -3339,7 +3340,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3464,7 +3465,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3598,7 +3599,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4629,38 +4630,57 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "Nazwa"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Blocked"
msgid "Sandboxed"
msgstr "Zablokowano"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Blocked"
+msgid "Sandbox Coverage"
+msgstr "Zablokowano"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "deluge-web is not running"
+msgid "Not running"
+msgstr "Interfejs deluge nie jest uruchomiony"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5128,11 +5148,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5140,86 +5160,95 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
#| msgid "{disk_size} bytes"
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} bajtów"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
#, fuzzy
#| msgid "The requested domain is already registered."
msgid "The device is already mounted."
msgstr "Wnioskowana domena jest już zarejstrowana."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5290,7 +5319,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Rozszerz główną partycję"
@@ -5304,32 +5333,25 @@ msgstr ""
"Proszę najpierw utworzyć kopię bezpieczeństwa. Po tej operacji twoja główna "
"partycja będzie zwiększona o %(expandable_root_size)s."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Błąd rozszerzania partycji: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "Partycja rozszerzona."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5652,14 +5674,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "Fundacja FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Enable creative mode"
@@ -5670,6 +5698,24 @@ msgstr "Włącz tryb kreatywny"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "Plinth is up to date."
+msgid "%(box_name)s Updated"
+msgstr "Plinth jest aktualny."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update URL"
@@ -5748,19 +5794,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Niewłaściwa nazwa użytkownika"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5769,65 +5826,65 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "Tworzenie użytkownika LDAP się nie udało."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add new user to admin group."
msgid "Failed to change user status."
msgstr "Nieudane dodawanie użytkownika do grupy admin."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Nieudane dodawanie użytkownika do grupy admin."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Utworzono konto użytkownika, możesz się teraz zalogować"
@@ -6071,10 +6128,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6408,42 +6462,42 @@ msgstr "Interfejs administracyjny Plinth dla %(box_name)s"
msgid "Toggle navigation"
msgstr "Przełącz nawigację"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "Dom"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Aplikacje"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Zmień hasło"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "Uruchom ponownie"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "Wyłącz"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Wyloguj się"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "Język"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "Zaloguj się"
@@ -6596,6 +6650,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Brak certyfikatu"
+
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
#| msgid "Enable forwarding"
@@ -6668,7 +6728,7 @@ msgstr "Aplikacja włączona"
msgid "Application disabled"
msgstr "Aplikacja wyłączona"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
@@ -6987,11 +7047,6 @@ msgstr ""
#~ msgid "is running"
#~ msgstr "Interfejs deluge uruchomiony"
-#, fuzzy
-#~| msgid "deluge-web is not running"
-#~ msgid "is not running"
-#~ msgstr "Interfejs deluge nie jest uruchomiony"
-
#~ msgid "Box it up!"
#~ msgstr "Wystartuj twoje pudło!"
diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po
index 442581da0..8979c9d60 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-12-16 22:57+0000\n"
"Last-Translator: adaragao Most routers "
@@ -3219,7 +3222,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3344,7 +3347,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3478,7 +3481,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4500,36 +4503,53 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "Nome"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "Service discovery server is not running"
+msgid "Not running"
+msgstr "O Servidor da descoberta do serviço não está a correr"
+
#: plinth/modules/security/views.py:69
#, fuzzy, python-brace-format
#| msgid "Error setting domain name: {exception}"
@@ -4978,11 +4998,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4990,85 +5010,94 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
#, fuzzy
#| msgid "Service discovery server is running"
msgid "The device is already unmounting."
msgstr "O Servidor da descoberta do serviço está a correr"
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "Esta operação pode ligar um disco que esteja no estado de adormecido."
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid domain name"
@@ -5135,7 +5164,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -5147,33 +5176,26 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, fuzzy, python-brace-format
#| msgid "Error setting language: {exception}"
msgid "Error expanding partition: {exception}"
msgstr "Erro ao definir a língua: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5491,14 +5513,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox"
+msgid "FreedomBox Updated"
+msgstr "Freedombox"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Applications"
@@ -5509,6 +5537,23 @@ msgstr "Aplicações"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "General Configuration"
@@ -5587,19 +5632,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid domain name"
+msgid "Enter a valid username."
+msgstr "Nome de domínio inválido"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5608,63 +5664,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5903,10 +5959,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6212,42 +6265,42 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "Língua"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6384,6 +6437,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "Applications"
+msgid "Notifications"
+msgstr "Aplicações"
+
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
#| msgid "Enable network time"
@@ -6458,7 +6517,7 @@ msgstr "Aplicações"
msgid "Application disabled"
msgstr "Aplicações"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
@@ -6584,14 +6643,6 @@ msgstr ""
#~ msgid "Select the domain name"
#~ msgstr "Nome de domínio inválido"
-#~ msgid "Applications"
-#~ msgstr "Aplicações"
-
-#, fuzzy
-#~| msgid "Service discovery server is not running"
-#~ msgid "is not running"
-#~ msgstr "O Servidor da descoberta do serviço não está a correr"
-
#, fuzzy
#~| msgid "Service discovery server is running"
#~ msgid "Minetest server is running"
@@ -6625,9 +6676,6 @@ msgstr ""
#~ msgid "Enable service discovery"
#~ msgstr "Permitir descoberta do serviço"
-#~ msgid "Network Time Server"
-#~ msgstr "Servidor do Tempo da Rede"
-
#~ msgid ""
#~ "You can install and run various services and applications on your "
#~ "%(box_name)s."
diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po
index b99bcde3a..6fb0b93ea 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-07-22 17:06+0000\n"
"Last-Translator: Igor Most routers "
@@ -3578,7 +3589,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3703,7 +3714,7 @@ msgstr "Редактирование подключения"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Редактировать"
@@ -3837,7 +3848,7 @@ msgid "This connection is not active."
msgstr "Это подключение не активно."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Безопасность"
@@ -5037,42 +5048,61 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "Имя"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox"
msgid "Sandboxed"
msgstr "Песочница"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox"
+msgid "Sandbox Coverage"
+msgstr "Песочница"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "Да"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
#, fuzzy
#| msgid "None"
msgid "No"
msgstr "нет"
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "is not running"
+msgid "Not running"
+msgstr "не запущен"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5578,11 +5608,11 @@ msgstr "Единый вход"
msgid "Login"
msgstr "Логин"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr "Storage"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5593,84 +5623,98 @@ msgstr ""
"{box_name}. Вы можете видеть, какие носители используются, монтировать и "
"размонтировать подключаемые носители, увеличивать корневой раздел итп."
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} байт"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} КиБ"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} Миб"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} Гиб"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} Тиб"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr "Операция не удалась."
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr "Операция была отменена."
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr "Устройство уже отключается."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
"Операция не поддерживается из-за отсутствия поддержки драйвера или утилиты."
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr "Время операции вышло."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "Операция пробудит диск, находящийся в режиме глубокого сна."
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr "Попытка отключения устройства, которое используется."
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr "Операция уже отменена."
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr "Отсутствует авторизация для выполнения запрошенной операции."
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr "Устройство уже подключено."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr "Устройство не подключено."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr "Использование запрошенной опции не разрешено."
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr "Устройство подключено другим пользователем."
+#: plinth/modules/storage/__init__.py:326
+#, fuzzy, python-format, python-brace-format
+#| msgid ""
+#| "Warning: Low space on system partition ({percent_used}% used, "
+#| "{free_space} free)."
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+"Предупреждение: недостаточно свободного пространства на системном разделе "
+"({percent_used}% используется, {free_space} свободно)."
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5747,7 +5791,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Расширить корневой раздел"
@@ -5762,34 +5806,25 @@ msgstr ""
"этой операции будет доступно %(expandable_root_size)s свободного места в "
"вашем корневом разделе."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Ошибка расширения раздела: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "Раздел успешно расширен."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-"Предупреждение: недостаточно свободного пространства на системном разделе "
-"({percent_used}% используется, {free_space} свободно)."
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr "{drive_vendor}{drive_model} может быть безопасно отсоединено."
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr "Устройство может быть безопасно отсоединено."
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr "Ошибка извлечения устройства: {error_message}"
@@ -6179,14 +6214,20 @@ msgstr "Чтение и подписка на ленты новостей"
msgid "Tiny Tiny RSS (Fork)"
msgstr "Tiny Tiny RSS (Fork)"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "Обновление"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr "Проверьте и установите новейшие программы и обновления безопасности."
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "Фонд FrеedomBox"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr "Включить автообновление"
@@ -6196,6 +6237,24 @@ msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
"Если опция включена, то FreedomBox автоматически обновляется раз в день."
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s в актуальном состоянии."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr "Обновить сейчас"
@@ -6279,19 +6338,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "Проверьте запись LDAP \"{search_item}\""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "Доступ ко всем сервисам и настройкам системы"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "Имя пользователя уже занято."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Недопустимое имя сервера"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "Разрешения"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6305,20 +6375,20 @@ msgstr ""
"Пользователи в группе администратора имеют доступ ко всем службам. Они также "
"могут войти в систему через SSH и иметь административные привилегии (sudo)."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "Создание пользователя LDAP не удалось."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "Не удалось добавить нового пользователя в группу {group}."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr "Авторизованные SSH ключи"
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6329,45 +6399,45 @@ msgstr ""
"на каждой строке. Пустые строки и строки, начинающиеся с # будут "
"игнорироваться."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "Переименование пользователя LDAP не удалось."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "Не удалось удалить пользователя из группы."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "Не удалось добавить пользователя в группу."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "Не удалось задать ключи SSH."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "Не удалось добавить пользователя в группу."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr "Невозможно удалить единственного администратора в системе."
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "Изменение LDAP пароля пользователя не удалось."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Не удалось добавить нового пользователя в группу администратора."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "Не удалось ограничить доступ к консоли."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Учетная запись пользователя создана, теперь вы вошли"
@@ -6619,10 +6689,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6955,40 +7022,40 @@ msgstr "Базовая функциональность и веб-интерфе
msgid "Toggle navigation"
msgstr "Отображение навигации"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "Домой"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Приложения"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "Система"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Смена пароля"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "Перезапустить"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "Завершить работу"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Выход"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr "Выберите язык"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "Войти"
@@ -7136,6 +7203,12 @@ msgstr ""
"В настоящее время следующие сетевые интерфейсы сконфигурированы как "
"внутренние: %(interface_list)s"
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Не сертификата"
+
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
#| msgid "Enable forwarding"
@@ -7208,10 +7281,13 @@ msgstr "Приложение включено"
msgid "Application disabled"
msgstr "Приложение отключено"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr "Гуджарати"
+#~ msgid "Physical Interface"
+#~ msgstr "Физический интерфейс"
+
#~ msgid "repro"
#~ msgstr "repro"
@@ -8102,9 +8178,6 @@ msgstr "Гуджарати"
#~ msgid "is running"
#~ msgstr "запущен"
-#~ msgid "is not running"
-#~ msgstr "не запущен"
-
#~ msgid "Anonymity Network (Tor)"
#~ msgstr "Анонимная Сеть (Tor)"
diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po
index 22eca540c..40ed5614c 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-05-07 20:48+0000\n"
"Last-Translator: Erik Ušaj Most routers "
@@ -3191,7 +3192,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3316,7 +3317,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3450,7 +3451,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4458,36 +4459,51 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "Ime"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4931,11 +4947,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4943,83 +4959,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5084,7 +5109,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -5096,32 +5121,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5441,14 +5459,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5457,6 +5481,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5531,19 +5572,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid hostname"
+msgid "Enter a valid username."
+msgstr "Neveljavno ime gostitelja"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5552,63 +5604,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5847,10 +5899,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6147,40 +6196,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6314,6 +6363,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6382,7 +6435,7 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po
index 4a179a2db..44c96ae8c 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: 2020-01-27 18:52-0500\n"
-"PO-Revision-Date: 2020-01-25 17:21+0000\n"
-"Last-Translator: Allan Nordhøy Most routers "
@@ -3506,8 +3512,14 @@ msgid ""
"as the {box_name}'s address. First remember to configure a static local IP "
"address for your {box_name} in your router's configuration. De flesta routrar tillhandahåller en konfigurationsinställning som kallas "
+"DMZ. Detta gör det möjligt för routern att vidarebefordra all inkommande "
+"trafik från Internet till en enda IP-adress, till exempel {box_name}-"
+"adressen. Kom först ihåg att konfigurera en statisk lokal IP-adress för din "
+"{box_name} i routerns configuration. "
msgstr ""
+"Vidarebefordra specifik trafik efter behov av varje program Du kan alternativt välja att vidarebefordra endast specifik trafik "
+"till din {box_name}. Detta är idealiskt om du har andra servrar som "
+"{box_name} i nätverket eller om routern inte stöder DMZ-funktionen. Alla "
+"program som tillhandahåller ett webbgränssnitt behöver du vidarebefordra "
+"trafik från portar 80 och 443 för att fungera. Var och en av de andra "
+"ansökningarna kommer att föreslå vilka portar som måste vidarebefordras för "
+"att programmet ska fungera. Choose this if you "
"have not configured or are unable to configure the router currently and wish "
"to be reminded later. Some of the other configuration steps may fail. Välj detta om "
+"du inte har konfigurerat eller inte kan konfigurera routern för närvarande "
+"och vill bli påmind senare. Vissa av de andra konfigurationsstegen kan "
+"misslyckas. Most routers "
@@ -3051,7 +3044,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3174,7 +3167,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3308,7 +3301,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4308,34 +4301,49 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
msgid "App Name"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4777,11 +4785,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4789,83 +4797,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
msgid "Invalid directory name."
msgstr ""
@@ -4928,7 +4945,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -4940,32 +4957,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5277,14 +5287,18 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+msgid "FreedomBox Updated"
+msgstr ""
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5293,6 +5307,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5367,19 +5398,28 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+msgid "Enter a valid username."
+msgstr ""
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5388,63 +5428,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5679,10 +5719,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -5951,40 +5988,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6118,6 +6155,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6186,6 +6227,6 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po
index 0121a7165..e06dba23d 100644
--- a/plinth/locale/te/LC_MESSAGES/django.po
+++ b/plinth/locale/te/LC_MESSAGES/django.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
-"PO-Revision-Date: 2019-07-22 17:06+0000\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
+"PO-Revision-Date: 2020-02-10 05:50+0000\n"
"Last-Translator: Joseph Nuthalapati Most routers "
@@ -3528,7 +3471,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3655,7 +3598,7 @@ msgstr "అనుసంధానాన్ని సవరించు"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "సవరించు"
@@ -3789,7 +3732,7 @@ msgid "This connection is not active."
msgstr "ఈ అనుసంధానం చురుకుగాలేదు."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "భద్రత"
@@ -3976,7 +3919,7 @@ msgstr ""
#: plinth/modules/networks/templates/router_configuration_firstboot.html:33
msgid "skip this step"
-msgstr ""
+msgstr "ఈ దశను దాటవేయి"
#: plinth/modules/networks/templates/router_configuration_firstboot.html:35
msgid "Next"
@@ -4185,22 +4128,18 @@ msgstr ""
"సెట్."
#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55
-#, fuzzy
msgid "Server port"
msgstr "సర్వర్ పోర్ట్"
#: plinth/modules/pagekite/forms.py:72
-#, fuzzy
msgid "Port of your pagekite server (default: 80)"
-msgstr "మీ pagekite సర్వర్ యొక్క పోర్ట్ (డిఫాల్ట్: 80)"
+msgstr "మీ పేజ్కైట్ సర్వర్ యొక్క పోర్ట్ (డిఫాల్ట్: 80)"
#: plinth/modules/pagekite/forms.py:74
-#, fuzzy
msgid "Kite name"
msgstr "కైట్ పేరు"
#: plinth/modules/pagekite/forms.py:75
-#, fuzzy
msgid "Example: mybox.pagekite.me"
msgstr "ఉదాహరణ: mybox.pagekite.me"
@@ -4220,9 +4159,8 @@ msgid ""
msgstr "గాలిపటం లేదా రహస్యం గాలిపటం సెట్ అయితే మీ ఖాతా కోసం డిఫాల్ట్ రహస్య అనుబంధించబడిన ఒక రహస్య."
#: plinth/modules/pagekite/forms.py:98
-#, fuzzy
msgid "Kite details set"
-msgstr "కైట్ వివరాలు సెట్"
+msgstr "కైట్ వివరాలు సెట్ చేయబడ్డాయి"
#: plinth/modules/pagekite/forms.py:105
#, fuzzy
@@ -4534,6 +4472,8 @@ msgid ""
"Select a domain to use TLS with. If the list is empty, please configure at "
"least one domain with certificates."
msgstr ""
+"TLS ఉపయోగించడం కొరకు ఒక డొమైన్ ఎంచుకోండి. ఒకవేళ జాబితా ఖాళీగా ఉన్నట్లయితే, దయచేసి సర్టిఫికేట్ లతో కనీసం "
+"ఒక డొమైన్ ని కాన్ఫిగర్ చేయండి."
#: plinth/modules/quassel/manifest.py:49
msgid "Quasseldroid"
@@ -4595,7 +4535,7 @@ msgstr "ఏ వినియోగదారుడు అయినా క్యా
#: plinth/modules/radicale/manifest.py:25
msgid "DAVx5"
-msgstr ""
+msgstr "DAVx5"
#: plinth/modules/radicale/manifest.py:27
msgid ""
@@ -4681,13 +4621,15 @@ msgstr ""
#: plinth/modules/samba/__init__.py:46
msgid "Samba"
-msgstr ""
+msgstr "సాంబా"
#: plinth/modules/samba/__init__.py:53
msgid ""
"Samba allows to share files and folders between FreedomBox and other "
"computers in your local network."
msgstr ""
+"మీ స్థానిక నెట్వర్క్లోని ఫ్రీడమ్బాక్స్ మరియు ఇతర కంప్యూటర్ల మధ్య ఫైల్లు మరియు ఫోల్డర్లను పంచుకోవడానికి సాంబా "
+"అనుమతిస్తుంది."
#: plinth/modules/samba/__init__.py:56
#, python-brace-format
@@ -4700,23 +4642,27 @@ msgstr ""
#: plinth/modules/samba/__init__.py:61
msgid "Open share - accessible to everyone in your local network."
-msgstr ""
+msgstr "ఓపెన్ షేర్ - మీ స్థానిక నెట్వర్క్లోని ప్రతి ఒక్కరికీ అందుబాటులో ఉంటుంది."
#: plinth/modules/samba/__init__.py:62
msgid ""
"Group share - accessible only to FreedomBox users who are in the freedombox-"
"share group."
msgstr ""
+"గ్రూప్ షేర్ - freedombox-share గ్రూపులో ఉన్న ఫ్రీడమ్బాక్స్ వినియోగదారులకు మాత్రమే అందుబాటులో "
+"ఉంటుంది."
#: plinth/modules/samba/__init__.py:64
msgid ""
"Home share - every user in the freedombox-share group can have their own "
"private space."
msgstr ""
+"హోమ్ షేర్ - freedombox-share గ్రూపులో ఉన్న ప్రతి వినియోగదారుడు వారి స్వంత ప్రైవేట్ స్థలాన్ని కలిగి "
+"ఉంటారు."
#: plinth/modules/samba/__init__.py:68
msgid "Access to the private shares"
-msgstr ""
+msgstr "ప్రైవేటు షేర్లలో ప్రవేశం"
#: plinth/modules/samba/templates/samba.html:39
#: plinth/modules/samba/templates/samba.html:50
@@ -4730,6 +4676,8 @@ msgid ""
"Note: Only specially created directories will be shared on selected disks, "
"not the whole disk."
msgstr ""
+"గమనిక: ప్రత్యేకంగా సృష్టించిన డైరెక్టరీలు మాత్రమే ఎంచుకున్న డిస్కులలో భాగస్వామ్యం చేయబడతాయి, మొత్తం డిస్క్ "
+"కాదు."
#: plinth/modules/samba/templates/samba.html:49
#, fuzzy
@@ -4744,7 +4692,7 @@ msgstr "ఉపయోగించబడినది"
#: plinth/modules/samba/templates/samba.html:72
msgid "VFAT partitions are not supported"
-msgstr ""
+msgstr "VFAT విభజనలకు మద్దతు లేదు"
#: plinth/modules/samba/templates/samba.html:103
#, python-format
@@ -4756,13 +4704,15 @@ msgstr ""
#: plinth/modules/samba/templates/samba.html:109
msgid "Users who can currently access group and home shares"
-msgstr ""
+msgstr "ప్రస్తుతం గ్రూప్ మరియు హోమ్ షేర్లను యాక్సెస్ చేయగల వినియోగదారులు"
#: plinth/modules/samba/templates/samba.html:113
msgid ""
"Users needing to re-enter their password on the password change page to "
"access group and home shares"
msgstr ""
+"గ్రూపు మరియు హోమ్ షేర్లను యాక్సెస్ చేసుకోవడానికి పాస్వర్డ్ ఛేంజ్ పేజీపై తమ పాస్వర్డ్ ని తిరిగి నమోదు చేయాల్సిన "
+"అవసరం ఉన్న వినియోగదారులు"
#: plinth/modules/samba/templates/samba.html:118
#, fuzzy
@@ -4775,6 +4725,8 @@ msgid ""
"Shares that are configured but the disk is not available. If the disk is "
"plugged back in, sharing will be automatically enabled."
msgstr ""
+"కాన్ఫిగర్ చేయబడిన షేర్లు కానీ డిస్క్ అందుబాటులో లేదు. డిస్క్ తిరిగి ప్లగిన్ చేయబడితే, భాగస్వామ్యం స్వయంచాలకంగా "
+"ప్రారంభించబడుతుంది."
#: plinth/modules/samba/templates/samba.html:128
#, fuzzy
@@ -4882,11 +4834,11 @@ msgstr "కఠినమైన"
#: plinth/modules/searx/forms.py:35
msgid "Allow Public Access"
-msgstr ""
+msgstr "ప్రజా ప్రాప్తి అనుమతించు"
#: plinth/modules/searx/forms.py:36
msgid "Allow this application to be used by anyone who can reach it."
-msgstr ""
+msgstr "ఈ అనువర్తనాన్ని చేరుకోగల ఎవరైనా ఉపయోగించడానికి అనుమతించండి."
#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70
#: plinth/modules/tor/views.py:149 plinth/modules/tor/views.py:176
@@ -4954,42 +4906,61 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "పేరు"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
-msgstr ""
+msgstr "ప్రస్తుత దుర్బలతలు"
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
-msgstr ""
+msgstr "గత దుర్బలతలు"
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox (Minetest)"
msgid "Sandboxed"
msgstr "స్యాండ్ బాక్స్ ను అడ్డగించు (మైన్ పరీక్ష)"
-#: plinth/modules/security/templates/security_report.html:62
-msgid "N/A"
-msgstr ""
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox (Minetest)"
+msgid "Sandbox Coverage"
+msgstr "స్యాండ్ బాక్స్ ను అడ్డగించు (మైన్ పరీక్ష)"
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:70
+msgid "N/A"
+msgstr "N/A"
+
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "అవును"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
#, fuzzy
#| msgid "None"
msgid "No"
msgstr "ఏమీ లేదు"
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "is not running"
+msgid "Not running"
+msgstr "డెల్యూజ్ నడవడంలేదు"
+
#: plinth/modules/security/views.py:69
#, fuzzy, python-brace-format
#| msgid "Error setting time zone: {exception}"
@@ -5123,7 +5094,7 @@ msgstr "కీని ప్రచురించండి"
#: plinth/modules/sharing/forms.py:44
msgid "Make files in this folder available to anyone with the link."
-msgstr ""
+msgstr "ఈ ఫోల్డర్లోని ఫైల్లను లింక్ ఉన్న ఎవరికైనా అందుబాటులో ఉంచండి."
#: plinth/modules/sharing/forms.py:48
#, fuzzy
@@ -5148,7 +5119,7 @@ msgstr "ఈ సేవ ఇప్పటికే ఉంది"
#: plinth/modules/sharing/forms.py:78
msgid "Shares should be either public or shared with at least one group"
-msgstr ""
+msgstr "షేర్లు పబ్లిక్ గా ఉండాలి లేదా కనీసం ఒక గ్రూపుతో పంచుకోవాలి"
#: plinth/modules/sharing/templates/sharing.html:39
#: plinth/modules/sharing/templates/sharing.html:42
@@ -5177,7 +5148,7 @@ msgstr "గుంపులతో"
#: plinth/modules/sharing/templates/sharing.html:73
msgid "public access"
-msgstr ""
+msgstr "ప్రజా ప్రాప్తి"
#: plinth/modules/sharing/views.py:55
#, fuzzy
@@ -5478,7 +5449,7 @@ msgstr ""
#: plinth/modules/ssh/templates/ssh.html:38
msgid "Algorithm"
-msgstr ""
+msgstr "అల్గారిథం"
#: plinth/modules/ssh/templates/ssh.html:39
#, fuzzy
@@ -5496,18 +5467,18 @@ msgstr ""
#: plinth/modules/sso/__init__.py:30
msgid "Single Sign On"
-msgstr ""
+msgstr "సింగిల్ సైన్ ఆన్"
#: plinth/modules/sso/templates/login.html:35
msgid "Login"
msgstr "ప్రవేశించు"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
#, fuzzy
msgid "Storage"
msgstr "అన్హొస్టెడ్ స్టోరేజ్ ని (పునరుద్ధరించండి)"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5515,86 +5486,96 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} బైట్లు"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} కిలోబైట్లు"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} మెగాబైట్లు"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} గిగాబైట్లు"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} టెరాబైట్లు"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
#, fuzzy
#| msgid "Mumble server is running"
msgid "The device is already unmounting."
msgstr "మంబ్లు సేవిక నడుస్తుంది"
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
-msgstr ""
+msgstr "ఆపరేషన్ టైమవుట్ అయింది."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
-msgstr ""
-
-#: plinth/modules/storage/__init__.py:252
-msgid "Attempting to unmount a device that is busy."
-msgstr ""
-
-#: plinth/modules/storage/__init__.py:254
-msgid "The operation has already been cancelled."
-msgstr ""
+msgstr "ఈ ఆపరేషన్ గాఢ నిద్రలో ఉన్న ఒక డిస్క్ ను మేల్కొలుపుతుంది."
#: plinth/modules/storage/__init__.py:260
-msgid "Not authorized to perform the requested operation."
-msgstr ""
+#, fuzzy
+msgid "Attempting to unmount a device that is busy."
+msgstr "బిజీగా ఉన్న పరికరాన్ని అన్ మౌంట్ చేయడానికి ప్రయత్నిస్తోంది."
#: plinth/modules/storage/__init__.py:262
+msgid "The operation has already been cancelled."
+msgstr "ఆపరేషన్ ఇప్పటికే రద్దు చేయబడింది."
+
+#: plinth/modules/storage/__init__.py:268
+msgid "Not authorized to perform the requested operation."
+msgstr "అభ్యర్థించిన ఆపరేషన్ చేయడానికి అధికారం లేదు."
+
+#: plinth/modules/storage/__init__.py:270
#, fuzzy
msgid "The device is already mounted."
msgstr "ఈ సేవ ఇప్పటికే ఉంది"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
#, fuzzy
#| msgid "Mumble server is not running"
msgid "The device is not mounted."
msgstr "మంబ్లు సేవిక నడవంలేదు"
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
+msgstr "అభ్యర్థించిన ఎంపికను ఉపయోగించడానికి అనుమతి లేదు."
+
+#: plinth/modules/storage/__init__.py:278
+msgid "The device is mounted by another user."
+msgstr "పరికరం మరొక వినియోగదారుచే మౌంట్ చేయబడింది."
+
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
-msgid "The device is mounted by another user."
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
msgstr ""
#: plinth/modules/storage/forms.py:79
@@ -5605,7 +5586,7 @@ msgstr "ఆతిథ్యనామం చెల్లనిది"
#: plinth/modules/storage/forms.py:97
msgid "Directory does not exist."
-msgstr ""
+msgstr "డైరెక్టరీ ఉనికిలో లేదు."
#: plinth/modules/storage/forms.py:99
#, fuzzy
@@ -5615,11 +5596,11 @@ msgstr "డైరెక్టరీని దిగుమతి చేయు"
#: plinth/modules/storage/forms.py:102
msgid "Directory is not readable by the user."
-msgstr ""
+msgstr "వినియోగదారు ద్వారా డైరెక్టరీ చదవబడలేదు."
#: plinth/modules/storage/forms.py:105
msgid "Directory is not writable by the user."
-msgstr ""
+msgstr "వినియోగదారు ద్వారా డైరెక్టరీ వ్రాయబడలేదు."
#: plinth/modules/storage/forms.py:110
#, fuzzy
@@ -5629,7 +5610,7 @@ msgstr "డైరెక్టరీని దిగుమతి చేయు"
#: plinth/modules/storage/forms.py:113
msgid "Subdirectory (optional)"
-msgstr ""
+msgstr "ఉప డైరెక్టరీ (ఐచ్ఛికం)"
#: plinth/modules/storage/forms.py:160
#, fuzzy
@@ -5639,7 +5620,7 @@ msgstr "పంచుకోబడ్డ"
#: plinth/modules/storage/forms.py:168
msgid "Other directory (specify below)"
-msgstr ""
+msgstr "ఇతర డైరెక్టరీ (దిగువన పేర్కొనండి)"
#: plinth/modules/storage/templates/storage.html:35
#, fuzzy
@@ -5649,7 +5630,7 @@ msgstr "క్రింది డిస్కులు ఉపయోగంలో
#: plinth/modules/storage/templates/storage.html:41
msgid "Label"
-msgstr ""
+msgstr "లేబుల్"
#: plinth/modules/storage/templates/storage.html:42
msgid "Mount Point"
@@ -5657,7 +5638,7 @@ msgstr "ఆరొహించు కోన"
#: plinth/modules/storage/templates/storage.html:90
msgid "Partition Expansion"
-msgstr ""
+msgstr "విభజన విస్తరణ"
#: plinth/modules/storage/templates/storage.html:92
#, python-format
@@ -5672,7 +5653,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "రూట్ విభజనను విస్తరించు"
@@ -5686,35 +5667,28 @@ msgstr ""
"దయచేసి మీ సమాచారాన్ని బ్యాకప్ (భద్రపరచు కొనుట) చేస్కోండి. ఈ క్రియ తర్వాత %(expandable_root_size)s "
"అధనపు సామర్ధ్యం మీ రూ విభజనలో అందుబాటులోకి వస్తుంది."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "విభజన విస్తరణలో దోషం: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "విభజనను విస్తరించడం విజయవంతమైనది."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
-msgstr ""
+msgstr "{drive_vendor} {drive_model} ని సురక్షితంగా తొలగించవచ్చు."
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
-msgstr ""
+msgstr "పరికరాన్ని సురక్షితంగా తొలగించవచ్చు."
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
-msgstr ""
+msgstr "పరికరాన్ని తొలగించడంలో లోపం: {error_message}"
#: plinth/modules/syncthing/__init__.py:40
#: plinth/modules/syncthing/manifest.py:28
@@ -5757,7 +5731,7 @@ msgstr "ఈ అనువర్తనాన్ని నిక్షిప్త
#: plinth/modules/tahoe/__init__.py:43
msgid "Tahoe-LAFS"
-msgstr ""
+msgstr "తాహో-LAFS"
#: plinth/modules/tahoe/__init__.py:47
msgid "Distributed File Storage"
@@ -6081,14 +6055,20 @@ msgstr "న్యూస్ ఫీడ్లను చదవడం మరి
msgid "Tiny Tiny RSS (Fork)"
msgstr "టైనీ టైనీ RSS"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "నవీకరణ యూ.ఆర్.ఎల్"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Manual"
+msgid "FreedomBox Updated"
+msgstr "ఫ్రీడమ్ బాక్స్ నిర్దేశిక"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Enable automatic upgrades"
@@ -6099,6 +6079,24 @@ msgstr "స్వయంచాలక నవీకరణలు ప్రారం
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s is up to date."
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s తాజాగా ఉంది."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update"
@@ -6177,19 +6175,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "LDAP నమోదు \"{search_item}\" తనిఖీ"
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "అన్ని సేవలకు మరియు వ్యవస్థ అమరికలకు అనుమతించు"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "యూజర్ పేరు తీసుకోబడింది లేదా రిజర్వ్ చేయబడింది."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "సేవిక పేరు చెలదు"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "అనుమతులు"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6198,65 +6207,65 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "ఎల్.డి.ఏ.పి వాడుకరి సృష్టించడంలో విఫలమైంది."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "వినియోగదారుని {group} సముహానికి జోడించడంలో విఫలం."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
-msgstr ""
+msgstr "అధీకృత SSH కీలు"
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "ఎల్.డి.ఏ.పి వాడుకరి పేరుమార్పులో విఫలం."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "సమూహంలోంచి వినియోగదారుని తొలగించడంలో విఫలం."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "SSH కీలను సెట్ చేయడం సాధ్యం కాలేదు."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
-msgstr ""
+msgstr "సిస్టమ్లోని ఏకైక నిర్వాహకుడిని తొలగించలేరు."
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "ఎల్.డి.ఏ.పి వాడుకరి పాస్వర్డ్ మార్పిడి విఫలం."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "కొత్త వాడుకరి ను అడ్మిన్ సమూహంలో జోడించడం విఫలమైనది."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "console ప్రవేశమును పరిమితి చెయడంలొ విఫలమైంది."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "వాడుకరి ఖాతా సృస్టించబడింది, మీరు లాగిన్ చేయబడ్డారు"
@@ -6371,11 +6380,12 @@ msgstr "పాస్వర్డ్ విజయవంతంగా మార
#: plinth/modules/wireguard/__init__.py:38
#: plinth/modules/wireguard/manifest.py:29
msgid "WireGuard"
-msgstr ""
+msgstr "వైర్గార్డ్"
#: plinth/modules/wireguard/__init__.py:43
+#, fuzzy
msgid "WireGuard is a fast, modern, secure VPN tunnel."
-msgstr ""
+msgstr "వైర్గార్డ్ వేగవంతమైన, ఆధునిక, సురక్షితమైన VPN సొరంగం."
#: plinth/modules/wireguard/__init__.py:45
#, python-brace-format
@@ -6491,7 +6501,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:33
msgid "Allowed IPs"
-msgstr ""
+msgstr "అనుమతించబడిన ఐపిలు"
#: plinth/modules/wireguard/templates/wireguard.html:34
#: plinth/modules/wireguard/templates/wireguard.html:90
@@ -6503,15 +6513,13 @@ msgstr "అనుసంధానం సృష్టించు"
#: plinth/modules/wireguard/templates/wireguard.html:53
#, python-format
msgid "No peers configured to connect to this %(box_name)s yet."
-msgstr ""
+msgstr "ఈ %(box_name)s కు కనెక్ట్ చేయడానికి సహచరులు ఇంకా కాన్ఫిగర్ చేయబడలేదు."
#: plinth/modules/wireguard/templates/wireguard.html:62
-#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
-msgstr ""
+#, fuzzy, python-format
+#| msgid "Public key of this machine:"
+msgid "Public key for this %(box_name)s:"
+msgstr "ఈ యంత్రం యొక్క పబ్లిక్ కీ:"
#: plinth/modules/wireguard/templates/wireguard.html:68
#, fuzzy
@@ -6528,7 +6536,7 @@ msgstr "కొత్త పరిచయకర్తని జోడించం
#: plinth/modules/wireguard/templates/wireguard.html:76
#: plinth/modules/wireguard/views.py:69
msgid "Add Allowed Client"
-msgstr ""
+msgstr "అనుమతించబడిన క్లయింట్ను జోడించండి"
#: plinth/modules/wireguard/templates/wireguard.html:79
#, fuzzy
@@ -6539,16 +6547,16 @@ msgstr "చాట్ క్లయింట్"
#: plinth/modules/wireguard/templates/wireguard.html:81
#, python-format
msgid "Servers that %(box_name)s will connect to:"
-msgstr ""
+msgstr "%(box_name)s కి కనెక్ట్ అయ్యే సర్వర్లు:"
#: plinth/modules/wireguard/templates/wireguard.html:88
#: plinth/modules/wireguard/templates/wireguard_delete_server.html:34
msgid "Endpoint"
-msgstr ""
+msgstr "ఎండ్ పాయింట్"
#: plinth/modules/wireguard/templates/wireguard.html:111
msgid "No connections to remote servers are configured yet."
-msgstr ""
+msgstr "రిమోట్ సర్వర్ లకు కనెక్షన్ లు ఇంకా కాన్ఫిగర్ చేయబడలేదు."
#: plinth/modules/wireguard/templates/wireguard.html:119
#, fuzzy
@@ -6570,11 +6578,11 @@ msgstr "ఐ ర్ సి క్లయింట్ (Quassel)"
#: plinth/modules/wireguard/templates/wireguard_delete_client.html:29
msgid "Are you sure that you want to delete this client?"
-msgstr ""
+msgstr "ఈ క్లయింట్ ని మీరు కచ్చితంగా డిలీట్ చేయాలని అనుకుంటున్నారా?"
#: plinth/modules/wireguard/templates/wireguard_delete_server.html:29
msgid "Are you sure that you want to delete this server?"
-msgstr ""
+msgstr "ఈ సర్వర్ ని మీరు కచ్చితంగా డిలీట్ చేయాలని అనుకుంటున్నారా?"
#: plinth/modules/wireguard/templates/wireguard_edit_client.html:34
#, fuzzy
@@ -6597,16 +6605,16 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard_show_client.html:35
msgid "Client public key:"
-msgstr ""
+msgstr "క్లయింట్ పబ్లిక్ కీ:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:39
msgid "IP address to use for client:"
-msgstr ""
+msgstr "క్లయింట్ కోసం ఉపయోగించాల్సిన IP చిరునామా:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:43
#: plinth/modules/wireguard/templates/wireguard_show_server.html:46
msgid "Pre-shared key:"
-msgstr ""
+msgstr "ముందే పంచుకున్న కీ:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:47
#, fuzzy
@@ -6622,17 +6630,17 @@ msgstr "సర్వర్ పోర్ట్"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:65
#: plinth/modules/wireguard/templates/wireguard_show_server.html:64
msgid "Data transmitted:"
-msgstr ""
+msgstr "డేటా బదిలీ:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:69
#: plinth/modules/wireguard/templates/wireguard_show_server.html:68
msgid "Data received:"
-msgstr ""
+msgstr "అందిన సమాచారం:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:73
#: plinth/modules/wireguard/templates/wireguard_show_server.html:72
msgid "Latest handshake:"
-msgstr ""
+msgstr "తాజా హ్యాండ్షేక్:"
#: plinth/modules/wireguard/templates/wireguard_show_server.html:29
#, python-format
@@ -6649,11 +6657,11 @@ msgstr "సర్వర్ డొమైన్"
#: plinth/modules/wireguard/templates/wireguard_show_server.html:50
msgid "Public key of this machine:"
-msgstr ""
+msgstr "ఈ యంత్రం యొక్క పబ్లిక్ కీ:"
#: plinth/modules/wireguard/templates/wireguard_show_server.html:54
msgid "IP address of this machine:"
-msgstr ""
+msgstr "ఈ యంత్రం యొక్క IP చిరునామా:"
#: plinth/modules/wireguard/views.py:64
#, fuzzy
@@ -6696,7 +6704,7 @@ msgstr "{name} తొలగించబడింది."
#: plinth/modules/wireguard/views.py:163
msgid "Client not found"
-msgstr ""
+msgstr "క్లయింట్ దొరకలేదు"
#: plinth/modules/wireguard/views.py:173
#, fuzzy
@@ -6821,44 +6829,44 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "ముంగిలి"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "అనువర్తనాలు"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "వ్యవస్థ"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "సంకేతపదాన్ని మార్చు"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "పునఃప్రారంభించండి"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
#, fuzzy
#| msgid "Shut Down Now"
msgid "Shut down"
msgstr "ఇపుడు మూసివేయండి"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "నిష్క్రమించు"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "భాష"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "లోనికి ప్రవేశించండి"
@@ -6925,6 +6933,8 @@ msgid ""
"Please wait for %(box_name)s to finish installation. You can start using "
"your %(box_name)s once it is done."
msgstr ""
+"సంస్థాపన పూర్తి కావడానికి %(box_name)s కోసం వేచి ఉండండి. పూర్తయిన తర్వాత మీ %(box_name)s ను "
+"ఉపయోగించడం ప్రారంభించవచ్చు."
#: plinth/templates/header.html:36
msgid "Installation"
@@ -6993,7 +7003,7 @@ msgstr "సేవ ఆవిష్కరణ సేవికను నడుపట
#: plinth/templates/internal-zone.html:32
msgid "Currently there are no network interfaces configured as internal."
-msgstr ""
+msgstr "ప్రస్తుతం ఇంటర్నల్ గా కాన్ఫిగర్ చేయబడ్డ నెట్ వర్క్ ఇంటర్ ఫేస్ లు ఏవీ లేవు."
#: plinth/templates/internal-zone.html:34
#, python-format
@@ -7001,6 +7011,13 @@ msgid ""
"Currently the following network interfaces are configured as internal: "
"%(interface_list)s"
msgstr ""
+"ప్రస్తుతం దిగువ నెట్ వర్క్ ఇంటర్ ఫేస్ లు ఇంటర్నల్ గా కాన్ఫిగర్ చేయబడ్డాయి: %(interface_list)s"
+
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "ధృవీకరణ పత్రం లేదు"
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
@@ -7014,6 +7031,8 @@ msgid ""
"forwarding on your router. You should forward the following ports for "
"%(service_name)s:"
msgstr ""
+"మీ ఫ్రీడమ్బాక్స్ ఒక రౌటర్ వెనుక ఉంటే, మీరు మీ రౌటర్లో పోర్ట్ ఫార్వడింగ్ ను ఏర్పాటు చేయాల్సి ఉంటుంది. "
+"%(service_name)s కొరకు దిగువ పోర్టులను మీరు ఫార్వర్డ్ చేయాలి:"
#: plinth/templates/setup.html:51
msgid "Install this application?"
@@ -7028,6 +7047,7 @@ msgid ""
"Another installation or upgrade is already running. Please wait for a few "
"moments before trying again."
msgstr ""
+"మరొక సంస్థాపన లేదా నవీకరణ ఇప్పటికే నడుస్తోంది. మళ్ళీ ప్రయత్నించే ముందు కొన్ని క్షణాలు వేచి ఉండండి."
#: plinth/templates/setup.html:73
msgid "This application is currently not available in your distribution."
@@ -7039,7 +7059,7 @@ msgstr "నిక్షిప్తం చేయు"
#: plinth/templates/setup.html:98
msgid "Performing pre-install operation"
-msgstr ""
+msgstr "ప్రీ-ఇన్స్టాల్ ఆపరేషన్ జరుగుతోంది"
#: plinth/templates/setup.html:102
msgid "Performing post-install operation"
@@ -7062,7 +7082,7 @@ msgstr "వెబ్ క్లయింట్ ని ప్రారంభిం
#: plinth/templates/toolbar.html:47
#, fuzzy
msgid "Client Apps"
-msgstr "ఐ ర్ సి క్లయింట్ (Quassel)"
+msgstr "క్లయింట్ అనువర్తనాలు"
#: plinth/views.py:179
msgid "Application enabled"
@@ -7072,9 +7092,12 @@ msgstr "అనువర్తనం ఆమోదింపబడింది"
msgid "Application disabled"
msgstr "అనువర్తనం ఆమోదింపబడలేదు"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
-msgstr ""
+msgstr "గుజరాతీ"
+
+#~ msgid "Physical Interface"
+#~ msgstr "భౌతిక సంవిధానం"
#~ msgid "repro"
#~ msgstr "రెప్రో"
@@ -7916,9 +7939,6 @@ msgstr ""
#~ msgid "is running"
#~ msgstr "డెల్యూజ్ నడుస్తోంది"
-#~ msgid "is not running"
-#~ msgstr "డెల్యూజ్ నడవడంలేదు"
-
#~ msgid "Box it up!"
#~ msgstr "ఇది పెట్టెపైకి!"
diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po
index 72bc52ab0..6e4a19643 100644
--- a/plinth/locale/tr/LC_MESSAGES/django.po
+++ b/plinth/locale/tr/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-08-08 00:22+0000\n"
"Last-Translator: Mesut Akcan Most routers "
@@ -3555,7 +3558,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3682,7 +3685,7 @@ msgstr "Bağlantıyı Düzenle"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "Düzenle"
@@ -3816,7 +3819,7 @@ msgid "This connection is not active."
msgstr "Bu bağlantı etkin değildir."
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "Güvenlik"
@@ -5035,40 +5038,59 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "İsim"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid "Block Sandbox"
msgid "Sandboxed"
msgstr "Blok Kum Havuzu"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid "Block Sandbox"
+msgid "Sandbox Coverage"
+msgstr "Blok Kum Havuzu"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "evet"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "is not running"
+msgid "Not running"
+msgstr "çalışmamaktadır"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5599,11 +5621,11 @@ msgstr "Tekli Oturum Açma"
msgid "Login"
msgstr "Giriş"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr "Depolama"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5611,89 +5633,103 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} bayt"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
#, fuzzy
#| msgid "repro service is running"
msgid "The device is already unmounting."
msgstr "repro servisi çalışmaktadır"
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
#, fuzzy
#| msgid "This service already exists"
msgid "The device is already mounted."
msgstr "Bu servis zaten mevcuttur"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
#, fuzzy
#| msgid "repro service is not running"
msgid "The device is not mounted."
msgstr "repro servisi çalışmamaktadır"
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, fuzzy, python-format, python-brace-format
+#| msgid ""
+#| "Warning: Low space on system partition ({percent_used}% used, "
+#| "{free_space} free)."
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+"İkaz: sistem disk bölümünde düşük alan (%{percent_used} kullanıldı, "
+"{free_space} boş)."
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5770,7 +5806,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "Kök Bölümünü Genişlet"
@@ -5785,34 +5821,25 @@ msgstr ""
"bölümünüzde ilave %(expandable_root_size)s değerinde boş alan "
"kullanılabilir olacaktır."
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "Bölümün genişletilmesinde hata: {exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "Bölüm başarılı bir şekilde genişletildi."
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-"İkaz: sistem disk bölümünde düşük alan (%{percent_used} kullanıldı, "
-"{free_space} boş)."
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -6213,14 +6240,20 @@ msgstr "Haber beslemelerini oku ve onlara abone ol"
msgid "Tiny Tiny RSS (Fork)"
msgstr "Tiny Tiny RSS"
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "Güncelle"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox Foundation"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox Vakfı"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Enable automatic upgrades"
@@ -6231,6 +6264,24 @@ msgstr "Otomatik güncellemeleri etkinleştir"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "Plinth is up to date."
+msgid "%(box_name)s Updated"
+msgstr "Plinth günceldir."
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update"
@@ -6319,19 +6370,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "\"{search_item}\" LDAP unsurunu kontrol et"
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr "Tüm servislere ve sistem ayarlarına erişim"
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "Kullanıcı ismi zaten alınmış ya da ayrılmıştır."
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "Geçersiz sunucu ismi"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr "İzinler"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6345,20 +6407,20 @@ msgstr ""
"servislere giriş yapabilecektir. Aynı zamanda sisteme SSH aracılığıyla giriş "
"yapıp yönetici izinlerine (sudo) erişebileceklerdir."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "LDAP kullanıcısı oluşturması başarısız oldu."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "{group} grubuna yeni kullanıcı ilâve edilmesi başarısız oldu."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6369,45 +6431,45 @@ msgstr ""
"çok anahtar girebilirsiniz, her anahtarı yeni bir satırda girin. Boş "
"satırlar ve # ile başlayan satırlar görmezden gelinecektir."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "LDAP kullanıcısının tekrar adlandırılması başarısız oldu."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "Kullanıcının gruptan kaldırılması başarısız oldu."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "Kullanıcının gruba eklenmesi başarısız oldu."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "SSH anahtarları ayarlanamadı."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "Kullanıcının gruba eklenmesi başarısız oldu."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "LDAP kullanıcı parolasının değiştirilmesi başarısız oldu."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "Yeni kullanıcının admin (yönetici) grubuna eklenmesi başarısız oldu."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "Konsol erişiminin kısıtlanması başarısız oldu."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "Kullanıcı hesabı oluşturuldu, artık giriş yaptınız"
@@ -6659,10 +6721,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -7001,42 +7060,42 @@ msgstr "%(box_name)s için Plinth yönetim arayüzü"
msgid "Toggle navigation"
msgstr "Tarama Geçişi"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "Ev"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "Uygulamalar"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "Sistem"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "Parolayı değiştir"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "Tekrar Başlat"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "Kapat"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "Çıkış yap"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "Lisan"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "Giriş yap"
@@ -7186,6 +7245,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "Sertifika yok"
+
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
#| msgid "Enable forwarding"
@@ -7258,10 +7323,13 @@ msgstr "Uygulama etkinleştirildi"
msgid "Application disabled"
msgstr "Uygulama devre dışı bırakıldı"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
+#~ msgid "Physical Interface"
+#~ msgstr "Fiziki Arayüz"
+
#~ msgid "repro"
#~ msgstr "repro"
@@ -8194,9 +8262,6 @@ msgstr ""
#~ msgid "is running"
#~ msgstr "çalışmaktadır"
-#~ msgid "is not running"
-#~ msgstr "çalışmamaktadır"
-
#~ msgid "Anonymity Network (Tor)"
#~ msgstr "Anonimlik Ağı (Tor)"
diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po
index ba301a3d7..c812e15e2 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-01-04 17:06+0000\n"
"Last-Translator: prolinux ukraine Most routers "
@@ -3137,7 +3130,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3262,7 +3255,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr ""
@@ -3396,7 +3389,7 @@ msgid "This connection is not active."
msgstr ""
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr ""
@@ -4404,36 +4397,51 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "Ім’я"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
msgid "Sandboxed"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+msgid "Sandbox Coverage"
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
msgid "Yes"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+msgid "Not running"
+msgstr ""
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -4875,11 +4883,11 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4887,83 +4895,92 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Repository not found"
@@ -5028,7 +5045,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr ""
@@ -5040,32 +5057,25 @@ msgid ""
"root partition."
msgstr ""
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr ""
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr ""
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -5377,14 +5387,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
msgid "Enable auto-update"
msgstr ""
@@ -5393,6 +5409,23 @@ msgstr ""
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, python-format
+msgid "%(box_name)s Updated"
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
msgid "Update now"
msgstr ""
@@ -5467,19 +5500,30 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr ""
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr ""
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Repository not found"
+msgid "Enter a valid username."
+msgstr "Сховище не знайдено"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
msgid "Permissions"
msgstr ""
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -5488,63 +5532,63 @@ msgid ""
"SSH and have administrative privileges (sudo)."
msgstr ""
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr ""
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
"line. Blank lines and lines starting with # will be ignored."
msgstr ""
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr ""
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr ""
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr ""
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr ""
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
msgid "Failed to change user status."
msgstr ""
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr ""
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr ""
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr ""
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr ""
@@ -5783,10 +5827,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6083,40 +6124,40 @@ msgstr ""
msgid "Toggle navigation"
msgstr ""
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr ""
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr ""
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr ""
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr ""
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr ""
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr ""
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr ""
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr ""
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr ""
@@ -6250,6 +6291,10 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+msgid "Notifications"
+msgstr ""
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -6318,7 +6363,7 @@ msgstr ""
msgid "Application disabled"
msgstr ""
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po
index 05f100ebe..8f22f1e0d 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2019-09-13 05:23+0000\n"
"Last-Translator: Anxin YI <2732146152@qq.com>\n"
"Language-Team: Chinese (Simplified) Most routers "
@@ -3456,7 +3459,7 @@ msgid ""
"address for your {box_name} in your router's configuration. "
msgstr ""
-#: plinth/modules/networks/forms.py:345
+#: plinth/modules/networks/forms.py:349
msgid ""
"Router is currently unconfigured Choose this if you "
"have not configured or are unable to configure the router currently and wish "
@@ -3581,7 +3584,7 @@ msgstr "编辑连接"
#: plinth/modules/networks/templates/connection_show.html:43
#: plinth/modules/wireguard/templates/wireguard_show_client.html:83
#: plinth/modules/wireguard/templates/wireguard_show_server.html:84
-#: plinth/templates/base.html:158 plinth/templates/base.html:159
+#: plinth/templates/base.html:167 plinth/templates/base.html:168
msgid "Edit"
msgstr "編輯"
@@ -3715,7 +3718,7 @@ msgid "This connection is not active."
msgstr "此连接未处于激活状态。"
#: plinth/modules/networks/templates/connection_show.html:266
-#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47
+#: plinth/modules/security/__init__.py:38 plinth/modules/security/views.py:47
msgid "Security"
msgstr "安全"
@@ -4885,21 +4888,28 @@ msgid ""
"potentially compromised app to the rest of the system."
msgstr ""
-#: plinth/modules/security/templates/security_report.html:48
+#: plinth/modules/security/templates/security_report.html:46
+msgid ""
+"\"Sandbox Coverage\" is a score of how effectively the service is isolated "
+"from the rest of the system. It is only displayed while the service is "
+"running."
+msgstr ""
+
+#: plinth/modules/security/templates/security_report.html:55
#, fuzzy
#| msgid "Name"
msgid "App Name"
msgstr "名称"
-#: plinth/modules/security/templates/security_report.html:49
+#: plinth/modules/security/templates/security_report.html:56
msgid "Current Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:50
+#: plinth/modules/security/templates/security_report.html:57
msgid "Past Vulnerabilities"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:51
+#: plinth/modules/security/templates/security_report.html:58
#, fuzzy
#| msgid ""
#| "Block Sandbox \n"
@@ -4909,20 +4919,36 @@ msgstr ""
"方块沙盒\n"
"(Minetest)"
-#: plinth/modules/security/templates/security_report.html:62
+#: plinth/modules/security/templates/security_report.html:59
+#, fuzzy
+#| msgid ""
+#| "Block Sandbox \n"
+#| " (Minetest)"
+msgid "Sandbox Coverage"
+msgstr ""
+"方块沙盒\n"
+"(Minetest)"
+
+#: plinth/modules/security/templates/security_report.html:70
msgid "N/A"
msgstr ""
-#: plinth/modules/security/templates/security_report.html:64
+#: plinth/modules/security/templates/security_report.html:72
#, fuzzy
#| msgid "yes"
msgid "Yes"
msgstr "是的"
-#: plinth/modules/security/templates/security_report.html:66
+#: plinth/modules/security/templates/security_report.html:74
msgid "No"
msgstr ""
+#: plinth/modules/security/templates/security_report.html:81
+#, fuzzy
+#| msgid "is not running"
+msgid "Not running"
+msgstr " 未运行"
+
#: plinth/modules/security/views.py:69
#, python-brace-format
msgid "Error setting restricted access: {exception}"
@@ -5444,13 +5470,13 @@ msgstr ""
msgid "Login"
msgstr "登录"
-#: plinth/modules/storage/__init__.py:37
+#: plinth/modules/storage/__init__.py:39 plinth/modules/storage/__init__.py:331
#, fuzzy
#| msgid "reStore"
msgid "Storage"
msgstr "reStore"
-#: plinth/modules/storage/__init__.py:45
+#: plinth/modules/storage/__init__.py:47
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5458,94 +5484,103 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:216
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
#| msgid "{disk_size} bytes"
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} bytes"
-#: plinth/modules/storage/__init__.py:220
+#: plinth/modules/storage/__init__.py:228
#, fuzzy, python-brace-format
#| msgid "{disk_size} KiB"
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:224
+#: plinth/modules/storage/__init__.py:232
#, fuzzy, python-brace-format
#| msgid "{disk_size} MiB"
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:236
#, fuzzy, python-brace-format
#| msgid "{disk_size} GiB"
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:231
+#: plinth/modules/storage/__init__.py:239
#, fuzzy, python-brace-format
#| msgid "{disk_size} TiB"
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:238
+#: plinth/modules/storage/__init__.py:246
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:240
+#: plinth/modules/storage/__init__.py:248
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:242
+#: plinth/modules/storage/__init__.py:250
#, fuzzy
#| msgid "repro service is running"
msgid "The device is already unmounting."
msgstr "repro 服务正在运行"
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:252
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:247
+#: plinth/modules/storage/__init__.py:255
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:257
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:252
+#: plinth/modules/storage/__init__.py:260
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:254
+#: plinth/modules/storage/__init__.py:262
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:260
+#: plinth/modules/storage/__init__.py:268
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:262
+#: plinth/modules/storage/__init__.py:270
#, fuzzy
#| msgid "This service already exists"
msgid "The device is already mounted."
msgstr "此服务已存在"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:272
#, fuzzy
#| msgid "repro service is not running"
msgid "The device is not mounted."
msgstr "repro 服务未运行"
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:275
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:270
+#: plinth/modules/storage/__init__.py:278
msgid "The device is mounted by another user."
msgstr ""
+#: plinth/modules/storage/__init__.py:326
+#, python-format, python-brace-format
+msgid "Low space on system partition: {percent_used}% used, {free_space} free."
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:328
+msgid "Low disk space"
+msgstr ""
+
#: plinth/modules/storage/forms.py:79
#, fuzzy
#| msgid "Invalid hostname"
@@ -5620,7 +5655,7 @@ msgstr ""
#: plinth/modules/storage/templates/storage.html:102
#: plinth/modules/storage/templates/storage_expand.html:39
-#: plinth/modules/storage/views.py:83
+#: plinth/modules/storage/views.py:76
msgid "Expand Root Partition"
msgstr "扩展根分区"
@@ -5634,32 +5669,25 @@ msgstr ""
"执行前请备份你的数据。这个操作以后,将会为你的根分区扩展出 "
"%(expandable_root_size)s 空余空间。"
-#: plinth/modules/storage/views.py:95
+#: plinth/modules/storage/views.py:88
#, python-brace-format
msgid "Error expanding partition: {exception}"
msgstr "扩展分区错误:{exception}"
-#: plinth/modules/storage/views.py:98
+#: plinth/modules/storage/views.py:91
msgid "Partition expanded successfully."
msgstr "已成功扩展分区。"
-#: plinth/modules/storage/views.py:115
-#, no-python-format, python-brace-format
-msgid ""
-"Warning: Low space on system partition ({percent_used}% used, {free_space} "
-"free)."
-msgstr ""
-
-#: plinth/modules/storage/views.py:141
+#: plinth/modules/storage/views.py:109
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:145
+#: plinth/modules/storage/views.py:113
msgid "Device can be safely unplugged."
msgstr ""
-#: plinth/modules/storage/views.py:155
+#: plinth/modules/storage/views.py:123
#, python-brace-format
msgid "Error ejecting device: {error_message}"
msgstr ""
@@ -6018,14 +6046,20 @@ msgstr ""
msgid "Tiny Tiny RSS (Fork)"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89
+#: plinth/modules/upgrades/__init__.py:37 plinth/templates/setup.html:89
msgid "Update"
msgstr "更新"
-#: plinth/modules/upgrades/__init__.py:38
+#: plinth/modules/upgrades/__init__.py:40
msgid "Check for and apply the latest software and security updates."
msgstr ""
+#: plinth/modules/upgrades/__init__.py:84
+#, fuzzy
+#| msgid "FreedomBox"
+msgid "FreedomBox Updated"
+msgstr "FreedomBox"
+
#: plinth/modules/upgrades/forms.py:28
#, fuzzy
#| msgid "Enable automatic upgrades"
@@ -6036,6 +6070,24 @@ msgstr "启用自动升级"
msgid "When enabled, FreedomBox automatically updates once a day."
msgstr ""
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:24
+#, fuzzy, python-format
+#| msgid "%(box_name)s Setup"
+msgid "%(box_name)s Updated"
+msgstr "%(box_name)s 安装程序"
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:28
+#, python-format
+msgid ""
+"%(box_name)s has been updated to version %(version)s. See the release announcement."
+msgstr ""
+
+#: plinth/modules/upgrades/templates/upgrades-new-release.html:37
+#: plinth/templates/notifications.html:59
+msgid "Dismiss"
+msgstr ""
+
#: plinth/modules/upgrades/templates/upgrades.html:45
#, fuzzy
#| msgid "Update"
@@ -6123,21 +6175,32 @@ msgstr ""
msgid "Check LDAP entry \"{search_item}\""
msgstr "请检查 LDAP 条目“{search_item}”"
-#: plinth/modules/users/forms.py:40
+#: plinth/modules/users/forms.py:43
msgid "Access to all services and system settings"
msgstr ""
-#: plinth/modules/users/forms.py:54
+#: plinth/modules/users/forms.py:59
msgid "Username is taken or is reserved."
msgstr "用户名已经占用或保留。"
-#: plinth/modules/users/forms.py:86 plinth/modules/users/forms.py:193
+#: plinth/modules/users/forms.py:87
+#, fuzzy
+#| msgid "Invalid server name"
+msgid "Enter a valid username."
+msgstr "服务器名称无效"
+
+#: plinth/modules/users/forms.py:93
+msgid ""
+"Required. 150 characters or fewer. English letters, digits and @/./-/_ only."
+msgstr ""
+
+#: plinth/modules/users/forms.py:106 plinth/modules/users/forms.py:222
#, fuzzy
#| msgid "Transmission BitTorrent"
msgid "Permissions"
msgstr "Transmission BitTorrent"
-#: plinth/modules/users/forms.py:89
+#: plinth/modules/users/forms.py:109
msgid ""
"Select which services should be available to the new user. The user will be "
"able to log in to services that support single sign-on through LDAP, if they "
@@ -6149,20 +6212,20 @@ msgstr ""
"支持单一登录的服务。
- {% blocktrans %}
+ {% blocktrans trimmed %}
The remote repository will not be deleted.
This just removes the repository from the listing on the backup page, you
can add it again later on.
diff --git a/plinth/modules/bind/data/lib/systemd/system/bind9.service.d/freedombox.conf b/plinth/modules/bind/data/lib/systemd/system/bind9.service.d/freedombox.conf
index 09e2117cd..0b7d787ed 100644
--- a/plinth/modules/bind/data/lib/systemd/system/bind9.service.d/freedombox.conf
+++ b/plinth/modules/bind/data/lib/systemd/system/bind9.service.d/freedombox.conf
@@ -1,4 +1,5 @@
[Service]
+CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_SYS_RESOURCE
LockPersonality=yes
NoNewPrivileges=yes
PrivateDevices=yes
@@ -9,7 +10,8 @@ ProtectHome=yes
ProtectKernelLogs=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
-ProtectSystem=full
+ProtectSystem=strict
+ReadWritePaths=/var/lib/bind /var/cache/bind /var/run/named
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
RestrictRealtime=yes
SystemCallArchitectures=native
diff --git a/plinth/modules/firewall/__init__.py b/plinth/modules/firewall/__init__.py
index c2e126cbb..846423891 100644
--- a/plinth/modules/firewall/__init__.py
+++ b/plinth/modules/firewall/__init__.py
@@ -23,6 +23,7 @@ from django.utils.translation import ugettext_lazy as _
from plinth import actions
from plinth import app as app_module
from plinth import cfg, menu
+from plinth.daemon import Daemon
from plinth.utils import Version, format_lazy
from .manifest import backup # noqa, pylint: disable=unused-import
@@ -33,6 +34,8 @@ is_essential = True
managed_packages = ['firewalld', 'nftables']
+managed_services = ['firewalld']
+
name = _('Firewall')
description = [
@@ -62,6 +65,9 @@ class FirewallApp(app_module.App):
'firewall:index', parent_url_name='system')
self.add(menu_item)
+ daemon = Daemon('daemon-firewall', managed_services[0])
+ self.add(daemon)
+
def init():
"""Initailze firewall module"""
diff --git a/plinth/modules/firewall/urls.py b/plinth/modules/firewall/urls.py
index d6e2ddc4f..ba467d9fe 100644
--- a/plinth/modules/firewall/urls.py
+++ b/plinth/modules/firewall/urls.py
@@ -23,5 +23,5 @@ from django.conf.urls import url
from . import views
urlpatterns = [
- url(r'^sys/firewall/$', views.index, name='index'),
+ url(r'^sys/firewall/$', views.FirewallAppView.as_view(), name='index'),
]
diff --git a/plinth/modules/firewall/views.py b/plinth/modules/firewall/views.py
index fa17fd99e..ded469986 100644
--- a/plinth/modules/firewall/views.py
+++ b/plinth/modules/firewall/views.py
@@ -18,32 +18,34 @@
FreedomBox app to configure a firewall.
"""
-from django.template.response import TemplateResponse
-
+from plinth import views
from plinth.modules import firewall
from . import components
-def index(request):
- """Serve introduction page"""
- if not firewall.get_enabled_status():
- return TemplateResponse(
- request, 'firewall.html', {
- 'name': firewall.name,
- 'description': firewall.description,
- 'firewall_status': 'not_running'
- })
+class FirewallAppView(views.AppView):
+ """Serve firewall index page."""
+ name = firewall.name
+ description = firewall.description
+ app_id = 'firewall'
+ manual_page = firewall.manual_page
+ template_name = 'firewall.html'
- internal_enabled_ports = firewall.get_enabled_services(zone='internal')
- external_enabled_ports = firewall.get_enabled_services(zone='external')
+ def get_context_data(self, *args, **kwargs):
+ """Add additional context data for the template."""
+ context = super().get_context_data(*args, **kwargs)
- return TemplateResponse(
- request, 'firewall.html', {
- 'name': firewall.name,
- 'description': firewall.description,
- 'components': components.Firewall.list(),
- 'manual_page': firewall.manual_page,
- 'internal_enabled_ports': internal_enabled_ports,
- 'external_enabled_ports': external_enabled_ports
- })
+ status = 'running' if firewall.get_enabled_status() else 'not_running'
+ context['firewall_status'] = status
+
+ if status == 'running':
+ context['components'] = components.Firewall.list()
+ internal_enabled_ports = firewall.get_enabled_services(
+ zone='internal')
+ external_enabled_ports = firewall.get_enabled_services(
+ zone='external')
+ context['internal_enabled_ports'] = internal_enabled_ports
+ context['external_enabled_ports'] = external_enabled_ports
+
+ return context
diff --git a/plinth/modules/matrixsynapse/data/lib/systemd/system/matrix-synapse.service.d/freedombox.conf b/plinth/modules/matrixsynapse/data/lib/systemd/system/matrix-synapse.service.d/freedombox.conf
new file mode 100644
index 000000000..c87b0c250
--- /dev/null
+++ b/plinth/modules/matrixsynapse/data/lib/systemd/system/matrix-synapse.service.d/freedombox.conf
@@ -0,0 +1,17 @@
+[Service]
+ConfigurationDirectory=matrix-synapse
+LockPersonality=yes
+LogsDirectory=matrix-synapse
+NoNewPrivileges=yes
+PrivateDevices=yes
+PrivateTmp=yes
+ProtectControlGroups=yes
+ProtectHome=yes
+ProtectKernelLogs=yes
+ProtectKernelModules=yes
+ProtectKernelTunables=yes
+ProtectSystem=strict
+RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
+RestrictRealtime=yes
+StateDirectory=matrix-synapse
+SystemCallArchitectures=native
diff --git a/plinth/modules/matrixsynapse/templates/matrix-synapse.html b/plinth/modules/matrixsynapse/templates/matrix-synapse.html
index 1cc7121b2..99428fba9 100644
--- a/plinth/modules/matrixsynapse/templates/matrix-synapse.html
+++ b/plinth/modules/matrixsynapse/templates/matrix-synapse.html
@@ -42,7 +42,7 @@
{% if certificate_status != "valid" %}
+ {% blocktrans trimmed %}
+ "Sandbox Coverage" is a score of how effectively the service is isolated
+ from the rest of the system. It is only displayed while the service is
+ running.
+ {% endblocktrans %}
+
+ {% blocktrans trimmed with url="https://discuss.freedombox.org/c/announcements/7" %}
+ {{ box_name }} has been updated to version {{ version }}. See the
+ release announcement.
+ {% endblocktrans %}
+
- {% blocktrans %}
+ {% blocktrans trimmed %}
Public key for this {{ box_name }}:
{% endblocktrans %}
{% if server.public_key %}
diff --git a/plinth/notification.py b/plinth/notification.py
new file mode 100644
index 000000000..c6084b5b3
--- /dev/null
+++ b/plinth/notification.py
@@ -0,0 +1,217 @@
+#
+# This file is part of FreedomBox.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see
एडमिन ग्रुप के यूसरस सब सर्विसस पर लॉग इन कर सकेगें. SSH के माध्यम से भी "
"सिस्टम पर लॉग इन कर सकते है अाैर उनको प्रशासनिक विशेषाधिकार (sudo) है."
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "एलडीएपी यूसर बनाना विफल रहा."
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "{group} समूह में नया यूसर जोड़ने में विफल."
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6201,45 +6255,45 @@ msgstr ""
"बिना सिस्टम में प्रवेश करने की अनुमति देगा. आप एकाधिक कीज़ दर्ज कर सकते हैं, हर लाइन रक "
"एक. खाली लाइनस या # से प्रारंभ होने वाले लाइनस अनदेखा कर दिया जाएगा."
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "एलडीएपी यूसर का नाम बदलना विफल रहा."
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "समूह से यूसर को हटाने में विफल."
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "समूह से यूसर को जोड़ने में विफल."
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "एसएसएच कीज़ सेट करने में असमर्थ."
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "समूह से यूसर को जोड़ने में विफल."
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr "सिस्टम में केवल व्यवस्थापक को नहीं हटा सकता."
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "एलडीएपी यूसर का पासवर्ड बदलना विफल रहा."
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "व्यवस्थापक समूह में नया यूसर जोड़ने में विफल."
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "कंसोल एक्सेस प्रतिबंधित करने में विफल."
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "युसर अकाउंट बनाया, अब आप लॉगड इन हैं"
@@ -6490,10 +6544,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6819,40 +6870,40 @@ msgstr "%(box_name)s के लिए कोर फंक्शनलिटी
msgid "Toggle navigation"
msgstr "टॉगल नेविगेशन"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "होम"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "ऐप्स"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "सिस्टम"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "पासवर्ड बदलें"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
msgid "Restart"
msgstr "रीस्टार्ट"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
msgid "Shut down"
msgstr "शट डाउन"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "लॉग आउट"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
msgid "Select language"
msgstr "भाषा चुनें"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "लॉग इन"
@@ -6994,6 +7045,12 @@ msgid ""
"%(interface_list)s"
msgstr "अभी यह नेटवर्क इंटरफ़ेसस आंतरिक के रूप में कॉंफ़िगर किया गया है:%(interface_list)s"
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "कोई प्रमाणपत्र नहीं"
+
#: plinth/templates/port-forwarding-info.html:23
msgid "Port Forwarding"
msgstr ""
@@ -7063,10 +7120,13 @@ msgstr "एप्लीकेशन सक्षम किया गया ह
msgid "Application disabled"
msgstr "एप्लीकेशन अक्षम किया गया है"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr ""
+#~ msgid "Physical Interface"
+#~ msgstr "भौतिक इंटरफेस"
+
#~ msgid "repro"
#~ msgstr "रेप्रो"
@@ -7228,9 +7288,6 @@ msgstr ""
#~ "syncthing. डेस्कटॉप और मोबाइल क्लाइंट्स भी उपलब्ध होगा available."
-#~ msgid "Tor is running"
-#~ msgstr "टोर चल रहा है"
-
#~ msgid "Tor is not running"
#~ msgstr "टोर नहीं चल रहा है"
diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po
index 5f46b8752..ea14ff6cf 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: 2020-01-27 18:52-0500\n"
+"POT-Creation-Date: 2020-02-10 18:35-0500\n"
"PO-Revision-Date: 2020-01-03 07:55+0000\n"
"Last-Translator: Doma Gergő
管理员(admin)组中的用户将能够登录所有服务。他"
"们还可以通过 SSH 登录到系统并具有管理权限(sudo)。"
-#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:339
+#: plinth/modules/users/forms.py:148 plinth/modules/users/forms.py:372
msgid "Creating LDAP user failed."
msgstr "创建 LDAP 用户失败。"
-#: plinth/modules/users/forms.py:135
+#: plinth/modules/users/forms.py:159
#, python-brace-format
msgid "Failed to add new user to {group} group."
msgstr "未能将新用户添加到 {group}。"
-#: plinth/modules/users/forms.py:148
+#: plinth/modules/users/forms.py:173
msgid "Authorized SSH Keys"
msgstr ""
-#: plinth/modules/users/forms.py:150
+#: plinth/modules/users/forms.py:175
msgid ""
"Setting an SSH public key will allow this user to securely log in to the "
"system without using a password. You may enter multiple keys, one on each "
@@ -6171,45 +6234,45 @@ msgstr ""
"设置 SSH 公钥将允许此用户安全地登录到系统不使用密码。您可以输入多个密钥,每行"
"一个。将忽略空行和以 # 开头的行。"
-#: plinth/modules/users/forms.py:230
+#: plinth/modules/users/forms.py:259
msgid "Renaming LDAP user failed."
msgstr "重命名 LDAP 用户失败。"
-#: plinth/modules/users/forms.py:242
+#: plinth/modules/users/forms.py:271
msgid "Failed to remove user from group."
msgstr "无法从组中删除用户。"
-#: plinth/modules/users/forms.py:253
+#: plinth/modules/users/forms.py:282
msgid "Failed to add user to group."
msgstr "无法将用户添加到组。"
-#: plinth/modules/users/forms.py:262
+#: plinth/modules/users/forms.py:291
msgid "Unable to set SSH keys."
msgstr "不能设置 SSH 密钥。"
-#: plinth/modules/users/forms.py:277
+#: plinth/modules/users/forms.py:306
#, fuzzy
#| msgid "Failed to add user to group."
msgid "Failed to change user status."
msgstr "无法将用户添加到组。"
-#: plinth/modules/users/forms.py:285
+#: plinth/modules/users/forms.py:314
msgid "Cannot delete the only administrator in the system."
msgstr ""
-#: plinth/modules/users/forms.py:315
+#: plinth/modules/users/forms.py:346
msgid "Changing LDAP user password failed."
msgstr "更改 LDAP 用户密码失败。"
-#: plinth/modules/users/forms.py:348
+#: plinth/modules/users/forms.py:381
msgid "Failed to add new user to admin group."
msgstr "未能将新用户添加到管理员组。"
-#: plinth/modules/users/forms.py:365
+#: plinth/modules/users/forms.py:398
msgid "Failed to restrict console access."
msgstr "限制命令行访问失败。"
-#: plinth/modules/users/forms.py:377
+#: plinth/modules/users/forms.py:410
msgid "User account created, you are now logged in"
msgstr "用户帐户已创建,您现在可以登录"
@@ -6458,10 +6521,7 @@ msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:62
#, python-format
-msgid ""
-"\n"
-" Public key for this %(box_name)s:\n"
-" "
+msgid "Public key for this %(box_name)s:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:68
@@ -6812,46 +6872,46 @@ msgstr "Plinth %(box_name)s 管理界面"
msgid "Toggle navigation"
msgstr "切换导航"
-#: plinth/templates/base.html:115 plinth/templates/base.html:118
+#: plinth/templates/base.html:120 plinth/templates/base.html:123
msgid "Home"
msgstr "主页"
-#: plinth/templates/base.html:123 plinth/templates/base.html:127
+#: plinth/templates/base.html:128 plinth/templates/base.html:132
msgid "Apps"
msgstr "应用程序"
-#: plinth/templates/base.html:132 plinth/templates/base.html:136
+#: plinth/templates/base.html:137 plinth/templates/base.html:141
msgid "System"
msgstr "系统"
-#: plinth/templates/base.html:164 plinth/templates/base.html:165
+#: plinth/templates/base.html:173 plinth/templates/base.html:174
msgid "Change password"
msgstr "更改密码"
-#: plinth/templates/base.html:172 plinth/templates/base.html:173
+#: plinth/templates/base.html:181 plinth/templates/base.html:182
#, fuzzy
#| msgid "Restart Now"
msgid "Restart"
msgstr "现在重新启动"
-#: plinth/templates/base.html:178 plinth/templates/base.html:179
+#: plinth/templates/base.html:187 plinth/templates/base.html:188
#, fuzzy
#| msgid "Shut Down Now"
msgid "Shut down"
msgstr "现在关闭"
-#: plinth/templates/base.html:186 plinth/templates/base.html:187
-#: plinth/templates/base.html:211 plinth/templates/base.html:213
+#: plinth/templates/base.html:195 plinth/templates/base.html:196
+#: plinth/templates/base.html:220 plinth/templates/base.html:222
msgid "Log out"
msgstr "登出"
-#: plinth/templates/base.html:195 plinth/templates/base.html:198
+#: plinth/templates/base.html:204 plinth/templates/base.html:207
#, fuzzy
#| msgid "Language"
msgid "Select language"
msgstr "语言"
-#: plinth/templates/base.html:203 plinth/templates/base.html:205
+#: plinth/templates/base.html:212 plinth/templates/base.html:214
msgid "Log in"
msgstr "登录"
@@ -7011,6 +7071,12 @@ msgid ""
"%(interface_list)s"
msgstr ""
+#: plinth/templates/notifications-dropdown.html:26
+#, fuzzy
+#| msgid "No certificate"
+msgid "Notifications"
+msgstr "没有证书"
+
#: plinth/templates/port-forwarding-info.html:23
#, fuzzy
#| msgid "Enable forwarding"
@@ -7083,10 +7149,13 @@ msgstr "应用程序已启用"
msgid "Application disabled"
msgstr "应用程序已禁用"
-#: plinth/web_framework.py:188
+#: plinth/web_framework.py:190
msgid "Gujarati"
msgstr "古吉拉特语"
+#~ msgid "Physical Interface"
+#~ msgstr "物理接口"
+
#, fuzzy
#~| msgid "DNS Server"
#~ msgid "SIP Server"
@@ -7762,9 +7831,6 @@ msgstr "古吉拉特语"
#~ msgid "is running"
#~ msgstr " 正在运行"
-#~ msgid "is not running"
-#~ msgstr " 未运行"
-
#~ msgid "Anonymity Network (Tor)"
#~ msgstr "匿名网络(Tor)"
diff --git a/plinth/log.py b/plinth/log.py
index 86059fec5..3e0819141 100644
--- a/plinth/log.py
+++ b/plinth/log.py
@@ -121,6 +121,11 @@ def get_configuration():
'root': {
'handlers': ['console'],
'level': 'DEBUG' if cfg.develop else 'INFO'
+ },
+ 'loggers': {
+ 'django.db.backends': {
+ 'level': 'INFO' # Set to 'DEBUG' to log database queries
+ }
}
}
diff --git a/plinth/migrations/0005_storednotification.py b/plinth/migrations/0005_storednotification.py
new file mode 100644
index 000000000..2e62dac37
--- /dev/null
+++ b/plinth/migrations/0005_storednotification.py
@@ -0,0 +1,61 @@
+#
+# This file is part of FreedomBox.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see
@@ -49,6 +56,7 @@
@@ -66,6 +74,13 @@
{% trans "No" %}
{% endif %}
+ {% trans "Current Vulnerabilities" %}
{% trans "Past Vulnerabilities" %}
{% trans "Sandboxed" %}
+ {% trans "Sandbox Coverage" %}
+ {% if app.sandbox_coverage %}
+ {{ app.sandbox_coverage }}%
+ {% elif app.sandboxed %}
+ {% trans "Not running" %}
+ {% endif %}
+
{% endfor %}
diff --git a/plinth/modules/sso/forms.py b/plinth/modules/sso/forms.py
index 3c9dd9968..e490bfbd1 100644
--- a/plinth/modules/sso/forms.py
+++ b/plinth/modules/sso/forms.py
@@ -24,9 +24,17 @@ from django.contrib.auth.forms import \
class AuthenticationForm(DjangoAuthenticationForm):
- """Authentication form with an additional Captcha field."""
- captcha = CaptchaField()
+ """Authentication form with an additional username field attributes."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
- self.fields['username'].widget.attrs.update({'autofocus': 'autofocus'})
+ self.fields['username'].widget.attrs.update({
+ 'autofocus': 'autofocus',
+ 'autocapitalize': 'none',
+ 'autocomplete': 'username'
+ })
+
+
+class CaptchaAuthenticationForm(AuthenticationForm):
+ """Authentication form with an additional Captcha field."""
+ captcha = CaptchaField()
diff --git a/plinth/modules/sso/views.py b/plinth/modules/sso/views.py
index 7991a0581..dda518f9b 100644
--- a/plinth/modules/sso/views.py
+++ b/plinth/modules/sso/views.py
@@ -27,10 +27,9 @@ from axes.decorators import axes_form_invalid
from django.contrib.auth import REDIRECT_FIELD_NAME
from django.contrib.auth.views import LoginView, LogoutView
from django.http import HttpResponseRedirect
-
from plinth import actions, utils, web_framework
-from .forms import AuthenticationForm
+from .forms import AuthenticationForm, CaptchaAuthenticationForm
PRIVATE_KEY_FILE_NAME = 'privkey.pem'
SSO_COOKIE_NAME = 'auth_pubtkt'
@@ -61,6 +60,7 @@ class SSOLoginView(LoginView):
"""
redirect_authenticated_user = True
template_name = 'login.html'
+ form_class = AuthenticationForm
def dispatch(self, request, *args, **kwargs):
response = super(SSOLoginView, self).dispatch(request, *args, **kwargs)
@@ -79,11 +79,11 @@ class SSOLoginView(LoginView):
class CaptchaLoginView(LoginView):
redirect_authenticated_user = True
template_name = 'login.html'
- form_class = AuthenticationForm
+ form_class = CaptchaAuthenticationForm
def dispatch(self, request, *args, **kwargs):
- response = super(CaptchaLoginView,
- self).dispatch(request, *args, **kwargs)
+ response = super(CaptchaLoginView, self).dispatch(
+ request, *args, **kwargs)
if not request.POST:
return response
diff --git a/plinth/modules/storage/__init__.py b/plinth/modules/storage/__init__.py
index adbc66971..5a46d4b2b 100644
--- a/plinth/modules/storage/__init__.py
+++ b/plinth/modules/storage/__init__.py
@@ -17,15 +17,17 @@
"""
FreedomBox app to manage storage.
"""
+
import logging
import subprocess
import psutil
from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ugettext_noop
from plinth import actions
from plinth import app as app_module
-from plinth import cfg, menu, utils
+from plinth import cfg, glib, menu, utils
from plinth.daemon import Daemon
from plinth.errors import ActionError, PlinthError
from plinth.utils import format_lazy, import_from_gi
@@ -72,6 +74,10 @@ class StorageApp(app_module.App):
daemon = Daemon('daemon-udiskie', managed_services[0])
self.add(daemon)
+ # Check every hour for low disk space, every 3 minutes in debug mode
+ interval = 180 if cfg.develop else 3600
+ glib.schedule(interval, warn_about_low_disk_space)
+
def init():
"""Initialize the module."""
@@ -81,15 +87,15 @@ def init():
def get_disks():
- """Returns list of disks by combining information from df and lsblk."""
- disks = _get_disks_from_udisks()
- disks_from_df = _get_disks_from_df()
+ """Returns list of disks by combining information from df and udisks."""
+ disks = _get_disks_from_df()
+ disks_from_udisks = _get_disks_from_udisks()
- # Add size info from df to the disks from udisks based on mount point.
- for disk_from_udisks in disks:
- for disk_from_df in disks_from_df:
+ # Add info from udisks to the disks from df based on mount point.
+ for disk_from_df in disks:
+ for disk_from_udisks in disks_from_udisks:
if disk_from_udisks['mount_point'] == disk_from_df['mount_point']:
- disk_from_udisks.update(disk_from_df)
+ disk_from_df.update(disk_from_udisks)
return sorted(disks, key=lambda disk: disk['device'])
@@ -138,7 +144,7 @@ def _get_disks_from_df():
disks = []
for line in output.splitlines()[1:]:
parts = line.split(maxsplit=6)
- keys = ('device', 'file_system_type', 'size', 'used', 'free',
+ keys = ('device', 'filesystem_type', 'size', 'used', 'free',
'percent_used', 'mount_point')
disk = dict(zip(keys, parts))
disk['percent_used'] = int(disk['percent_used'].rstrip('%'))
@@ -148,6 +154,8 @@ def _get_disks_from_df():
disk['size_str'] = format_bytes(disk['size'])
disk['used_str'] = format_bytes(disk['used'])
disk['free_str'] = format_bytes(disk['free'])
+ disk['label'] = None
+ disk['is_removable'] = None
disks.append(disk)
return disks
@@ -286,3 +294,54 @@ def setup(helper, old_version=None):
expand_partition(root_device)
except ActionError:
pass
+
+
+def warn_about_low_disk_space(request):
+ """Warn about insufficient space on root partition."""
+ from plinth.notification import Notification
+
+ try:
+ root_info = get_disk_info('/')
+ except PlinthError as exception:
+ logger.exception('Error getting information about root partition: %s',
+ exception)
+ return
+
+ show = False
+ if root_info['percent_used'] > 90 or root_info['free_gib'] < 1:
+ severity = 'error'
+ show = True
+ elif root_info['percent_used'] > 75 or root_info['free_gib'] < 2:
+ severity = 'warning'
+ show = True
+
+ if not show:
+ try:
+ Notification.get('storage-low-disk-space').delete()
+ except KeyError:
+ pass
+ else:
+ # Translators: xgettext:no-python-format
+ message = ugettext_noop(
+ 'Low space on system partition: {percent_used}% used, '
+ '{free_space} free.')
+ title = ugettext_noop('Low disk space')
+ data = {
+ 'app_icon': 'fa-hdd-o',
+ 'app_name': ugettext_noop('Storage'),
+ 'percent_used': root_info['percent_used'],
+ 'free_space': format_bytes(root_info['free_bytes'])
+ }
+ actions = [{
+ 'type': 'link',
+ 'class': 'primary',
+ 'text': 'Go to {app_name}',
+ 'url': 'storage:index'
+ }, {
+ 'type': 'dismiss'
+ }]
+ Notification.update_or_create(id='storage-low-disk-space',
+ app_id='storage', severity=severity,
+ title=title, message=message,
+ actions=actions, data=data,
+ group='admin')
diff --git a/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service b/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service
index 99dfb5f69..2598ba53f 100644
--- a/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service
+++ b/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service
@@ -23,7 +23,6 @@ Documentation=man:udiskie(1)
ExecStart=/usr/bin/udiskie
LockPersonality=yes
PrivateTmp=yes
-PrivateUsers=yes
ProtectControlGroups=yes
ProtectHome=yes
ProtectKernelLogs=yes
diff --git a/plinth/modules/storage/views.py b/plinth/modules/storage/views.py
index 880ee1b2e..c3c0b2fb6 100644
--- a/plinth/modules/storage/views.py
+++ b/plinth/modules/storage/views.py
@@ -30,11 +30,9 @@ from django.utils.translation import ugettext as _
from django.views.decorators.http import require_POST
from plinth import actions, views
-from plinth.errors import PlinthError
from plinth.modules import storage
-from plinth.utils import format_lazy, is_user_admin
-from . import get_disk_info, get_error_message
+from . import get_error_message
logger = logging.getLogger(__name__)
@@ -48,11 +46,6 @@ class StorageAppView(views.AppView):
template_name = 'storage.html'
show_status_block = False
- def render_to_response(self, context, **response_kwargs):
- """Add disk space warning to the view."""
- warn_about_low_disk_space(self.request)
- return super().render_to_response(context, **response_kwargs)
-
def get_context_data(self, *args, **kwargs):
"""Return template context data."""
context = super().get_context_data(*args, **kwargs)
@@ -98,31 +91,6 @@ def expand_partition(request, device):
messages.success(request, _('Partition expanded successfully.'))
-def warn_about_low_disk_space(request):
- """Warn about insufficient space on root partition."""
- if not is_user_admin(request, cached=True):
- return
-
- try:
- root_info = get_disk_info('/')
- except PlinthError as exception:
- logger.exception('Error getting information about root partition: %s',
- exception)
- return
-
- message = format_lazy(
- # Translators: xgettext:no-python-format
- _('Warning: Low space on system partition ({percent_used}% used, '
- '{free_space} free).'),
- percent_used=root_info['percent_used'],
- free_space=storage.format_bytes(root_info['free_bytes']))
-
- if root_info['percent_used'] > 90 or root_info['free_gib'] < 1:
- messages.error(request, message)
- elif root_info['percent_used'] > 75 or root_info['free_gib'] < 2:
- messages.warning(request, message)
-
-
@require_POST
def eject(request, device_path):
"""Eject a device, given its path.
diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py
index 9fcfb5d22..4bf593a10 100644
--- a/plinth/modules/upgrades/__init__.py
+++ b/plinth/modules/upgrades/__init__.py
@@ -19,7 +19,9 @@ FreedomBox app for upgrades.
"""
from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ugettext_noop
+import plinth
from plinth import actions
from plinth import app as app_module
from plinth import menu
@@ -55,6 +57,37 @@ class UpgradesApp(app_module.App):
'upgrades:index', parent_url_name='system')
self.add(menu_item)
+ self._show_new_release_notification()
+
+ def _show_new_release_notification(self):
+ """When upgraded to new release, show a notification."""
+ from plinth.notification import Notification
+ try:
+ note = Notification.get('upgrades-new-release')
+ if note.data['version'] == plinth.__version__:
+ # User already has notification for update to this version. It
+ # may be dismissed or not yet dismissed
+ return
+
+ # User currently has a notification for an older version, update.
+ dismiss = False
+ except KeyError:
+ # Don't show notification for the first version user runs, create
+ # but don't show it.
+ dismiss = True
+
+ data = {
+ 'version': plinth.__version__,
+ 'app_name': 'Update',
+ 'app_icon': 'fa-refresh'
+ }
+ title = ugettext_noop('FreedomBox Updated')
+ note = Notification.update_or_create(
+ id='upgrades-new-release', app_id='upgrades', severity='info',
+ title=title, body_template='upgrades-new-release.html', data=data,
+ group='admin')
+ note.dismiss(should_dismiss=dismiss)
+
def init():
"""Initialize the module."""
diff --git a/plinth/modules/upgrades/data/lib/systemd/system/freedombox-setup-repositories.service b/plinth/modules/upgrades/data/lib/systemd/system/freedombox-setup-repositories.service
index 512b718d4..7a12f7cb2 100644
--- a/plinth/modules/upgrades/data/lib/systemd/system/freedombox-setup-repositories.service
+++ b/plinth/modules/upgrades/data/lib/systemd/system/freedombox-setup-repositories.service
@@ -24,7 +24,6 @@ Type=oneshot
LockPersonality=yes
PrivateDevices=yes
PrivateTmp=yes
-PrivateUsers=yes
ProtectControlGroups=yes
ProtectKernelLogs=yes
ProtectKernelModules=yes
diff --git a/plinth/modules/upgrades/templates/upgrades-new-release.html b/plinth/modules/upgrades/templates/upgrades-new-release.html
new file mode 100644
index 000000000..bec74ed88
--- /dev/null
+++ b/plinth/modules/upgrades/templates/upgrades-new-release.html
@@ -0,0 +1,39 @@
+{% comment %}
+#
+# This file is part of FreedomBox.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see