diff --git a/actions/packages b/actions/packages index 996450141..48c8e8382 100755 --- a/actions/packages +++ b/actions/packages @@ -131,7 +131,7 @@ def _assert_managed_packages(module, packages): app = cls() components = app.get_components_of_type(Packages) for component in components: - managed_packages += component.packages + managed_packages += component.possible_packages for package in packages: assert package in managed_packages diff --git a/actions/upgrades b/actions/upgrades index 9aa3f8c3c..80e186940 100755 --- a/actions/upgrades +++ b/actions/upgrades @@ -50,6 +50,12 @@ Explanation: matrix-synapse >= 1.47.0-2 requires python3-frozendict >= 1.2-3 Package: python3-frozendict Pin: release a=bullseye-backports Pin-Priority: 500 + +Explanation: matrix-synapse >= 1.55.0-1 requires +Explanation: python3-typing-extensions >= 3.10 +Package: python3-typing-extensions +Pin: release a=bullseye-backports +Pin-Priority: 500 ''' DIST_UPGRADE_OBSOLETE_PACKAGES: List[str] = [] diff --git a/debian/changelog b/debian/changelog index 3e6c107af..c3eff8661 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,52 @@ +freedombox (22.9) unstable; urgency=medium + + [ abidin toumi ] + * Added translation using Weblate (Arabic) + * Translated using Weblate (Arabic) + + [ ikmaak ] + * Translated using Weblate (German) + * Translated using Weblate (Dutch) + + [ Oğuz Ersen ] + * Translated using Weblate (Turkish) + + [ Jiří Podhorecký ] + * Translated using Weblate (Czech) + + [ Benedek Nagy ] + * Translated using Weblate (Hungarian) + * plinth: Add forum to footer + + [ 109247019824 ] + * Translated using Weblate (Bulgarian) + + [ Coucouf ] + * Translated using Weblate (French) + + [ Paul Lettich ] + * Translated using Weblate (German) + + [ James Valleroy ] + * package: Add package expressions + * package: Use package expressions in Packages component + * package: Fail diagnostic when not able to resolve + * minetest: Allow alternate name for 3d armor mod + * package: Fix comment and type annotations + * upgrades: Use python3-typing-extensions from bullseye-backports + * upgrades: Split Explanation line + * locale: Update translation strings + * doc: Fetch latest manual + + [ Sunil Mohan Adapa ] + * package: Update package expression API and fix regressions + + [ Aurélien Couderc ] + * Fix description of the validation rule for calibre library names so it + actually matches the pattern + + -- James Valleroy Mon, 11 Apr 2022 20:29:12 -0400 + freedombox (22.8~bpo11+1) bullseye-backports; urgency=medium * Rebuild for bullseye-backports. diff --git a/doc/manual/en/Email.raw.wiki b/doc/manual/en/Email.raw.wiki index eca321982..2905296fd 100644 --- a/doc/manual/en/Email.raw.wiki +++ b/doc/manual/en/Email.raw.wiki @@ -2,7 +2,7 @@ #language en ##TAG:TRANSLATION-HEADER-START -~- [[FreedomBox/Manual/Email|English]] - [[DebianWiki/EditorGuide#translation|(+)]] -~ +~- [[FreedomBox/Manual/Email|English]] - [[es/FreedomBox/Manual/Email|Spanish]] - [[DebianWiki/EditorGuide#translation|(+)]] -~ ##TAG:TRANSLATION-HEADER-END <> @@ -175,7 +175,7 @@ Open a secure shell connection to your !FreedomBox. Type `sudo journalctl -b -o This is because Postfix was not aware of the email domain. To fix that, 1. Ensure !FreedomBox is aware of your internet domain name. If you don't have a domain name, skip to step 2. - * Log into the Plinth web interface as an admin. + * Log into the !FreedomBox web interface as an admin. * Go to ''System → Name Services'' * Add a domain name if you haven't done so. @@ -207,10 +207,6 @@ Please provide your feedback on usage on [[https://discuss.freedombox.org/t/emai [[https://salsa.debian.org/freedombox-team/freedombox/-/merge_requests/2077|This salsa issue]] is driving the implementation. Feel free to join discussions and provide technical ideas. -## END_INCLUDE - -Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. - === External links === * Upstream websites: @@ -218,6 +214,10 @@ Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|man * https://www.dovecot.org * https://www.rspamd.com +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + <> ---- diff --git a/doc/manual/en/Ikiwiki.raw.wiki b/doc/manual/en/Ikiwiki.raw.wiki index 560f87482..8b8efce01 100644 --- a/doc/manual/en/Ikiwiki.raw.wiki +++ b/doc/manual/en/Ikiwiki.raw.wiki @@ -50,6 +50,11 @@ To login as a !FreedomBox user, go to the wiki/blog's login page and select the 7. Login as the new admin user using "Login with HTTP auth". +=== Avoiding Spam === + +By default, every wiki page also has a "Discussion" page, which can be edited anonymously, without logging in. To avoid spam, you may want to disable the Discussion feature all together, by unchecking the "enable Discussion pages?" option in the setup. + + === Theming === 1. Login to the site, using the admin account that was specified when the site was created. diff --git a/doc/manual/en/PineA64+.raw.wiki b/doc/manual/en/PineA64+.raw.wiki index 04403ba89..4df0579d3 100644 --- a/doc/manual/en/PineA64+.raw.wiki +++ b/doc/manual/en/PineA64+.raw.wiki @@ -2,7 +2,7 @@ {{attachment:pine64-plus.jpg|Pine 64+|width=640,height=579}} -[[https://www.pine64.org/?page_id=1194|Pine A64+]] is an affordable single board computer with good performance. +[[https://www.pine64.org/devices/single-board-computers/pine-a64/|Pine A64+]] is an affordable single board computer with good performance. '''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki index eeb77db26..6df41386d 100644 --- a/doc/manual/en/ReleaseNotes.raw.wiki +++ b/doc/manual/en/ReleaseNotes.raw.wiki @@ -8,6 +8,20 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 22.9 (2022-04-11) == + +=== Highlights === + + * minetest: Allow alternate name for 3d armor mod + * upgrades: Use python3-typing-extensions from bullseye-backports + +=== Other Changes === + + * calibre: Fix description of allowable library names + * locale: Add new Arabic translation + * locale: Update translations for Arabic, Bulgarian, Czech, Dutch, French, German, Hungarian, Turkish + * plinth: Add forum link to footer + == FreedomBox 22.8 (2022-03-28) == === Highlights === diff --git a/doc/manual/en/TinyTinyRSS.raw.wiki b/doc/manual/en/TinyTinyRSS.raw.wiki index 2150da667..821e5f609 100644 --- a/doc/manual/en/TinyTinyRSS.raw.wiki +++ b/doc/manual/en/TinyTinyRSS.raw.wiki @@ -85,6 +85,55 @@ To configure, first install the application, then in the setting page, set URL a {{attachment:ttrssapp5.png|Tiny Tiny RSS|width=288}} +=== Subscribing to popular platforms === + +==== YouTube ==== + +1. On your computer open a text editor and copy-paste the following line: +{{{https://www.youtube.com/feeds/videos.xml?channel_id=}}} + +2. Open a video of the channel you would like to subscribe to. In this example we will subscribe to the !FreedomBox Foundation's !YouTube channel. + +3. Under the video, right click on the channel's name, and select '''Copy Link'''. You have to make sure you copy the channel's URL this way, as there many channels with custom URL IDs. Copying the link from here will give you the uncustomized ID of the channel. + +{{attachment:copy_link_youtube.png|Tiny Tiny RSS|width=960}} + +4. Paste this link into your text file as well. + +5. Now that you have both links, you should select the text which comes after {{{/channel/}}}, and place it next to the first link as shown in the pictures below. + +{{attachment:paste_link_youtube.png|Tiny Tiny RSS|width=800}} +---- + +{{attachment:valid_youtube_rss_feed.png|Tiny Tiny RSS|width=800}} + +6. Now you can use this link as a valid RSS feed. + +{{attachment:youtube_final_step.png|Tiny Tiny RSS|width=800}} + +In addition, you can make videos display inside Tiny Tiny RSS: + +1. Select "Preferences" from the Actions dropdown. + +2. Select Plugins + +3. Turn on the plugin titled "af_youtube_embed" + +4. Click on "Enable selected plugins" + +Please note, that it is highly reccommended that you use one of the privacy extensions, like [[https://ublockorigin.com//|uBlockOrigin]] to avoid advertisements and intrusive trackers. + + +==== Reddit ==== + +1. Take the link of the subreddit you want to subscribe to + +2. Add {{{.rss}}} after the subreddit's url. + +For example the subreddit for !FreedomBox is {{{https://www.reddit.com/r/Freedombox/}}}, and {{{https://www.reddit.com/r/Freedombox/.rss}}} will give you an RSS feed. + +{{attachment:subscribe_to_subreddit.png|Tiny Tiny RSS|width=800}} + === External links === * Website: https://tt-rss.org diff --git a/doc/manual/en/images/copy_link_youtube.png b/doc/manual/en/images/copy_link_youtube.png new file mode 100644 index 000000000..c6eb12527 Binary files /dev/null and b/doc/manual/en/images/copy_link_youtube.png differ diff --git a/doc/manual/en/images/paste_link_youtube.png b/doc/manual/en/images/paste_link_youtube.png new file mode 100644 index 000000000..707d76abc Binary files /dev/null and b/doc/manual/en/images/paste_link_youtube.png differ diff --git a/doc/manual/en/images/subscribe_to_subreddit.png b/doc/manual/en/images/subscribe_to_subreddit.png new file mode 100644 index 000000000..bed8b8d33 Binary files /dev/null and b/doc/manual/en/images/subscribe_to_subreddit.png differ diff --git a/doc/manual/en/images/valid_youtube_rss_feed.png b/doc/manual/en/images/valid_youtube_rss_feed.png new file mode 100644 index 000000000..97807468d Binary files /dev/null and b/doc/manual/en/images/valid_youtube_rss_feed.png differ diff --git a/doc/manual/en/images/youtube_final_step.png b/doc/manual/en/images/youtube_final_step.png new file mode 100644 index 000000000..98141861b Binary files /dev/null and b/doc/manual/en/images/youtube_final_step.png differ diff --git a/doc/manual/es/Email.raw.wiki b/doc/manual/es/Email.raw.wiki new file mode 100644 index 000000000..b5849e8e7 --- /dev/null +++ b/doc/manual/es/Email.raw.wiki @@ -0,0 +1,222 @@ +#language es + +<> + +<> + +## BEGIN_INCLUDE + +== Postfix/Dovecot/Rspamd (Servidor de correo electrónico) == + +'''Disponible desde''': 22.6 + +=== Acerca del servidor de correo electrónico === + +!FreedomBox proporciona una solución completa para servir correo electrónico empleando Postfix, Dovecot, y Rspamd. Postfix envía y recibe correo. Dovecot permite a los clientes de correo acceder a tu buzón empleando los protocolos IMAP y POP3. Rspamd trata el correo indeseado. Esta solución ofrece las siguientes funcionalidades: + + * Enviar y recibir correo electrónico + * Interoperar con otros servidores de correo electrónico + * Evitar mediante SPF que otros suplanten tu dirección de correo + * Firmar todo to correo saliente mediante DKIM + * Recibir informes de intentos de suplantación mediante DMARC + * Acceder al correo fácilmente + * Acceder al correo desde cualquier dispositivo mediante el lector de correo web [[FreedomBox/Manual/Roundcube|Roundcube]] + * Configurar clientes de correo sólo con introducir una dirección de correo electrónico y una contraseña + * Autoconfiguración con clientes que usen el esquema ''autoconf'', como Thunderbird + * Autoconfiguración con clientes que usen el esquema ''DNS'' + * Guardar los mensajes en el servidor y acceder a ellos con múltiples clientes mediante IMAP + * Descargar los mensajes a un dispositivo local mediante POP3 + * Direcciones de correo electrónico para todos tus usuarios + * Cada usuario registrado en tu !FreedomBox automaticamente obtiene una dirección de correo del tipo usuario@mi.dominio + * Cada usuario registrado obtiene psedónimos ilimitados automaticamente. usuario+proposito@mi.dominio apunta a usuario@mi.dominio + * Los usuarios pueden añadir pseudónimos por sí mismos. fulano@mi.dominio puede apuntar a usuario@mi.dominio + * Muchos pseudónimos habituales como info@mi.dominio y postmaster@mi.dominio apuntan a la dirección de correo del administrador. + * Filtrar mensajes en el servidor empleando filtros sieve + * Configurar contestadores automáticos (por ejemplo, para vacaciones) que funcionan aunque no estés usando tu cliente de correo + * Reenviar a direcciones externas/internas, guardar ficheros en carpetas, eliminar, etc. + * Administrar filtros en el servidor desde clientes de correo (por ejemplo, Thunderbird con la extensión sieve) + * Configuración automatica de certificados TLS obtenidos de Let's Encrypt + * Todos los servicios (SMTP, IMAP, POP3 y `manageseive`) vienen configurados para usar TLS/STARTTLS + * Los certificados se renuevan aproximadamente cada trimestre + * Con cada renovación, se instalan los certificados y se reinician los servicios + * Copias de respaldo y restauración de correos, pseudónimos y configuración + * Agendar respaldos periódicos + * Escanear correo entrante buscando correo indeseado + * Comprueba el mensaje contra varias listas negras + * Mueve el correo indeseado a la carpeta de basura (Junk) + * Marca el mensaje cuando la puntuación de indeseado alcanza un umbral + * Rechaza el mensaje a la recepción cuando la puntuación de indeseado alcanza un umbral más alto + * Entiende decisiones respecto al correo indeseado mediante cabeceras extendidas añadidas al mensaje + * Ver detalles del procesamiento de correo indeseado y administrar ajustes mediante la interfaz web de Rspamd + * Los administradores pueden ingresar a la interfaz web para correo indeseado mediante el ingreso único de !FreedomBox + * Enseñar a distinguir correo indeseado mediante mensajes de ejemplo + +=== Prerequisitos === + + * Deber poseer un dominio donde configurar registros DNS avanzados (MX, TXT y SRV). Se puede obtener un dominio alquilándolo a un registro o pagando a un proveedor de servicio de DNS dinámico (como `freedns.afraid.org`). De momento los subdominios gratuitos que proporciona el servicio de DNS dinámico de la !FreedomBox Foundation en `ddns.freedombox.org` '''no''' sirven. Hay planes a futuro para soportarlos. + + * Tu ISP o proveedor de nube debe permitir el tráfico de tu conexión a internet hacia servidores de correo externos. No pocos bloquean el tráfico saliente por el puerto 25. Esto impedirá al servidor enviar correos a direcciones externas. Muchos de estos proveedores te permiten solicitar que se desactive esta restricción. Para probar si esto es un problema en tu conexión a internet ejecuta la siguiente orden (deberías ver algo así): + +{{{ +usuario@miservidor:~$ nc freedombox.org 25 +220 mx.sflc.info ESMTP Postfix (Debian/GNU) +^C +}}} + +=== Instalar === + +Ve al menú ''Apps''. + +Si ya está instalado, se mostrará el Servidor de Correo '''encima''' de la línea ''Deshabilitadas''. Probablemente no sea tu caso, pero si lo es salta este paso y vé al siguiente. + + {{attachment:FreedomBox/Manual/Email/InstalledEmailServerInAppsMenu_en_V01.png|Servidor de correo habilitado|width=400}} + + +Si el Servidor de Correo se muestra entre los iconos '''debajo''' de la línea ''Deshabilitadas'' es que no está instalado todavía o está deshabilitado. Este es el estado habitual de partida. + + {{attachment:FreedomBox/Manual/Email/EmailServerAmongAppsMenu_en_V01.png|Servidor de correo deshabilitado|width=400}} + + +Seleccionando la app ''Postfix/Dovecot'' llegas a su página. Si no está instalado se te mostrará el botón ''Instalar''. Haz clic en él. + + {{attachment:FreedomBox/Manual/Email/InstallButtonInAppPage_en_V01.png|Página del servidor de correo|height=300}} + +Esto desencadenará el proceso de instalación. + + {{attachment:FreedomBox/Manual/Email/Installing_en_V01.png |Instalación instalando paquetes|height=200}} + {{attachment:FreedomBox/Manual/Email/InstallingPostInstall_en_V01.png|Instalación ejecutando postprocesos|height=200}} + +Tras instalar y configurar todos los paquetes de software !FreedomBox te dirá que la instalación tuvo éxito y la página de la app mostrará contenido adicional como información de puertos, formulario de configuración y ajustes de DNS. + + {{attachment:FreedomBox/Manual/Email/AppJustInstalled_en_V01.png|Página del servidor de correo recién instalado|width=300}} + + {{attachment:FreedomBox/Manual/Email/emailserverDNS_Records_en_V01.png|Página del servidor de correo recién instalado|width=300}} + +La próxima vez que vayas al menú ''Apps'' mostrará la app habilitada (por encima de la línea ''deshabilitadas''). + +=== Configurar el servidor de correo === + + 1. Si quieres enviar y recibir correo a/de usuarios de otros servidores en Internet necesitas un dominio en condiciones. Como se explica en la sección Prerequisitos, o alquilas uno a un registro o pagas a un proveedor de servicio de DNS dinámico. Si alquilaste un dominio a un registro añádelo en la página Sistema → Configuración. Si es un DNS dinámico configuralo en la página Sistema → Cliente DNS dinámico. + + 1. Cuando se añade un dominio a !FreedomBox se obtiene automáticamente un certificado TLS para dicho dominio. Este certificado se emplea entonces para comunicaciones cifradas con todos los servicios configurados con el dominio. Vé a la sección Sistema, página de Let's Encrypt y verifica que el certificado se haya obtenido con éxito para el dominio. Si no, haz clic en el botón Obtener y resuelve los problemas que surjan. Para obtener el certificado tu !FreedomBox tiene que ser accesible desde Internet y tu router, si lo hay, tiene que estar configurado para redirigirle el tráfico de los puertos web (80 y 443). + + 1. Tras añadir un dominio a !FreedomBox, visita la página del Servidor de Correo. En la sección Configuración selecciona el dominio configurado como dominio primario para enviar y recibir correo electrónico. + + 1. Tras establecer el dominio primario aparecerá información en la sección Registros DNS de la página. Estos son los registros que hay que ajustar manualmente en el dominio. Ingresa el interfaz web de tu proveedor de DNS para administrar los registros DNS de tu dominio. Introduce allí todas las entradas que muestra la tabla de registros DNS. + + * La longitud del valor del registro DNS para DKIM excede los 255 caracteres. Típicamente hay que romperlo en una serie de valores entrecomillados con comillas dobles y separados por espacios. Esto es lo que hace !FreedomBox. Si tu proveedor de DNS tiene un modo diferente para introducir estos valores, consulta su documentación. + + * Todos los valores se suponen "bajo" el dominio que estás ajustando pero se puede proporcionar un valor autocontenido. Por ejemplo, el valor "Dominio" de "dkim._domainkey" significa "dkim._domainkey.mi.dominio.". Usa este formato si fuera necesario. + + 1. Instala la app [[es/FreedomBox/Manual/Roundcube|Roundcube]] si quieres acceder a los mensajes mediante una interfaz web. En la configuración de Roundcube asegurate de habilitar la opción de "Usar solo el servidor de correo local". Esto oculta el campo del servidor de la página de login y hace que la app funcione sin más configuración. + +=== Usar el servidor de correo === + +Como usuario puedes: + + * Empezar a enviar y recibir correos electrónicos empleando la mayoría de clientes de correo. + * Crear y/o administrar tus pseudónimos en la solapa ''Pseudónimos'' de la página ''Servidor de correo'' del interfaz web de !FreedomBox. + * Administrar filtros en el servidor empleando sieve. + +Una vez que un administrador ha establecido la configuración de [[es/FreedomBox/Manual/Roundcube|RoundCube]] para que funcione con el servidor de correo de !FreedomBox puedes ingresar a !RoundCube empezar a enviar y recibir correos electrónicos sin necesitar más clientes de correo. Usa las mismas credenciales para ingresar a !RoundCube que usas para ingresar al interfaz web de !FreedomBox. + +==== Mediante el cliente web de correo de FreedomBox (RoundCube) ==== + +!FreedomBox proporciona el cliente de correo electrónico [[es/FreedomBox/Manual/Roundcube|RoundCube]] como app opcional. Si se ha instalado !RoundCube antes que el servidor de correo hay una opción de hacerlo funcionar con el servidor de correo de !FreedomBox's. Una vez ambas apps estén instaladas, tienes una instalación de webmail completa. + +==== Mediante Thunderbird ==== + +Abre Thunderbird. Ve a ''menú de hamburguesa → Nuevo → Cuenta de correo existente''. Introduce un nombre, la dirección de correo de !FreedomBox, y tu contraseña de !FreedomBox. Haz clic en Continuar. + +!FreedomBox implementa el endpoint de configuración automática de cuenta (AAC, Automatic Account Configuration) del que hará uso Thunderbird. + + {{attachment:FreedomBox/Manual/Email/ThunderbirdAutoconfigSetup.png|Configuración de Thunderbird|width=300}} + +==== Configuración manual ==== + +Dile a tu cliente de correo electrónico que use estos parámetros: + + * '''Username:''' ''tu dirección de correo electrónico de !FreedomBox o solo la parte del nombre de usuario'' + * '''Incoming mail:''' IMAPS, puerto 993, SSL forzoso, autenticación normal mediante contraseña + * '''Outgoing mail:''' SMTPS, puerto 465, SSL forzoso, autenticación normal mediante contraseña + +También soporta STARTTLS en el puerto de envío SMTP. + + {{attachment:FreedomBox/Manual/Email/EmailServerClientConfig.png|Parámetros para el cliente de correo|width=300}} + +==== Pseudónimos de correo electrónico ==== + +Los pseudónimos de correo electrónico son útiles para la privacidad. Ahora, como usuario del correo electrónico de !FreedomBox (no necesitas ser administrador) puedes tener direcciones de correo electrónico bajo tu control, ya sean temporales de usar y tirar o específicas. Puedes listar, crear y eliminar pseudónimos de correo electrónico desde el acceso directo ''Mis pseudónimos'' que hay en la página principal de !FreedomBox. + +{{attachment:FreedomBox/Manual/Email/EmailServerAliasesTile.png|Página de administración de pseudónimos|width=500}} + +{{attachment:FreedomBox/Manual/Email/EmailServerAliasesPage.png|Página de administración de pseudónimos|width=500}} + +Los mensajes dirigidos a usuarios o pseudónimos inexistentes o a usuarios de sistema se rechazarán a nivel de conexión SMTP. + +==== Pseudónimos de correo electrónico automáticos ==== + +Además de permitir a los usuarios crear sus propios pseudónimos !FreedomBox reconoce pseudónimos automáticos adjuntando una cadena a tu nombre de usuario mediante un signo '+'. Si tu dirección de correo es minombre@mi.dominio, entonces todos los minombre+cualquiercosa@mi.dominio se toman como pseudónimos automáticos de tu dirección. Por ejemplo, al subscribirte a una lista de correo, llamémosla foolist, puedes dar tu dirección de correo como minombre+foolist@mi.dominio. Los mensajes que lleguen a esa dirección acabarán en el buzón de minombre@mi.dominio. Esto es útil para organizar el correo y controlar el correo indeseado. + +=== Avanzado: Resolución de problemas === + +==== ¿Cómo depuro un fallo en un action script? ¿Cómo accedo al log del sistema? ==== + +Abre una conexión SSH a tu !FreedomBox. Teclea `sudo journalctl -b -o short-monotonic --no-pager` + + * `-b` muestra entradas desde el arranque + * `-o short-monotonic` usa formato corto para las marcas tiempo + * `--no-pager` facilita el copia-pega + +==== ¿Por qué dice el servidor "relay access denied"? ==== + +Porque Postfix no reconoce el dominio del correo. Para arreglarlo + + 1. Asegurate de que !FreedomBox conoce el nombre del dominio en internet. Si no tienes un nombre de dominio salta al paso 2. + * Ingresa al interfaz web de !FreedomBox como administrador. + * Ve a ''Sistema → Servicios de nombres'' + * Añade un nombre de dominio, si no lo has hecho ya. + +==== No puedo enviar nada desde Roundcube. Dice "SMTP Error (250): Authentication failed". ==== + +Causa raíz: Roundcube intentó enviar tu mensaje desde una conexión sin cifrar, pero los puertos 465 y 587 requieren cifrados SSL y STARTTLS respectivamente. + +Soluciones: + +Para !RoundCube, edita el fichero `/etc/roundcube/config.inc.php` para que use el puerto 25 (sin cifrar). Ajústalo así: +{{{ +$config['smtp_server'] = 'smtp://localhost'; +$config['smtp_port'] = 25; +}}} + +Notas: + * Accede a tu !FreedomBox mediante SSH. + * Puedes editar el fichero con el editor de texto `nano`. El fichero tiene el acceso restringido, así que tienes que acceder como superusuario: `sudo nano /etc/roundcube/config.inc.php`. + +Si empleas otro cliente de correo electrónico como Thunderbird, fuerza que use SSL o STARTTLS. + +=== Comentar tu experiencia === + +Por favor, comenta tu experiencia usando el servidor de correo en [[https://discuss.freedombox.org/t/email-server-progress/1330|esta conversación del foro]]. + +=== Información y debate técnicos === + +El servidor de correo de !FreedomBox se presentó en la Debconf21. Las [[attachment:FreedomBox/Manual/Email/Debconf21-20210808.draft.odp|Diapositivas]] y la [[https://meetings-archive.debian.net/pub/debian-meetings/2021/DebConf21/debconf21-175-debian-outreach-projects-google-summer-of-code-2021.webm|grabación en vídeo]] están disponibles por cortesía del equipo Outreach de Debian. + +[[https://salsa.debian.org/freedombox-team/freedombox/-/merge_requests/2077|Este asunto en Salsa]] dirige la implementación. Siéntete libre de participar en los debates y proporcionar ideas técnicas. + +=== Enlaces externos === + + * Sitios web de origen: + * http://www.postfix.org + * https://www.dovecot.org + * https://www.rspamd.com + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/PineA64+.raw.wiki b/doc/manual/es/PineA64+.raw.wiki index 04403ba89..4df0579d3 100644 --- a/doc/manual/es/PineA64+.raw.wiki +++ b/doc/manual/es/PineA64+.raw.wiki @@ -2,7 +2,7 @@ {{attachment:pine64-plus.jpg|Pine 64+|width=640,height=579}} -[[https://www.pine64.org/?page_id=1194|Pine A64+]] is an affordable single board computer with good performance. +[[https://www.pine64.org/devices/single-board-computers/pine-a64/|Pine A64+]] is an affordable single board computer with good performance. '''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki index eeb77db26..6df41386d 100644 --- a/doc/manual/es/ReleaseNotes.raw.wiki +++ b/doc/manual/es/ReleaseNotes.raw.wiki @@ -8,6 +8,20 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 22.9 (2022-04-11) == + +=== Highlights === + + * minetest: Allow alternate name for 3d armor mod + * upgrades: Use python3-typing-extensions from bullseye-backports + +=== Other Changes === + + * calibre: Fix description of allowable library names + * locale: Add new Arabic translation + * locale: Update translations for Arabic, Bulgarian, Czech, Dutch, French, German, Hungarian, Turkish + * plinth: Add forum link to footer + == FreedomBox 22.8 (2022-03-28) == === Highlights === diff --git a/doc/manual/es/TinyTinyRSS.raw.wiki b/doc/manual/es/TinyTinyRSS.raw.wiki index 9f07d19fa..ccbe15552 100644 --- a/doc/manual/es/TinyTinyRSS.raw.wiki +++ b/doc/manual/es/TinyTinyRSS.raw.wiki @@ -81,6 +81,53 @@ Para configurarla, primero instálala y entonces en la página de configuración {{attachment:ttrssapp4.png|Tiny Tiny RSS|width=288}} {{attachment:ttrssapp5.png|Tiny Tiny RSS|width=288}} +=== Suscribirse a plataformas populares === + +==== YouTube ==== + +1. Abre un editor de texto en tu ordenador y copia la siguiente línea: +{{{https://www.youtube.com/feeds/videos.xml?channel_id=}}} + +2. Abre un video del canal al que quieres suscribirte. En este ejemplo nos suscribiremos al canal de la !FreedomBox Foundation en !Youtube. + +3. Bajo el video haz clic con el botón derecho sobre el nombre del canal y selecciona '''Copiar Enlace'''. Tienes que asegurarte de copiar +así la URL del canal porque hay muchos canales con URL personalizada y así obtienes la URL con su identificador genérico. +{{attachment:FreedomBox/Manual/TinyTinyRSS/copy_link_youtube.png|Tiny Tiny RSS|width=960}} + +4. Pega también este enlace en tu fichero de texto. + +5. Con ambos enlaces selecciona el texto que viene detrás de {{{/channel/}}} y ponlo junto al primer enlace como se muestra en las imágenes: +{{attachment:FreedomBox/Manual/TinyTinyRSS/paste_link_youtube.png|Tiny Tiny RSS|width=800}} +---- + +{{attachment:FreedomBox/Manual/TinyTinyRSS/valid_youtube_rss_feed.png|Tiny Tiny RSS|width=800}} + +6. Ahora puedes usar este enlace como un feed RSS válido. + +{{attachment:FreedomBox/Manual/TinyTinyRSS/youtube_final_step.png|Tiny Tiny RSS|width=800}} + +Además puedes mostrar vídeos dentro de Tiny Tiny RSS: + +1. Selecciona "Preferencias" en el desplegable ''Acciones''. + +2. Selecciona Plugins + +3. Activa el plugin titulado "af_youtube_embed" + +4. Haz clic en "Habilitar los plugins seleccionados" + +Se recomienda encarecidamente usar alguna de las extensiones orientadas a la privacidad, como [[https://ublockorigin.com//|uBlockOrigin]] para evitar publicidad y rastreadores intrusivos. + + +==== Reddit ==== + +1. Toma el enlace del subreddit al que quieres suscribirte. + +2. Añade {{{.rss}}} detras de la URL del subreddit. + +Por ejemplo, el subreddit de !FreedomBox es {{{https://www.reddit.com/r/Freedombox/}}}, y {{{https://www.reddit.com/r/Freedombox/.rss}}} es su feed RSS. + +{{attachment:FreedomBox/Manual/TinyTinyRSS/subscribe_to_subreddit.png|Tiny Tiny RSS|width=800}} === Enlaces externos === diff --git a/doc/manual/es/freedombox-manual.raw.wiki b/doc/manual/es/freedombox-manual.raw.wiki index 15cf33344..9fe136c25 100644 --- a/doc/manual/es/freedombox-manual.raw.wiki +++ b/doc/manual/es/freedombox-manual.raw.wiki @@ -20,6 +20,7 @@ <> <> <> +<> <> <> <> diff --git a/doc/manual/es/images/AppJustInstalled_en_V01.png b/doc/manual/es/images/AppJustInstalled_en_V01.png new file mode 100644 index 000000000..aeb8ba134 Binary files /dev/null and b/doc/manual/es/images/AppJustInstalled_en_V01.png differ diff --git a/doc/manual/es/images/EmailServerAliasesPage.png b/doc/manual/es/images/EmailServerAliasesPage.png new file mode 100644 index 000000000..fa066f44b Binary files /dev/null and b/doc/manual/es/images/EmailServerAliasesPage.png differ diff --git a/doc/manual/es/images/EmailServerAliasesTile.png b/doc/manual/es/images/EmailServerAliasesTile.png new file mode 100644 index 000000000..b47644004 Binary files /dev/null and b/doc/manual/es/images/EmailServerAliasesTile.png differ diff --git a/doc/manual/es/images/EmailServerAmongAppsMenu_en_V01.png b/doc/manual/es/images/EmailServerAmongAppsMenu_en_V01.png new file mode 100644 index 000000000..5801fbc3a Binary files /dev/null and b/doc/manual/es/images/EmailServerAmongAppsMenu_en_V01.png differ diff --git a/doc/manual/es/images/EmailServerClientConfig.png b/doc/manual/es/images/EmailServerClientConfig.png new file mode 100644 index 000000000..1f1cf0eb4 Binary files /dev/null and b/doc/manual/es/images/EmailServerClientConfig.png differ diff --git a/doc/manual/es/images/InstallButtonInAppPage_en_V01.png b/doc/manual/es/images/InstallButtonInAppPage_en_V01.png new file mode 100644 index 000000000..7b4670864 Binary files /dev/null and b/doc/manual/es/images/InstallButtonInAppPage_en_V01.png differ diff --git a/doc/manual/es/images/InstalledEmailServerInAppsMenu_en_V01.png b/doc/manual/es/images/InstalledEmailServerInAppsMenu_en_V01.png new file mode 100644 index 000000000..19d95e168 Binary files /dev/null and b/doc/manual/es/images/InstalledEmailServerInAppsMenu_en_V01.png differ diff --git a/doc/manual/es/images/InstallingPostInstall_en_V01.png b/doc/manual/es/images/InstallingPostInstall_en_V01.png new file mode 100644 index 000000000..b08e606ea Binary files /dev/null and b/doc/manual/es/images/InstallingPostInstall_en_V01.png differ diff --git a/doc/manual/es/images/Installing_en_V01.png b/doc/manual/es/images/Installing_en_V01.png new file mode 100644 index 000000000..821900c5c Binary files /dev/null and b/doc/manual/es/images/Installing_en_V01.png differ diff --git a/doc/manual/es/images/ThunderbirdAutoconfigSetup.png b/doc/manual/es/images/ThunderbirdAutoconfigSetup.png new file mode 100644 index 000000000..b48153270 Binary files /dev/null and b/doc/manual/es/images/ThunderbirdAutoconfigSetup.png differ diff --git a/doc/manual/es/images/copy_link_youtube.png b/doc/manual/es/images/copy_link_youtube.png new file mode 100644 index 000000000..c6eb12527 Binary files /dev/null and b/doc/manual/es/images/copy_link_youtube.png differ diff --git a/doc/manual/es/images/emailserverDNS_Records_en_V01.png b/doc/manual/es/images/emailserverDNS_Records_en_V01.png new file mode 100644 index 000000000..cb02b4654 Binary files /dev/null and b/doc/manual/es/images/emailserverDNS_Records_en_V01.png differ diff --git a/doc/manual/es/images/paste_link_youtube.png b/doc/manual/es/images/paste_link_youtube.png new file mode 100644 index 000000000..707d76abc Binary files /dev/null and b/doc/manual/es/images/paste_link_youtube.png differ diff --git a/doc/manual/es/images/subscribe_to_subreddit.png b/doc/manual/es/images/subscribe_to_subreddit.png new file mode 100644 index 000000000..bed8b8d33 Binary files /dev/null and b/doc/manual/es/images/subscribe_to_subreddit.png differ diff --git a/doc/manual/es/images/valid_youtube_rss_feed.png b/doc/manual/es/images/valid_youtube_rss_feed.png new file mode 100644 index 000000000..97807468d Binary files /dev/null and b/doc/manual/es/images/valid_youtube_rss_feed.png differ diff --git a/doc/manual/es/images/youtube_final_step.png b/doc/manual/es/images/youtube_final_step.png new file mode 100644 index 000000000..98141861b Binary files /dev/null and b/doc/manual/es/images/youtube_final_step.png differ diff --git a/plinth/__init__.py b/plinth/__init__.py index 4fe18f750..b69f53abb 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -3,4 +3,4 @@ Package init file. """ -__version__ = '22.8' +__version__ = '22.9' diff --git a/plinth/errors.py b/plinth/errors.py index c6dd4cf36..cfd6746d4 100644 --- a/plinth/errors.py +++ b/plinth/errors.py @@ -25,3 +25,11 @@ class DomainNotRegisteredError(PlinthError): FreedomBox doesn't have a registered domain """ pass + + +class MissingPackageError(PlinthError): + """Package is not available to be installed at this time.""" + + def __init__(self, name): + self.name = name + super().__init__(self.name) diff --git a/plinth/locale/ar/LC_MESSAGES/django.po b/plinth/locale/ar/LC_MESSAGES/django.po new file mode 100644 index 000000000..182514174 --- /dev/null +++ b/plinth/locale/ar/LC_MESSAGES/django.po @@ -0,0 +1,7247 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" +"PO-Revision-Date: 2022-03-31 09:12+0000\n" +"Last-Translator: abidin toumi \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 4.12-dev\n" + +#: doc/dev/_templates/layout.html:11 +msgid "Page source" +msgstr "مصدر الصفحة" + +#: plinth/context_processors.py:23 plinth/views.py:84 +msgid "FreedomBox" +msgstr "" + +#: plinth/daemon.py:104 +#, python-brace-format +msgid "Service {service_name} is running" +msgstr "الخدمة {service_name} نشِطة" + +#: plinth/daemon.py:158 +#, python-brace-format +msgid "Listening on {kind} port {listen_address}:{port}" +msgstr "يستمع لمنفذ {kind} {listen_address}:{port}" + +#: plinth/daemon.py:162 +#, python-brace-format +msgid "Listening on {kind} port {port}" +msgstr "يستمع لمنفذ {kind} {port}" + +#: plinth/daemon.py:230 +#, python-brace-format +msgid "Connect to {host}:{port}" +msgstr "اتصل بـ {host}:{port}" + +#: plinth/daemon.py:232 +#, python-brace-format +msgid "Cannot connect to {host}:{port}" +msgstr "يتعذر الاتصال بـ {host}:{port}" + +#: plinth/forms.py:36 +msgid "Select a domain name to be used with this application" +msgstr "اختر اسم مجال لهذا التطبيق" + +#: plinth/forms.py:38 +msgid "" +"Warning! The application may not work properly if domain name is changed " +"later." +msgstr "تخذير! قد يَعطب التطبيق اذا غُيّر اسم المجال لاحقًا." + +#: plinth/forms.py:52 plinth/modules/coturn/forms.py:30 +#: plinth/modules/mumble/forms.py:21 +msgid "TLS domain" +msgstr "" + +#: plinth/forms.py:54 plinth/modules/coturn/forms.py:32 +#: plinth/modules/mumble/forms.py:23 +msgid "" +"Select a domain to use TLS with. If the list is empty, please configure at " +"least one domain with certificates." +msgstr "" + +#: plinth/forms.py:64 +msgid "Language" +msgstr "اللغة" + +#: plinth/forms.py:65 +msgid "Language to use for presenting this web interface" +msgstr "اللغة المستخدمة في واجهة الويب" + +#: plinth/forms.py:72 +msgid "Use the language preference set in the browser" +msgstr "استخدم لغة المتصفح" + +#: plinth/middleware.py:38 plinth/templates/setup.html:18 +msgid "Application installed." +msgstr "ثُبت التطبيق." + +#: plinth/middleware.py:43 +#, python-brace-format +msgid "Error installing application: {string} {details}" +msgstr "حدث خطأ أثناء تثبيت التطبيق: {string} {details}" + +#: plinth/middleware.py:47 +#, python-brace-format +msgid "Error installing application: {error}" +msgstr "خطأ أثناء تثبيت التطبيق: {error}" + +#: plinth/modules/apache/__init__.py:33 +msgid "Apache HTTP Server" +msgstr "" + +#: plinth/modules/apache/__init__.py:41 +msgid "Web Server" +msgstr "خادم ويب" + +#: plinth/modules/apache/__init__.py:47 +#, python-brace-format +msgid "{box_name} Web Interface (Plinth)" +msgstr "" + +#: plinth/modules/apache/components.py:122 +#, python-brace-format +msgid "Access URL {url} on tcp{kind}" +msgstr "" + +#: plinth/modules/apache/components.py:125 +#, python-brace-format +msgid "Access URL {url}" +msgstr "رابط النفاذ {url}" + +#: plinth/modules/avahi/__init__.py:26 +#, python-brace-format +msgid "" +"Service discovery allows other devices on the network to discover your " +"{box_name} and services running on it. It also allows {box_name} to " +"discover other devices and services running on your local network. Service " +"discovery is not essential and works only on internal networks. It may be " +"disabled to improve security especially when connecting to a hostile local " +"network." +msgstr "" + +#: plinth/modules/avahi/__init__.py:51 +msgid "Service Discovery" +msgstr "" + +#: plinth/modules/avahi/__init__.py:64 +msgid "Local Network Domain" +msgstr "" + +#: plinth/modules/backups/__init__.py:27 +msgid "Backups allows creating and managing backup archives." +msgstr "" + +#: plinth/modules/backups/__init__.py:50 plinth/modules/backups/__init__.py:202 +#: plinth/modules/backups/__init__.py:247 +msgid "Backups" +msgstr "" + +#: plinth/modules/backups/__init__.py:199 +msgid "" +"Enable an automatic backup schedule for data safety. Prefer an encrypted " +"remote backup location or an extra attached disk." +msgstr "" + +#: plinth/modules/backups/__init__.py:205 +msgid "Enable a Backup Schedule" +msgstr "" + +#: plinth/modules/backups/__init__.py:209 +#: plinth/modules/backups/__init__.py:256 +#: plinth/modules/storage/__init__.py:329 +#, python-brace-format +msgid "Go to {app_name}" +msgstr "" + +#: plinth/modules/backups/__init__.py:244 +#, python-brace-format +msgid "" +"A scheduled backup failed. Past {error_count} attempts for backup did not " +"succeed. The latest error is: {error_message}" +msgstr "" + +#: plinth/modules/backups/__init__.py:252 +msgid "Error During Backup" +msgstr "" + +#: plinth/modules/backups/forms.py:33 +#, python-brace-format +msgid "{app} (No data to backup)" +msgstr "" + +#: plinth/modules/backups/forms.py:53 +msgid "Enable scheduled backups" +msgstr "" + +#: plinth/modules/backups/forms.py:54 +msgid "" +"If enabled, a backup is taken every day, every week and every month. Older " +"backups are removed." +msgstr "" + +#: plinth/modules/backups/forms.py:58 +msgid "Number of daily backups to keep" +msgstr "" + +#: plinth/modules/backups/forms.py:59 +msgid "" +"This many latest backups are kept and the rest are removed. A value of \"0\" " +"disables backups of this type. Triggered at specified hour every day." +msgstr "" + +#: plinth/modules/backups/forms.py:64 +msgid "Number of weekly backups to keep" +msgstr "" + +#: plinth/modules/backups/forms.py:66 +msgid "" +"This many latest backups are kept and the rest are removed. A value of \"0\" " +"disables backups of this type. Triggered at specified hour every Sunday." +msgstr "" + +#: plinth/modules/backups/forms.py:71 +msgid "Number of monthly backups to keep" +msgstr "" + +#: plinth/modules/backups/forms.py:73 +msgid "" +"This many latest backups are kept and the rest are removed. A value of \"0\" " +"disables backups of this type. Triggered at specified hour first day of " +"every month." +msgstr "" + +#: plinth/modules/backups/forms.py:78 +msgid "Hour of the day to trigger backup operation" +msgstr "" + +#: plinth/modules/backups/forms.py:79 +msgid "In 24 hour format." +msgstr "" + +#: plinth/modules/backups/forms.py:82 plinth/modules/backups/forms.py:104 +msgid "Included apps" +msgstr "" + +#: plinth/modules/backups/forms.py:82 plinth/modules/backups/forms.py:104 +msgid "Apps to include in the backup" +msgstr "" + +#: plinth/modules/backups/forms.py:98 +msgid "Repository" +msgstr "" + +#: plinth/modules/backups/forms.py:100 +#: plinth/modules/backups/templates/backups_delete.html:17 +#: plinth/modules/ikiwiki/forms.py:15 +#: plinth/modules/networks/templates/connection_show.html:71 +#: plinth/modules/samba/templates/samba.html:66 +#: plinth/modules/sharing/templates/sharing.html:33 +msgid "Name" +msgstr "" + +#: plinth/modules/backups/forms.py:101 +msgid "(Optional) Set a name for this backup archive" +msgstr "" + +#: plinth/modules/backups/forms.py:121 +msgid "Select the apps you want to restore" +msgstr "" + +#: plinth/modules/backups/forms.py:137 +msgid "Upload File" +msgstr "" + +#: plinth/modules/backups/forms.py:139 +msgid "Backup files have to be in .tar.gz format" +msgstr "" + +#: plinth/modules/backups/forms.py:140 +msgid "Select the backup file you want to upload" +msgstr "" + +#: plinth/modules/backups/forms.py:146 +msgid "Repository path format incorrect." +msgstr "" + +#: plinth/modules/backups/forms.py:153 +#, python-brace-format +msgid "Invalid username: {username}" +msgstr "" + +#: plinth/modules/backups/forms.py:163 +#, python-brace-format +msgid "Invalid hostname: {hostname}" +msgstr "" + +#: plinth/modules/backups/forms.py:167 +#, python-brace-format +msgid "Invalid directory path: {dir_path}" +msgstr "" + +#: plinth/modules/backups/forms.py:173 +msgid "Encryption" +msgstr "" + +#: plinth/modules/backups/forms.py:174 +msgid "" +"\"Key in Repository\" means that a password-protected key is stored with the " +"backup." +msgstr "" + +#: plinth/modules/backups/forms.py:176 +msgid "Key in Repository" +msgstr "" + +#: plinth/modules/backups/forms.py:176 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:178 plinth/modules/networks/forms.py:275 +msgid "Passphrase" +msgstr "" + +#: plinth/modules/backups/forms.py:179 +msgid "Passphrase; Only needed when using encryption." +msgstr "" + +#: plinth/modules/backups/forms.py:182 +msgid "Confirm Passphrase" +msgstr "" + +#: plinth/modules/backups/forms.py:182 +msgid "Repeat the passphrase." +msgstr "" + +#: plinth/modules/backups/forms.py:193 +msgid "The entered encryption passphrases do not match" +msgstr "" + +#: plinth/modules/backups/forms.py:197 +msgid "Passphrase is needed for encryption." +msgstr "" + +#: plinth/modules/backups/forms.py:232 +msgid "Select Disk or Partition" +msgstr "" + +#: plinth/modules/backups/forms.py:233 +msgid "Backups will be stored in the directory FreedomBoxBackups" +msgstr "" + +#: plinth/modules/backups/forms.py:242 +msgid "SSH Repository Path" +msgstr "" + +#: plinth/modules/backups/forms.py:243 +msgid "" +"Path of a new or existing repository. Example: user@host:~/path/to/repo/" +msgstr "" + +#: plinth/modules/backups/forms.py:247 +msgid "SSH server password" +msgstr "" + +#: plinth/modules/backups/forms.py:248 +msgid "" +"Password of the SSH Server.
SSH key-based authentication is not yet " +"possible." +msgstr "" + +#: plinth/modules/backups/forms.py:267 +msgid "Remote backup repository already exists." +msgstr "" + +#: plinth/modules/backups/forms.py:273 +msgid "Select verified SSH public key" +msgstr "" + +#: plinth/modules/backups/repository.py:34 +msgid "" +"Connection refused - make sure you provided correct credentials and the " +"server is running." +msgstr "" + +#: plinth/modules/backups/repository.py:41 +msgid "Connection refused" +msgstr "" + +#: plinth/modules/backups/repository.py:48 +msgid "Repository not found" +msgstr "" + +#: plinth/modules/backups/repository.py:53 +msgid "Incorrect encryption passphrase" +msgstr "" + +#: plinth/modules/backups/repository.py:58 +msgid "SSH access denied" +msgstr "" + +#: plinth/modules/backups/repository.py:64 +msgid "Repository path is neither empty nor is an existing backups repository." +msgstr "" + +#: plinth/modules/backups/repository.py:143 +msgid "Existing repository is not encrypted." +msgstr "" + +#: plinth/modules/backups/repository.py:327 +#, python-brace-format +msgid "{box_name} storage" +msgstr "" + +#: plinth/modules/backups/templates/backups.html:17 +#: plinth/modules/backups/views.py:111 +msgid "Create a new backup" +msgstr "" + +#: plinth/modules/backups/templates/backups.html:21 +msgid "Create Backup" +msgstr "" + +#: plinth/modules/backups/templates/backups.html:24 +msgid "Upload and restore a backup archive" +msgstr "" + +#: plinth/modules/backups/templates/backups.html:28 +msgid "Upload and Restore" +msgstr "" + +#: plinth/modules/backups/templates/backups.html:31 +msgid "Add a backup location" +msgstr "" + +#: plinth/modules/backups/templates/backups.html:35 +msgid "Add Backup Location" +msgstr "" + +#: plinth/modules/backups/templates/backups.html:38 +msgid "Add a remote backup location" +msgstr "" + +#: plinth/modules/backups/templates/backups.html:42 +msgid "Add Remote Backup Location" +msgstr "" + +#: plinth/modules/backups/templates/backups.html:46 +msgid "Existing Backups" +msgstr "" + +#: plinth/modules/backups/templates/backups_add_remote_repository.html:19 +#, python-format +msgid "" +"The credentials for this repository are stored on your %(box_name)s.
" +"To restore a backup on a new %(box_name)s you need the SSH credentials and, " +"if chosen, the encryption passphrase." +msgstr "" + +#: plinth/modules/backups/templates/backups_add_remote_repository.html:28 +msgid "Create Location" +msgstr "" + +#: plinth/modules/backups/templates/backups_add_repository.html:19 +#: plinth/modules/gitweb/views.py:50 +msgid "Create Repository" +msgstr "" + +#: plinth/modules/backups/templates/backups_delete.html:12 +msgid "Delete this archive permanently?" +msgstr "" + +#: plinth/modules/backups/templates/backups_delete.html:18 +msgid "Time" +msgstr "" + +#: plinth/modules/backups/templates/backups_delete.html:34 +#, python-format +msgid "Delete Archive %(name)s" +msgstr "" + +#: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/backups/templates/backups_schedule.html:19 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 +#: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 +#: plinth/modules/networks/templates/internet_connectivity_type.html:18 +#: plinth/modules/networks/templates/network_topology_update.html:18 +#: plinth/modules/networks/templates/router_configuration_update.html:19 +#: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 +#: plinth/modules/sharing/templates/sharing_add_edit.html:20 +#: plinth/templates/form.html:19 +msgid "Submit" +msgstr "" + +#: plinth/modules/backups/templates/backups_repository.html:19 +msgid "This repository is encrypted" +msgstr "" + +#: plinth/modules/backups/templates/backups_repository.html:29 +msgid "Schedule" +msgstr "" + +#: plinth/modules/backups/templates/backups_repository.html:40 +msgid "Unmount Location" +msgstr "" + +#: plinth/modules/backups/templates/backups_repository.html:51 +msgid "Mount Location" +msgstr "" + +#: plinth/modules/backups/templates/backups_repository.html:62 +msgid "Remove Backup Location. This will not delete the remote backup." +msgstr "" + +#: plinth/modules/backups/templates/backups_repository.html:83 +msgid "Download" +msgstr "" + +#: plinth/modules/backups/templates/backups_repository.html:87 +#: plinth/modules/backups/templates/backups_restore.html:27 +#: plinth/modules/backups/views.py:206 +msgid "Restore" +msgstr "" + +#: plinth/modules/backups/templates/backups_repository.html:109 +msgid "No archives currently exist." +msgstr "" + +#: plinth/modules/backups/templates/backups_repository_remove.html:13 +msgid "Are you sure that you want to remove this repository?" +msgstr "" + +#: plinth/modules/backups/templates/backups_repository_remove.html:19 +msgid "" +"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." +msgstr "" + +#: plinth/modules/backups/templates/backups_repository_remove.html:31 +msgid "Remove Location" +msgstr "" + +#: plinth/modules/backups/templates/backups_restore.html:15 +msgid "Restore data from" +msgstr "" + +#: plinth/modules/backups/templates/backups_upload.html:17 +#, python-format +msgid "" +"\n" +" Upload a backup file downloaded from another %(box_name)s to restore " +"its\n" +" contents. You can choose the apps you wish to restore after uploading " +"a\n" +" backup file.\n" +" " +msgstr "" + +#: plinth/modules/backups/templates/backups_upload.html:27 +#: plinth/modules/help/templates/statuslog.html:23 +#: plinth/modules/networks/templates/connection_show.html:23 +msgid "Caution:" +msgstr "" + +#: plinth/modules/backups/templates/backups_upload.html:28 +#, python-format +msgid "" +"You have %(max_filesize)s available to restore a backup. Exceeding this " +"limit can leave your %(box_name)s unusable." +msgstr "" + +#: plinth/modules/backups/templates/backups_upload.html:41 +msgid "Upload file" +msgstr "" + +#: plinth/modules/backups/templates/verify_ssh_hostkey.html:18 +#, python-format +msgid "" +"Could not reach SSH host %(hostname)s. Please verify that the host is up and " +"accepting connections." +msgstr "" + +#: plinth/modules/backups/templates/verify_ssh_hostkey.html:28 +#, python-format +msgid "" +"The authenticity of SSH host %(hostname)s could not be established. The host " +"advertises the following SSH public keys. Please verify any one of them." +msgstr "" + +#: plinth/modules/backups/templates/verify_ssh_hostkey.html:40 +msgid "How to verify?" +msgstr "" + +#: plinth/modules/backups/templates/verify_ssh_hostkey.html:45 +msgid "" +"Run the following command on the SSH host machine. The output should match " +"one of the provided options. You can also use DSA, ECDSA, Ed25519 etc. " +"instead of RSA, by choosing the corresponding file." +msgstr "" + +#: plinth/modules/backups/templates/verify_ssh_hostkey.html:60 +msgid "Verify Host" +msgstr "" + +#: plinth/modules/backups/views.py:55 +msgid "Backup schedule updated." +msgstr "" + +#: plinth/modules/backups/views.py:74 +msgid "Schedule Backups" +msgstr "" + +#: plinth/modules/backups/views.py:106 +msgid "Archive created." +msgstr "" + +#: plinth/modules/backups/views.py:134 +msgid "Delete Archive" +msgstr "" + +#: plinth/modules/backups/views.py:146 +msgid "Archive deleted." +msgstr "" + +#: plinth/modules/backups/views.py:159 +msgid "Upload and restore a backup" +msgstr "" + +#: plinth/modules/backups/views.py:194 +msgid "Restored files from backup." +msgstr "" + +#: plinth/modules/backups/views.py:222 +msgid "No backup file found." +msgstr "" + +#: plinth/modules/backups/views.py:230 +msgid "Restore from uploaded file" +msgstr "" + +#: plinth/modules/backups/views.py:289 +msgid "No additional disks available to add a repository." +msgstr "" + +#: plinth/modules/backups/views.py:297 +msgid "Create backup repository" +msgstr "" + +#: plinth/modules/backups/views.py:324 +msgid "Create remote backup repository" +msgstr "" + +#: plinth/modules/backups/views.py:344 +msgid "Added new remote SSH repository." +msgstr "" + +#: plinth/modules/backups/views.py:366 +msgid "Verify SSH hostkey" +msgstr "" + +#: plinth/modules/backups/views.py:392 +msgid "SSH host already verified." +msgstr "" + +#: plinth/modules/backups/views.py:402 +msgid "SSH host verified." +msgstr "" + +#: plinth/modules/backups/views.py:417 +msgid "SSH host public key could not be verified." +msgstr "" + +#: plinth/modules/backups/views.py:419 +msgid "Authentication to remote server failed." +msgstr "" + +#: plinth/modules/backups/views.py:421 +msgid "Error establishing connection to server: {}" +msgstr "" + +#: plinth/modules/backups/views.py:432 +msgid "Repository removed." +msgstr "" + +#: plinth/modules/backups/views.py:446 +msgid "Remove Repository" +msgstr "" + +#: plinth/modules/backups/views.py:455 +msgid "Repository removed. Backups were not deleted." +msgstr "" + +#: plinth/modules/backups/views.py:465 +msgid "Unmounting failed!" +msgstr "" + +#: plinth/modules/backups/views.py:480 plinth/modules/backups/views.py:484 +msgid "Mounting failed" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:21 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:38 plinth/modules/bepasty/__init__.py:47 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:39 +msgid "Create or upload files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:40 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:41 +msgid "Delete files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:48 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:63 plinth/modules/bepasty/manifest.py:6 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 +msgid "File & Snippet Sharing" +msgstr "" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:108 plinth/modules/users/forms.py:234 +msgid "Permissions" +msgstr "" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:91 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:45 +msgid "Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:22 +msgid "admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:23 +msgid "editor" +msgstr "" + +#: plinth/modules/bepasty/views.py:24 +msgid "viewer" +msgstr "" + +#: plinth/modules/bepasty/views.py:49 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:50 +msgid "Create" +msgstr "" + +#: plinth/modules/bepasty/views.py:51 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:52 +#: plinth/modules/email/templates/email-aliases.html:24 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:86 +#: plinth/modules/networks/templates/connection_show.html:56 +#: plinth/modules/samba/templates/samba.html:154 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:35 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:77 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:78 +msgid "Delete" +msgstr "" + +#: plinth/modules/bepasty/views.py:53 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:90 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 plinth/modules/zoph/views.py:69 +msgid "Configuration updated." +msgstr "" + +#: plinth/modules/bepasty/views.py:93 plinth/modules/email/views.py:48 +#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 +#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 +#: plinth/modules/zoph/views.py:72 +msgid "An error occurred during configuration." +msgstr "" + +#: plinth/modules/bepasty/views.py:104 +msgid "Password added." +msgstr "" + +#: plinth/modules/bepasty/views.py:109 +msgid "Add Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:126 +msgid "Password deleted." +msgstr "" + +#: plinth/modules/bind/__init__.py:25 +msgid "" +"BIND enables you to publish your Domain Name System (DNS) information on the " +"Internet, and to resolve DNS queries for your user devices on your network." +msgstr "" + +#: plinth/modules/bind/__init__.py:29 +#, python-brace-format +msgid "" +"Currently, on {box_name}, BIND is only used to resolve DNS queries for other " +"machines on local network. It is also incompatible with sharing Internet " +"connection from {box_name}." +msgstr "" + +#: plinth/modules/bind/__init__.py:76 +msgid "BIND" +msgstr "" + +#: plinth/modules/bind/__init__.py:77 +msgid "Domain Name Server" +msgstr "" + +#: plinth/modules/bind/forms.py:20 +msgid "Forwarders" +msgstr "" + +#: plinth/modules/bind/forms.py:21 +msgid "" +"A list DNS servers, separated by space, to which requests will be forwarded" +msgstr "" + +#: plinth/modules/bind/forms.py:25 +msgid "Enable DNSSEC" +msgstr "" + +#: plinth/modules/bind/forms.py:26 +msgid "Enable Domain Name System Security Extensions" +msgstr "" + +#: plinth/modules/bind/templates/bind.html:11 +msgid "Serving Domains" +msgstr "" + +#: plinth/modules/bind/templates/bind.html:17 +#: plinth/modules/email/templates/email.html:38 +#: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:15 +#: plinth/modules/networks/templates/connection_show.html:91 +#: plinth/modules/samba/templates/samba.html:65 +#: plinth/modules/storage/templates/storage.html:26 +msgid "Type" +msgstr "" + +#: plinth/modules/bind/templates/bind.html:18 +msgid "Domain Names" +msgstr "" + +#: plinth/modules/bind/templates/bind.html:19 +msgid "Serving" +msgstr "" + +#: plinth/modules/bind/templates/bind.html:20 +msgid "IP addresses" +msgstr "" + +#: plinth/modules/bind/templates/bind.html:37 +#: plinth/modules/bind/templates/bind.html:39 +msgid "Refresh IP address and domains" +msgstr "" + +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 +#: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:78 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email/views.py:45 +#: plinth/modules/matrixsynapse/views.py:124 +#: plinth/modules/minetest/views.py:69 plinth/modules/mumble/views.py:28 +#: plinth/modules/pagekite/forms.py:78 plinth/modules/quassel/views.py:28 +#: plinth/modules/roundcube/views.py:32 plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/transmission/views.py:47 plinth/modules/ttrss/views.py:26 +#: plinth/modules/wordpress/views.py:37 +msgid "Configuration updated" +msgstr "" + +#: plinth/modules/calibre/__init__.py:26 +#, python-brace-format +msgid "" +"calibre server provides online access to your e-book collection. You can " +"store your e-books on your {box_name}, read them online or from any of your " +"devices." +msgstr "" + +#: plinth/modules/calibre/__init__.py:29 +msgid "" +"You can organize your e-books, extract and edit their metadata, and perform " +"advanced search. calibre can import, export, or convert across a wide range " +"of formats to make e-books ready for reading on any device. It also provides " +"an online web reader. It remembers your last read location, bookmarks, and " +"highlighted text. Content distribution using OPDS is currently not supported." +msgstr "" + +#: plinth/modules/calibre/__init__.py:35 +msgid "" +"Only users belonging to calibre group will be able to access the " +"app. All users with access can use all the libraries." +msgstr "" + +#: plinth/modules/calibre/__init__.py:57 +msgid "Use calibre e-book libraries" +msgstr "" + +#: plinth/modules/calibre/__init__.py:60 plinth/modules/calibre/manifest.py:6 +msgid "calibre" +msgstr "" + +#: plinth/modules/calibre/__init__.py:61 +msgid "E-book Library" +msgstr "" + +#: plinth/modules/calibre/forms.py:18 +msgid "Name of the new library" +msgstr "" + +#: plinth/modules/calibre/forms.py:19 +msgid "" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" +msgstr "" + +#: plinth/modules/calibre/forms.py:30 +msgid "A library with this name already exists." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:11 +#, python-format +msgid "Delete calibre Library %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:17 +msgid "" +"Delete this library permanently? All stored e-books and saved data will be " +"lost." +msgstr "" + +#: plinth/modules/calibre/templates/calibre-delete-library.html:27 +#: plinth/modules/gitweb/templates/gitweb_delete.html:27 +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 +#: plinth/modules/networks/templates/connections_delete.html:23 +#, python-format +msgid "Delete %(name)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:11 +msgid "Manage Libraries" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:15 +#: plinth/modules/calibre/templates/calibre.html:17 +msgid "Create Library" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:24 +msgid "No libraries available." +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:31 +#, python-format +msgid "Go to library %(library)s" +msgstr "" + +#: plinth/modules/calibre/templates/calibre.html:37 +#, python-format +msgid "Delete library %(library)s" +msgstr "" + +#: plinth/modules/calibre/views.py:39 +msgid "Library created." +msgstr "" + +#: plinth/modules/calibre/views.py:50 +msgid "An error occurred while creating the library." +msgstr "" + +#: plinth/modules/calibre/views.py:64 plinth/modules/gitweb/views.py:138 +#, python-brace-format +msgid "{name} deleted." +msgstr "" + +#: plinth/modules/calibre/views.py:68 plinth/modules/gitweb/views.py:142 +#, python-brace-format +msgid "Could not delete {name}: {error}" +msgstr "" + +#: plinth/modules/cockpit/__init__.py:25 +#, python-brace-format +msgid "" +"Cockpit is a server manager that makes it easy to administer GNU/Linux " +"servers via a web browser. On a {box_name}, controls are available for many " +"advanced functions that are not usually required. A web based terminal for " +"console operations is also available." +msgstr "" + +#: plinth/modules/cockpit/__init__.py:31 +msgid "" +"Cockpit can be used to perform advanced storage operations such as disk " +"partitioning and RAID management. It can also be used for opening custom " +"firewall ports and advanced networking such as bonding, bridging and VLAN " +"management." +msgstr "" + +#: plinth/modules/cockpit/__init__.py:36 +#, python-brace-format +msgid "" +"It can be accessed by any user on {box_name} " +"belonging to the admin group." +msgstr "" + +#: plinth/modules/cockpit/__init__.py:40 +msgid "" +"Cockpit requires that you access it through a domain name. It will not work " +"when accessed using an IP address as part of the URL." +msgstr "" + +#: plinth/modules/cockpit/__init__.py:62 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/performance/manifest.py:9 +msgid "Cockpit" +msgstr "" + +#: plinth/modules/cockpit/__init__.py:64 +msgid "Server Administration" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:11 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:14 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + +#: plinth/modules/config/__init__.py:23 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:53 +msgid "General Configuration" +msgstr "" + +#: plinth/modules/config/__init__.py:58 +#: plinth/modules/names/templates/names.html:30 +#: plinth/modules/names/templates/names.html:44 +#: plinth/modules/snapshot/views.py:35 plinth/templates/index.html:46 +msgid "Configure" +msgstr "" + +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/names/templates/names.html:16 +msgid "Domain Name" +msgstr "" + +#: plinth/modules/config/forms.py:30 plinth/modules/config/forms.py:80 +#: plinth/modules/dynamicdns/forms.py:85 +msgid "Invalid domain name" +msgstr "" + +#: plinth/modules/config/forms.py:40 +#, python-brace-format +msgid "{user}'s website" +msgstr "" + +#: plinth/modules/config/forms.py:42 +msgid "Apache Default" +msgstr "" + +#: plinth/modules/config/forms.py:43 +msgid "FreedomBox Service (Plinth)" +msgstr "" + +#: plinth/modules/config/forms.py:55 +msgid "Hostname" +msgstr "" + +#: plinth/modules/config/forms.py:57 +#, python-brace-format +msgid "" +"Hostname is the local name by which other devices on the local network can " +"reach your {box_name}. It must start and end with an alphabet or a digit " +"and have as interior characters only alphabets, digits and hyphens. Total " +"length must be 63 characters or less." +msgstr "" + +#: plinth/modules/config/forms.py:64 +msgid "Invalid hostname" +msgstr "" + +#: plinth/modules/config/forms.py:70 +#, python-brace-format +msgid "" +"Domain name is the global name by which other devices on the Internet can " +"reach your {box_name}. It must consist of labels separated by dots. Each " +"label must start and end with an alphabet or a digit and have as interior " +"characters only alphabets, digits and hyphens. Length of each label must be " +"63 characters or less. Total length of domain name must be 253 characters " +"or less." +msgstr "" + +#: plinth/modules/config/forms.py:85 +msgid "Webserver Home Page" +msgstr "" + +#: plinth/modules/config/forms.py:87 +#, python-brace-format +msgid "" +"Choose the default page that must be served when someone visits your " +"{box_name} on the web. A typical use case is to set your blog or wiki as the " +"home page when someone visits the domain name. Note that once the home page " +"is set to something other than {box_name} Service (Plinth), your users must " +"explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." +msgstr "" + +#: plinth/modules/config/forms.py:98 +msgid "Show advanced apps and features" +msgstr "" + +#: plinth/modules/config/forms.py:100 +msgid "Show apps and features that require more technical knowledge." +msgstr "" + +#: plinth/modules/config/views.py:46 +#, python-brace-format +msgid "Error setting hostname: {exception}" +msgstr "" + +#: plinth/modules/config/views.py:49 +msgid "Hostname set" +msgstr "" + +#: plinth/modules/config/views.py:58 +#, python-brace-format +msgid "Error setting domain name: {exception}" +msgstr "" + +#: plinth/modules/config/views.py:61 +msgid "Domain name set" +msgstr "" + +#: plinth/modules/config/views.py:69 +#, python-brace-format +msgid "Error setting webserver home page: {exception}" +msgstr "" + +#: plinth/modules/config/views.py:72 +msgid "Webserver home page set" +msgstr "" + +#: plinth/modules/config/views.py:80 +#, python-brace-format +msgid "Error changing advanced mode: {exception}" +msgstr "" + +#: plinth/modules/config/views.py:85 +msgid "Showing advanced apps and features" +msgstr "" + +#: plinth/modules/config/views.py:88 +msgid "Hiding advanced apps and features" +msgstr "" + +#: plinth/modules/coturn/__init__.py:29 +msgid "" +"Coturn is a server to facilitate audio/video calls and conferences by " +"providing an implementation of TURN and STUN protocols. WebRTC, SIP and " +"other communication servers can use it to establish a call between parties " +"who are otherwise unable connect to each other." +msgstr "" + +#: plinth/modules/coturn/__init__.py:34 +#, python-brace-format +msgid "" +"It is not meant to be used directly by users. Servers such as Matrix Synapse or ejabberd need to " +"be configured with the details provided here." +msgstr "" + +#: plinth/modules/coturn/__init__.py:57 +msgid "Coturn" +msgstr "" + +#: plinth/modules/coturn/__init__.py:58 +msgid "VoIP Helper" +msgstr "" + +#: plinth/modules/coturn/forms.py:22 +msgid "Invalid list of STUN/TURN Server URIs" +msgstr "" + +#: plinth/modules/coturn/templates/coturn.html:15 +msgid "Use the following URLs to configure your communication server:" +msgstr "" + +#: plinth/modules/coturn/templates/coturn.html:24 +msgid "Use the following shared authentication secret:" +msgstr "" + +#: plinth/modules/datetime/__init__.py:19 +msgid "" +"Network time server is a program that maintains the system time in " +"synchronization with servers on the Internet." +msgstr "" + +#: plinth/modules/datetime/__init__.py:68 +msgid "Date & Time" +msgstr "" + +#: plinth/modules/datetime/__init__.py:117 +msgid "Time synchronized to NTP server" +msgstr "" + +#: plinth/modules/datetime/forms.py:18 +msgid "Time Zone" +msgstr "" + +#: plinth/modules/datetime/forms.py:19 +msgid "" +"Set your time zone to get accurate timestamps. This will set the system-wide " +"time zone." +msgstr "" + +#: plinth/modules/datetime/forms.py:30 +msgid "-- no time zone set --" +msgstr "" + +#: plinth/modules/datetime/views.py:45 +#, python-brace-format +msgid "Error setting time zone: {exception}" +msgstr "" + +#: plinth/modules/datetime/views.py:48 +msgid "Time zone set" +msgstr "" + +#: plinth/modules/deluge/__init__.py:22 +msgid "Deluge is a BitTorrent client that features a Web UI." +msgstr "" + +#: plinth/modules/deluge/__init__.py:23 +msgid "" +"The default password is 'deluge', but you should log in and change it " +"immediately after enabling this service." +msgstr "" + +#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/transmission/__init__.py:49 +msgid "Download files using BitTorrent applications" +msgstr "" + +#: plinth/modules/deluge/__init__.py:48 plinth/modules/deluge/manifest.py:6 +msgid "Deluge" +msgstr "" + +#: plinth/modules/deluge/__init__.py:50 +#: plinth/modules/transmission/__init__.py:55 +msgid "BitTorrent Web Client" +msgstr "" + +#: plinth/modules/deluge/forms.py:20 plinth/modules/transmission/forms.py:21 +msgid "Download directory" +msgstr "" + +#: plinth/modules/deluge/manifest.py:7 +msgid "Bittorrent client written in Python/PyGTK" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:23 +msgid "" +"The system diagnostic test will run a number of checks on your system to " +"confirm that applications and services are working as expected." +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:50 +#: plinth/modules/diagnostics/__init__.py:236 +msgid "Diagnostics" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:97 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:98 +#: plinth/modules/networks/views.py:49 +msgid "failed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:99 +msgid "error" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:100 +msgid "warning" +msgstr "" + +#. Translators: This is the unit of computer storage Mebibyte similar to +#. Megabyte. +#: plinth/modules/diagnostics/__init__.py:202 +msgid "MiB" +msgstr "" + +#. Translators: This is the unit of computer storage Gibibyte similar to +#. Gigabyte. +#: plinth/modules/diagnostics/__init__.py:207 +msgid "GiB" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:214 +msgid "You should disable some apps to reduce memory usage." +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:219 +msgid "You should not install any new apps on this system." +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:231 +#, no-python-format, python-brace-format +msgid "" +"System is low on memory: {percent_used}% used, {memory_available} " +"{memory_available_unit} free. {advice_message}" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:233 +msgid "Low Memory" +msgstr "" + +#: plinth/modules/diagnostics/templates/diagnostics.html:17 +#: plinth/modules/diagnostics/templates/diagnostics_button.html:11 +msgid "Run Diagnostics" +msgstr "" + +#: plinth/modules/diagnostics/templates/diagnostics.html:20 +msgid "Diagnostics test is currently running" +msgstr "" + +#: plinth/modules/diagnostics/templates/diagnostics.html:33 +msgid "Results" +msgstr "" + +#: plinth/modules/diagnostics/templates/diagnostics.html:36 +#, python-format +msgid "" +"\n" +" App: %(app_name)s\n" +" " +msgstr "" + +#: plinth/modules/diagnostics/templates/diagnostics_app.html:10 +msgid "Diagnostic Results" +msgstr "" + +#: plinth/modules/diagnostics/templates/diagnostics_app.html:12 +#, python-format +msgid "App: %(app_name)s" +msgstr "" + +#: plinth/modules/diagnostics/templates/diagnostics_app.html:21 +msgid "This app does not support diagnostics" +msgstr "" + +#: plinth/modules/diagnostics/templates/diagnostics_results.html:11 +msgid "Test" +msgstr "" + +#: plinth/modules/diagnostics/templates/diagnostics_results.html:12 +#: plinth/modules/dynamicdns/templates/dynamicdns.html:20 +msgid "Result" +msgstr "" + +#: plinth/modules/diagnostics/views.py:57 +msgid "Diagnostic Test" +msgstr "" + +#: plinth/modules/dynamicdns/__init__.py:29 +#, python-brace-format +msgid "" +"If your Internet provider changes your IP address periodically (i.e. every " +"24h), it may be hard for others to find you on the Internet. This will " +"prevent others from finding services which are provided by this {box_name}." +msgstr "" + +#: plinth/modules/dynamicdns/__init__.py:33 +msgid "" +"The solution is to assign a DNS name to your IP address and update the DNS " +"name every time your IP is changed by your Internet provider. Dynamic DNS " +"allows you to push your current public IP address to a GnuDIP server. Afterwards, " +"the server will assign your DNS name to the new IP, and if someone from the " +"Internet asks for your DNS name, they will get a response with your current " +"IP address." +msgstr "" + +#: plinth/modules/dynamicdns/__init__.py:41 +msgid "" +"If you are looking for a free dynamic DNS account, you may find a free " +"GnuDIP service at ddns." +"freedombox.org or you may find free update URL based services at freedns.afraid.org." +msgstr "" + +#: plinth/modules/dynamicdns/__init__.py:64 +msgid "Dynamic DNS Client" +msgstr "" + +#: plinth/modules/dynamicdns/__init__.py:77 +msgid "Dynamic Domain Name" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:18 +msgid "" +"The Variables <User>, <Pass>, <Ip>, <Domain> may be " +"used within the URL. For details see the update URL templates of the example " +"providers." +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:22 +msgid "" +"Please choose an update protocol according to your provider. If your " +"provider does not support the GnuDIP protocol or your provider is not listed " +"you may use the update URL of your provider." +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:27 +msgid "" +"Please do not enter a URL here (like \"https://example.com/\") but only the " +"hostname of the GnuDIP server (like \"example.com\")." +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:31 +#, python-brace-format +msgid "The public domain name you want to use to reach your {box_name}." +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:34 +msgid "Use this option if your provider uses self signed certificates." +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:37 +msgid "" +"If this option is selected, your username and password will be used for HTTP " +"basic authentication." +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:40 +msgid "Leave this field empty if you want to keep your current password." +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:43 +#, python-brace-format +msgid "" +"Optional Value. If your {box_name} is not connected directly to the Internet " +"(i.e. connected to a NAT router) this URL is used to determine the real IP " +"address. The URL should simply return the IP where the client comes from " +"(example: https://ddns.freedombox.org/ip/)." +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:51 +msgid "The username that was used when the account was created." +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:54 +msgid "GnuDIP" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:57 +msgid "Other update URL" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:59 +msgid "Service Type" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:64 +msgid "GnuDIP Server Address" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:67 +msgid "Invalid server name" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:70 +msgid "Update URL" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:74 +msgid "Accept all SSL certificates" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:78 +msgid "Use HTTP basic authentication" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:88 plinth/modules/networks/forms.py:212 +#: plinth/modules/users/forms.py:68 +msgid "Username" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:95 plinth/modules/networks/forms.py:215 +msgid "Show password" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:99 +msgid "URL to look up public IP" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:104 +msgid "Use IPv6 instead of IPv4" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:123 +msgid "This field is required." +msgstr "" + +#: plinth/modules/dynamicdns/templates/dynamicdns.html:11 +#: plinth/modules/firewall/templates/firewall.html:16 +#: plinth/modules/firewall/templates/firewall.html:36 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:17 +#: plinth/modules/networks/templates/connection_show.html:254 +#: plinth/modules/samba/templates/samba.html:67 +#: plinth/modules/tor/templates/tor.html:12 +#: plinth/modules/tor/templates/tor.html:27 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:48 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:47 +msgid "Status" +msgstr "" + +#: plinth/modules/dynamicdns/templates/dynamicdns.html:18 +#: plinth/modules/email/templates/email.html:35 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:24 +msgid "Domain" +msgstr "" + +#: plinth/modules/dynamicdns/templates/dynamicdns.html:19 +msgid "Last update" +msgstr "" + +#: plinth/modules/dynamicdns/templates/dynamicdns.html:21 +msgid "IP Address" +msgstr "" + +#: plinth/modules/dynamicdns/templates/dynamicdns.html:32 +msgid "Success" +msgstr "" + +#: plinth/modules/dynamicdns/templates/dynamicdns.html:36 +msgid "Failed" +msgstr "" + +#: plinth/modules/dynamicdns/templates/dynamicdns.html:52 +msgid "No status available." +msgstr "" + +#: plinth/modules/dynamicdns/views.py:24 plinth/modules/dynamicdns/views.py:26 +msgid "Connection timed out" +msgstr "" + +#: plinth/modules/dynamicdns/views.py:25 +msgid "Could not find server" +msgstr "" + +#: plinth/modules/dynamicdns/views.py:27 +msgid "Server refused connection" +msgstr "" + +#: plinth/modules/dynamicdns/views.py:28 +msgid "Already up-to-date" +msgstr "" + +#: plinth/modules/ejabberd/__init__.py:31 +msgid "" +"XMPP is an open and standardized communication protocol. Here you can run " +"and configure your XMPP server, called ejabberd." +msgstr "" + +#: plinth/modules/ejabberd/__init__.py:34 +#, python-brace-format +msgid "" +"To actually communicate, you can use the web client or any other XMPP client. When enabled, ejabberd can be accessed by " +"any user with a {box_name} login." +msgstr "" + +#: plinth/modules/ejabberd/__init__.py:42 +#, python-brace-format +msgid "" +"ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." +msgstr "" + +#: plinth/modules/ejabberd/__init__.py:65 +msgid "ejabberd" +msgstr "" + +#: plinth/modules/ejabberd/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:71 +msgid "Chat Server" +msgstr "" + +#: plinth/modules/ejabberd/forms.py:18 +msgid "Enable Message Archive Management" +msgstr "" + +#: plinth/modules/ejabberd/forms.py:20 +#, python-brace-format +msgid "" +"If enabled, your {box_name} will store chat message histories. This allows " +"synchronization of conversations between multiple clients, and reading the " +"history of a multi-user chat room. It depends on the client settings whether " +"the histories are stored as plain text or encrypted." +msgstr "" + +#: plinth/modules/ejabberd/forms.py:27 plinth/modules/matrixsynapse/forms.py:22 +msgid "Automatically manage audio/video call setup" +msgstr "" + +#: plinth/modules/ejabberd/forms.py:29 +#, python-brace-format +msgid "" +"Configures the local coturn app as the STUN/TURN " +"server for ejabberd. Disable this if you want to use a different STUN/TURN " +"server." +msgstr "" + +#: plinth/modules/ejabberd/forms.py:36 plinth/modules/matrixsynapse/forms.py:31 +msgid "STUN/TURN Server URIs" +msgstr "" + +#: plinth/modules/ejabberd/forms.py:38 plinth/modules/matrixsynapse/forms.py:33 +msgid "List of public URIs of the STUN/TURN server, one on each line." +msgstr "" + +#: plinth/modules/ejabberd/forms.py:42 plinth/modules/matrixsynapse/forms.py:37 +msgid "Shared Authentication Secret" +msgstr "" + +#: plinth/modules/ejabberd/forms.py:43 plinth/modules/matrixsynapse/forms.py:38 +msgid "Shared secret used to compute passwords for the TURN server." +msgstr "" + +#: plinth/modules/ejabberd/manifest.py:10 +msgid "Conversations" +msgstr "" + +#: plinth/modules/ejabberd/manifest.py:24 +msgid "Xabber" +msgstr "" + +#: plinth/modules/ejabberd/manifest.py:26 +msgid "" +"Open source Jabber (XMPP) client with multi-account support and clean and " +"simple interface. " +msgstr "" + +#: plinth/modules/ejabberd/manifest.py:41 +msgid "Yaxim" +msgstr "" + +#: plinth/modules/ejabberd/manifest.py:55 +msgid "ChatSecure" +msgstr "" + +#: plinth/modules/ejabberd/manifest.py:57 +msgid "" +"ChatSecure is a free and open source messaging app that features OTR " +"encryption over XMPP. You can connect to an existing Google account, create " +"new accounts on public XMPP servers (including via Tor), or even connect to " +"your own server for extra security." +msgstr "" + +#: plinth/modules/ejabberd/manifest.py:72 +msgid "Dino" +msgstr "" + +#: plinth/modules/ejabberd/manifest.py:84 +msgid "Gajim" +msgstr "" + +#: plinth/modules/ejabberd/templates/ejabberd.html:19 +#, python-format +msgid "" +"Your XMPP server domain is set to %(domainname)s. User IDs will look " +"like username@%(domainname)s. You can setup your domain on the system " +"Configure page." +msgstr "" + +#: plinth/modules/email/__init__.py:26 +msgid "" +"This is a complete email server solution using Postfix, Dovecot, and Rspamd. " +"Postfix sends and receives emails. Dovecot allows email clients to access " +"your mailbox using IMAP and POP3. Rspamd deals with spam." +msgstr "" + +#: plinth/modules/email/__init__.py:31 +#, python-brace-format +msgid "" +"Each user on {box_name} gets an email address like user@mydomain.example. " +"They will also receive mail from all addresses that look like user" +"+foo@mydomain.example. Further, they can add aliases to their email address. " +"Necessary aliases such as \"postmaster\" are automatically created pointing " +"to the first admin user." +msgstr "" + +#: plinth/modules/email/__init__.py:37 +msgid "" +"Roundcube app provides web interface " +"for users to access email." +msgstr "" + +#: plinth/modules/email/__init__.py:39 +msgid "" +"During installation, any other email servers in the system will be " +"uninstalled." +msgstr "" + +#: plinth/modules/email/__init__.py:58 +msgid "Postfix/Dovecot" +msgstr "" + +#: plinth/modules/email/__init__.py:60 +msgid "Email Server" +msgstr "" + +#: plinth/modules/email/__init__.py:80 +msgid "My Email Aliases" +msgstr "" + +#: plinth/modules/email/__init__.py:81 +msgid "Manage Aliases for Mailbox" +msgstr "" + +#: plinth/modules/email/forms.py:25 +msgid "Primary domain" +msgstr "" + +#: plinth/modules/email/forms.py:27 +msgid "" +"Mails are received for all domains configured in the system. Among these, " +"select the most important one." +msgstr "" + +#: plinth/modules/email/forms.py:35 +msgid "New alias (without @domain)" +msgstr "" + +#: plinth/modules/email/forms.py:42 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email/forms.py:45 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email/forms.py:49 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email/forms.py:59 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email/manifest.py:12 plinth/modules/roundcube/__init__.py:54 +#: plinth/modules/roundcube/manifest.py:6 +msgid "Roundcube" +msgstr "" + +#: plinth/modules/email/manifest.py:20 plinth/modules/radicale/manifest.py:36 +msgid "Thunderbird" +msgstr "" + +#: plinth/modules/email/manifest.py:37 +msgid "K-9 Mail" +msgstr "" + +#: plinth/modules/email/manifest.py:52 +msgid "FairEmail" +msgstr "" + +#: plinth/modules/email/templates/email-aliases.html:13 +#: plinth/modules/email/templates/email.html:15 +msgid "Manage Aliases" +msgstr "" + +#: plinth/modules/email/templates/email-aliases.html:16 +msgid "You have no email aliases." +msgstr "" + +#: plinth/modules/email/templates/email-aliases.html:28 +msgid "Create a new email alias" +msgstr "" + +#: plinth/modules/email/templates/email-aliases.html:34 +msgid "Add" +msgstr "" + +#: plinth/modules/email/templates/email.html:10 +msgid "Manage Spam" +msgstr "" + +#: plinth/modules/email/templates/email.html:22 +msgid "DNS Records" +msgstr "" + +#: plinth/modules/email/templates/email.html:25 +msgid "" +"The following DNS records must be added manually on your primary domain for " +"the mail server to work properly." +msgstr "" + +#: plinth/modules/email/templates/email.html:36 +msgid "TTL" +msgstr "" + +#: plinth/modules/email/templates/email.html:37 +msgid "Class" +msgstr "" + +#: plinth/modules/email/templates/email.html:39 +msgid "Priority" +msgstr "" + +#: plinth/modules/email/templates/email.html:40 +msgid "Weight" +msgstr "" + +#: plinth/modules/email/templates/email.html:41 +#: plinth/modules/minetest/templates/minetest.html:18 +#: plinth/modules/tor/templates/tor.html:72 +msgid "Port" +msgstr "" + +#: plinth/modules/email/templates/email.html:42 +msgid "Host/Target/Value" +msgstr "" + +#: plinth/modules/firewall/__init__.py:26 +#, python-brace-format +msgid "" +"Firewall is a security system that controls the incoming and outgoing " +"network traffic on your {box_name}. Keeping a firewall enabled and properly " +"configured reduces risk of security threat from the Internet." +msgstr "" + +#: plinth/modules/firewall/__init__.py:62 +msgid "Firewall" +msgstr "" + +#: plinth/modules/firewall/components.py:134 +#, python-brace-format +msgid "Port {name} ({details}) available for internal networks" +msgstr "" + +#: plinth/modules/firewall/components.py:142 +#, python-brace-format +msgid "Port {name} ({details}) available for external networks" +msgstr "" + +#: plinth/modules/firewall/components.py:147 +#, python-brace-format +msgid "Port {name} ({details}) unavailable for external networks" +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:21 +#, python-format +msgid "" +"Firewall daemon is not running. Please run it. Firewall comes enabled by " +"default on %(box_name)s. On any Debian based system (such as %(box_name)s) " +"you may run it using the command 'service firewalld start' or in case of a " +"system with systemd 'systemctl start firewalld'." +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:35 +msgid "Service/Port" +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +msgid "Enabled" +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:72 +msgid "Permitted" +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:75 +msgid "Permitted (internal only)" +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:78 +msgid "Permitted (external only)" +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:81 +msgid "Blocked" +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:94 +msgid "" +"The operation of the firewall is automatic. When you enable a service it is " +"also permitted in the firewall and when you disable a service it is also " +"disabled in the firewall." +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:102 +#: plinth/modules/networks/templates/networks_configuration.html:22 +#: plinth/modules/storage/templates/storage.html:93 +msgid "Advanced" +msgstr "" + +#: plinth/modules/firewall/templates/firewall.html:104 +msgid "" +"Advanced firewall operations such as opening custom ports are provided by " +"the Cockpit app." +msgstr "" + +#: plinth/modules/first_boot/forms.py:14 +#, python-brace-format +msgid "" +"Enter the secret generated during FreedomBox installation. This secret can " +"also be obtained by running the command \"sudo cat /var/lib/plinth/firstboot-" +"wizard-secret\" on your {box_name}" +msgstr "" + +#: plinth/modules/first_boot/forms.py:19 +msgid "Firstboot Wizard Secret" +msgstr "" + +#: plinth/modules/first_boot/templates/firstboot_complete.html:11 +msgid "Setup Complete!" +msgstr "" + +#: plinth/modules/first_boot/templates/firstboot_complete.html:14 +#, python-format +msgid "Without any apps, your %(box_name)s cannot do very much." +msgstr "" + +#: plinth/modules/first_boot/templates/firstboot_complete.html:21 +msgid "Install Apps" +msgstr "" + +#: plinth/modules/first_boot/templates/firstboot_complete.html:27 +#, python-format +msgid "" +"You may want to check the network setup and " +"modify it if necessary." +msgstr "" + +#: plinth/modules/first_boot/templates/firstboot_welcome.html:29 +msgid "Start Setup" +msgstr "" + +#: plinth/modules/first_boot/views.py:50 +msgid "Setup Complete" +msgstr "" + +#: plinth/modules/gitweb/__init__.py:26 +msgid "" +"Git is a distributed version-control system for tracking changes in source " +"code during software development. Gitweb provides a web interface to Git " +"repositories. You can browse history and content of source code, use search " +"to find relevant commits and code. You can also clone repositories and " +"upload code changes with a command-line Git client or with multiple " +"available graphical clients. And you can share your code with people around " +"the world." +msgstr "" + +#: plinth/modules/gitweb/__init__.py:33 +msgid "" +"To learn more on how to use Git visit Git tutorial." +msgstr "" + +#: plinth/modules/gitweb/__init__.py:51 +msgid "Read-write access to Git repositories" +msgstr "" + +#: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:10 +msgid "Gitweb" +msgstr "" + +#: plinth/modules/gitweb/__init__.py:57 +msgid "Simple Git Hosting" +msgstr "" + +#: plinth/modules/gitweb/forms.py:59 +msgid "Invalid repository URL." +msgstr "" + +#: plinth/modules/gitweb/forms.py:69 +msgid "Invalid repository name." +msgstr "" + +#: plinth/modules/gitweb/forms.py:77 +msgid "Name of a new repository or URL to import an existing repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:83 +msgid "Description of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 +msgid "Optional, for displaying on Gitweb." +msgstr "" + +#: plinth/modules/gitweb/forms.py:86 +msgid "Repository's owner name" +msgstr "" + +#: plinth/modules/gitweb/forms.py:91 +msgid "Private repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:92 +msgid "Allow only authorized users to access this repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 +msgid "A repository with this name already exists." +msgstr "" + +#: plinth/modules/gitweb/forms.py:126 +msgid "Name of the repository" +msgstr "" + +#: plinth/modules/gitweb/forms.py:130 +msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "" + +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + +#: plinth/modules/gitweb/manifest.py:18 +msgid "Git" +msgstr "" + +#: plinth/modules/gitweb/templates/gitweb_configure.html:13 +msgid "Manage Repositories" +msgstr "" + +#: plinth/modules/gitweb/templates/gitweb_configure.html:17 +#: plinth/modules/gitweb/templates/gitweb_configure.html:19 +msgid "Create repository" +msgstr "" + +#: plinth/modules/gitweb/templates/gitweb_configure.html:26 +msgid "No repositories available." +msgstr "" + +#: plinth/modules/gitweb/templates/gitweb_configure.html:35 +#, python-format +msgid "Go to repository %(repo.name)s" +msgstr "" + +#: plinth/modules/gitweb/templates/gitweb_configure.html:42 +msgid "Cloning…" +msgstr "" + +#: plinth/modules/gitweb/templates/gitweb_configure.html:59 +#, python-format +msgid "Delete repository %(repo.name)s" +msgstr "" + +#: plinth/modules/gitweb/templates/gitweb_delete.html:12 +#, python-format +msgid "Delete Git Repository %(name)s" +msgstr "" + +#: plinth/modules/gitweb/templates/gitweb_delete.html:18 +msgid "Delete this repository permanently?" +msgstr "" + +#: plinth/modules/gitweb/views.py:45 +msgid "Repository created." +msgstr "" + +#: plinth/modules/gitweb/views.py:69 +msgid "An error occurred while creating the repository." +msgstr "" + +#: plinth/modules/gitweb/views.py:84 +msgid "Repository edited." +msgstr "" + +#: plinth/modules/gitweb/views.py:89 +msgid "Edit repository" +msgstr "" + +#: plinth/modules/help/__init__.py:35 +msgid "Documentation" +msgstr "" + +#: plinth/modules/help/__init__.py:39 plinth/templates/help-menu.html:20 +#: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" +msgid "Manual" +msgstr "" + +#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/templates/help_support.html:9 +#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/templates/help-menu.html:28 +msgid "Get Support" +msgstr "" + +#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/templates/help_feedback.html:9 +#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/templates/help-menu.html:34 +msgid "Submit Feedback" +msgstr "" + +#: plinth/modules/help/__init__.py:51 +#: plinth/modules/help/templates/help_contribute.html:9 +#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/templates/help-menu.html:40 +msgid "Contribute" +msgstr "" + +#: plinth/modules/help/__init__.py:55 plinth/templates/help-menu.html:46 +#: plinth/templates/help-menu.html:47 +msgid "About" +msgstr "" + +#: plinth/modules/help/templates/help_about.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:26 +#, python-format +msgid "You are running %(os_release)s and %(box_name)s version %(version)s." +msgstr "" + +#: plinth/modules/help/templates/help_about.html:23 +#, python-format +msgid "" +"There is a new %(box_name)s version available." +msgstr "" + +#: plinth/modules/help/templates/help_about.html:28 +#: plinth/modules/upgrades/templates/upgrades_configure.html:37 +#, python-format +msgid "%(box_name)s is up to date." +msgstr "" + +#: plinth/modules/help/templates/help_about.html:35 +#, python-format +msgid "" +"%(box_name)s is a community project to develop, design and promote personal " +"servers running free software for private, personal communications. It is a " +"networking appliance designed to allow interfacing with the rest of the " +"Internet under conditions of protected privacy and data security. It hosts " +"applications such as blog, wiki, website, social network, email, web proxy " +"and a Tor relay, on a device that can replace your Wi-Fi router, so that " +"your data stays with you." +msgstr "" + +#: plinth/modules/help/templates/help_about.html:48 +msgid "" +"We live in a world where our use of the network is mediated by those who " +"often do not have our best interests at heart. By building software that " +"does not rely on a central service, we can regain control and privacy. By " +"keeping our data in our homes, we gain useful legal protections over it. By " +"giving back power to the users over their networks and machines, we are " +"returning the Internet to its intended peer-to-peer architecture." +msgstr "" + +#: plinth/modules/help/templates/help_about.html:61 +#, python-format +msgid "" +"There are a number of projects working to realize a future of distributed " +"services; %(box_name)s aims to bring them all together in a convenient " +"package." +msgstr "" + +#: plinth/modules/help/templates/help_about.html:69 +#, python-format +msgid "" +"For more information about the %(box_name)s project, see the %(box_name)s Wiki." +msgstr "" + +#: plinth/modules/help/templates/help_about.html:78 +msgid "Learn more" +msgstr "" + +#: plinth/modules/help/templates/help_base.html:21 +#: plinth/modules/help/templates/help_index.html:61 +#, python-format +msgid "%(box_name)s Setup" +msgstr "" + +#: plinth/modules/help/templates/help_contribute.html:12 +msgid "The FreedomBox project welcomes contributions of all kinds." +msgstr "" + +#: plinth/modules/help/templates/help_contribute.html:18 +msgid "" +"You can contribute by writing code, testing and reporting bugs, discussing " +"new use cases and applications, designing logos and artwork, providing " +"support to your fellow users, translating FreedomBox and its applications " +"into your language, hosting hackathons or install fests, and by spreading " +"the word." +msgstr "" + +#: plinth/modules/help/templates/help_contribute.html:28 +msgid "" +"You can also help the project financially by donating to the non-profit FreedomBox " +"Foundation. Founded in 2011, the FreedomBox Foundation is a non-profit " +"organization with 501(c)(3) status based in New York City that exists to " +"support FreedomBox. It provides technical infrastructure and legal services " +"for the project, pursues partnerships, and advocates for FreedomBox " +"throughout the world. The FreedomBox Foundation would not exist without its " +"supporters." +msgstr "" + +#: plinth/modules/help/templates/help_contribute.html:42 +#: plinth/modules/power/templates/power_restart.html:27 +#: plinth/modules/power/templates/power_shutdown.html:26 +#: plinth/templates/app-header.html:53 +msgid "Learn more..." +msgstr "" + +#: plinth/modules/help/templates/help_feedback.html:12 +#, python-format +msgid "Your feedback will help us improve %(box_name)s!" +msgstr "" + +#: plinth/modules/help/templates/help_feedback.html:18 +msgid "" +"Let us know about missing features, your favourite apps and how we can " +"improve them on our discussion forum." +msgstr "" + +#: plinth/modules/help/templates/help_feedback.html:26 +msgid "" +"If you find any bugs or issues, please use the issue " +"tracker to let our developers know. To report, first check if the issue " +"is already reported and then use the \"New issue\" button." +msgstr "" + +#: plinth/modules/help/templates/help_feedback.html:36 +msgid "Thank you!" +msgstr "" + +#: plinth/modules/help/templates/help_index.html:12 +#: plinth/templates/help-menu.html:8 plinth/templates/help-menu.html:14 +msgid "Help" +msgstr "" + +#: plinth/modules/help/templates/help_index.html:16 +#, python-format +msgid "" +"The %(box_name)s Manual is the best place to " +"start for information regarding %(box_name)s." +msgstr "" + +#: plinth/modules/help/templates/help_index.html:23 +#, python-format +msgid "" +" " +"%(box_name)s project wiki contains further information." +msgstr "" + +#: plinth/modules/help/templates/help_index.html:30 +#, python-format +msgid "" +"To seek help from %(box_name)s community, queries may be posted on the mailing list. The list archives also contain information about " +"problems faced by other users and possible solutions." +msgstr "" + +#: plinth/modules/help/templates/help_index.html:40 +#, python-format +msgid "" +"Many %(box_name)s contributors and users are also available on the irc.oftc." +"net IRC network. Join and request help on the #freedombox " +"channel using the IRC web interface." +msgstr "" + +#: plinth/modules/help/templates/help_manual.html:18 +msgid "Download as PDF" +msgstr "" + +#: plinth/modules/help/templates/help_support.html:12 +#, python-format +msgid "" +"If you need help in getting something done or if you are facing problems " +"using %(box_name)s, you can ask for help from our community of users and " +"contributors." +msgstr "" + +#: plinth/modules/help/templates/help_support.html:20 +msgid "" +"Search for past discussions or post a new query on our discussion forum." +msgstr "" + +#: plinth/modules/help/templates/help_support.html:27 +msgid "" +"You can also chat with us on our IRC and Matrix channels (bridged):
    " +"
  • #freedombox on irc.oftc.net
  • #freedombox:matrix.org
" +"Or send an email to our mailing list." +msgstr "" + +#: plinth/modules/help/templates/statuslog.html:10 +msgid "Status Log" +msgstr "" + +#: plinth/modules/help/templates/statuslog.html:13 +#, python-format +msgid "" +"These are the last %(num_lines)s lines of the status log for this web " +"interface. If you want to report a bug, please use the bug tracker and " +"attach this status log to the bug report." +msgstr "" + +#: plinth/modules/help/templates/statuslog.html:24 +msgid "" +"Please remove any passwords or other personal information from the log " +"before submitting the bug report." +msgstr "" + +#: plinth/modules/help/views.py:25 +msgid "Documentation and FAQ" +msgstr "" + +#: plinth/modules/help/views.py:49 +#, python-brace-format +msgid "About {box_name}" +msgstr "" + +#: plinth/modules/help/views.py:83 +#, python-brace-format +msgid "{box_name} Manual" +msgstr "" + +#: plinth/modules/i2p/__init__.py:22 +msgid "" +"The Invisible Internet Project is an anonymous network layer intended to " +"protect communication from censorship and surveillance. I2P provides " +"anonymity by sending encrypted traffic through a volunteer-run network " +"distributed around the world." +msgstr "" + +#: plinth/modules/i2p/__init__.py:26 +msgid "" +"Find more information about I2P on their project homepage." +msgstr "" + +#: plinth/modules/i2p/__init__.py:28 +msgid "" +"The first visit to the provided web interface will initiate the " +"configuration process." +msgstr "" + +#: plinth/modules/i2p/__init__.py:52 +msgid "Manage I2P application" +msgstr "" + +#: plinth/modules/i2p/__init__.py:55 plinth/modules/i2p/manifest.py:13 +msgid "I2P" +msgstr "" + +#: plinth/modules/i2p/__init__.py:56 plinth/modules/tor/__init__.py:51 +msgid "Anonymity Network" +msgstr "" + +#: plinth/modules/i2p/__init__.py:82 +msgid "I2P Proxy" +msgstr "" + +#: plinth/modules/i2p/templates/i2p.html:12 +msgid "I2P Proxies and Tunnels" +msgstr "" + +#: plinth/modules/i2p/templates/i2p.html:21 +#: plinth/modules/i2p/templates/i2p.html:34 plinth/templates/clients.html:28 +msgid "Launch" +msgstr "" + +#: plinth/modules/i2p/templates/i2p.html:25 +msgid "Anonymous Torrents" +msgstr "" + +#: plinth/modules/i2p/views.py:16 +msgid "" +"I2P lets you browse the Internet and hidden services (eepsites) anonymously. " +"For this, your browser, preferably the Tor Browser, needs to be configured " +"with a proxy." +msgstr "" + +#: plinth/modules/i2p/views.py:19 +msgid "" +"By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " +"tunnels may be configured using the tunnel configuration interface." +msgstr "" + +#: plinth/modules/i2p/views.py:24 +msgid "" +"I2P provides an application to download files anonymously in a peer-to-peer " +"network. Download files by adding torrents or create a new torrent to share " +"a file." +msgstr "" + +#: plinth/modules/ikiwiki/__init__.py:22 +msgid "" +"ikiwiki is a simple wiki and blog application. It supports several " +"lightweight markup languages, including Markdown, and common blogging " +"functionality such as comments and RSS feeds." +msgstr "" + +#: plinth/modules/ikiwiki/__init__.py:26 +#, python-brace-format +msgid "" +"Only {box_name} users in the admin group can create and " +"manage blogs and wikis, but any user in the wiki group can " +"edit existing ones. In the User " +"Configuration you can change these permissions or add new users." +msgstr "" + +#: plinth/modules/ikiwiki/__init__.py:49 plinth/modules/ikiwiki/manifest.py:6 +msgid "ikiwiki" +msgstr "" + +#: plinth/modules/ikiwiki/__init__.py:50 +msgid "Wiki and Blog" +msgstr "" + +#: plinth/modules/ikiwiki/__init__.py:77 +msgid "View and edit wiki applications" +msgstr "" + +#: plinth/modules/ikiwiki/forms.py:17 +msgid "Admin Account Name" +msgstr "" + +#: plinth/modules/ikiwiki/forms.py:19 +msgid "Admin Account Password" +msgstr "" + +#: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:12 +msgid "Manage Wikis and Blogs" +msgstr "" + +#: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:16 +#: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:18 +#: plinth/modules/ikiwiki/templates/ikiwiki_create.html:10 +msgid "Create Wiki or Blog" +msgstr "" + +#: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:25 +msgid "No wikis or blogs available." +msgstr "" + +#: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:31 +#, python-format +msgid "Go to site %(site)s" +msgstr "" + +#: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:38 +#, python-format +msgid "Delete site %(site)s" +msgstr "" + +#: plinth/modules/ikiwiki/templates/ikiwiki_create.html:18 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:47 +#: plinth/modules/snapshot/templates/snapshot.html:15 +#: plinth/templates/app.html:54 +msgid "Update setup" +msgstr "" + +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:12 +#, python-format +msgid "Delete Wiki or Blog %(name)s" +msgstr "" + +#: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:18 +msgid "" +"This action will remove all the posts, pages and comments including revision " +"history. Delete this wiki or blog permanently?" +msgstr "" + +#: plinth/modules/ikiwiki/views.py:70 +#, python-brace-format +msgid "Created wiki {name}." +msgstr "" + +#: plinth/modules/ikiwiki/views.py:73 +#, python-brace-format +msgid "Could not create wiki: {error}" +msgstr "" + +#: plinth/modules/ikiwiki/views.py:83 +#, python-brace-format +msgid "Created blog {name}." +msgstr "" + +#: plinth/modules/ikiwiki/views.py:86 +#, python-brace-format +msgid "Could not create blog: {error}" +msgstr "" + +#: plinth/modules/ikiwiki/views.py:101 +#, python-brace-format +msgid "{title} deleted." +msgstr "" + +#: plinth/modules/ikiwiki/views.py:105 +#, python-brace-format +msgid "Could not delete {title}: {error}" +msgstr "" + +#: plinth/modules/infinoted/__init__.py:21 +msgid "infinoted is a server for Gobby, a collaborative text editor." +msgstr "" + +#: plinth/modules/infinoted/__init__.py:23 +#, python-brace-format +msgid "" +"To use it, download Gobby, desktop " +"client and install it. Then start Gobby and select \"Connect to Server\" and " +"enter your {box_name}'s domain name." +msgstr "" + +#: plinth/modules/infinoted/__init__.py:44 +msgid "infinoted" +msgstr "" + +#: plinth/modules/infinoted/__init__.py:45 +msgid "Gobby Server" +msgstr "" + +#: plinth/modules/infinoted/manifest.py:10 +msgid "Gobby" +msgstr "" + +#: plinth/modules/infinoted/manifest.py:12 +msgid "Gobby is a collaborative text editor" +msgstr "" + +#: plinth/modules/infinoted/manifest.py:15 +#, python-brace-format +msgid "" +"Start Gobby and select \"Connect to Server\" and enter your {box_name}'s " +"domain name." +msgstr "" + +#: plinth/modules/jsxc/__init__.py:21 +msgid "" +"JSXC is a web client for XMPP. Typically it is used with an XMPP server " +"running locally." +msgstr "" + +#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +msgid "JSXC" +msgstr "" + +#: plinth/modules/jsxc/__init__.py:45 +msgid "Chat Client" +msgstr "" + +#: plinth/modules/jsxc/templates/jsxc_launch.html:117 +#: plinth/templates/base.html:247 +msgid "JavaScript license information" +msgstr "" + +#: plinth/modules/letsencrypt/__init__.py:28 +#, python-brace-format +msgid "" +"A digital certificate allows users of a web service to verify the identity " +"of the service and to securely communicate with it. {box_name} can " +"automatically obtain and setup digital certificates for each available " +"domain. It does so by proving itself to be the owner of a domain to Let's " +"Encrypt, a certificate authority (CA)." +msgstr "" + +#: plinth/modules/letsencrypt/__init__.py:34 +msgid "" +"Let's Encrypt is a free, automated, and open certificate authority, run for " +"the public's benefit by the Internet Security Research Group (ISRG). Please " +"read and agree with the Let's Encrypt Subscriber Agreement before using this service." +msgstr "" + +#: plinth/modules/letsencrypt/__init__.py:61 +msgid "Let's Encrypt" +msgstr "" + +#: plinth/modules/letsencrypt/__init__.py:62 +msgid "Certificates" +msgstr "" + +#: plinth/modules/letsencrypt/__init__.py:98 +msgid "Cannot test: No domains are configured." +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:25 +msgid "Certificate Status" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:26 +msgid "Website Security" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:27 +#: plinth/modules/storage/templates/storage.html:28 +msgid "Actions" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:37 +#, python-format +msgid "Valid, expires on %(expiry_date)s" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:44 +msgid "Revoked" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:48 +#, python-format +msgid "Expired on %(expiry_date)s" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:52 +msgid "Invalid test certificate" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:56 +#, python-format +msgid "Invalid (%(reason)s)" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:63 +msgid "No certificate" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:80 +msgid "Re-obtain" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:93 +msgid "Revoke" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:101 +msgid "Obtain" +msgstr "" + +#: plinth/modules/letsencrypt/templates/letsencrypt.html:112 +#, python-format +msgid "" +"No domains have been configured. Configure " +"domains to be able to obtain certificates for them." +msgstr "" + +#: plinth/modules/letsencrypt/views.py:41 +#, python-brace-format +msgid "" +"Certificate successfully revoked for domain {domain}.This may take a few " +"moments to take effect." +msgstr "" + +#: plinth/modules/letsencrypt/views.py:47 +#, python-brace-format +msgid "Failed to revoke certificate for domain {domain}: {error}" +msgstr "" + +#: plinth/modules/letsencrypt/views.py:60 +#: plinth/modules/letsencrypt/views.py:77 +#, python-brace-format +msgid "Certificate successfully obtained for domain {domain}" +msgstr "" + +#: plinth/modules/letsencrypt/views.py:65 +#: plinth/modules/letsencrypt/views.py:82 +#, python-brace-format +msgid "Failed to obtain certificate for domain {domain}: {error}" +msgstr "" + +#: plinth/modules/letsencrypt/views.py:94 +#, python-brace-format +msgid "Certificate successfully deleted for domain {domain}" +msgstr "" + +#: plinth/modules/letsencrypt/views.py:99 +#, python-brace-format +msgid "Failed to delete certificate for domain {domain}: {error}" +msgstr "" + +#: plinth/modules/matrixsynapse/__init__.py:29 +msgid "" +"Matrix is an new " +"ecosystem for open, federated instant messaging and VoIP. Synapse is a " +"server implementing the Matrix protocol. It provides chat groups, audio/" +"video calls, end-to-end encryption, multiple device synchronization and does " +"not require phone numbers to work. Users on a given Matrix server can " +"converse with users on all other Matrix servers via federation." +msgstr "" + +#: plinth/modules/matrixsynapse/__init__.py:37 +#, python-brace-format +msgid "" +"Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " +"Coturn app or configure an external server." +msgstr "" + +#: plinth/modules/matrixsynapse/__init__.py:70 +msgid "Matrix Synapse" +msgstr "" + +#: plinth/modules/matrixsynapse/forms.py:16 +msgid "Enable Public Registration" +msgstr "" + +#: plinth/modules/matrixsynapse/forms.py:17 +msgid "" +"Enabling public registration means that anyone on the Internet can register " +"a new account on your Matrix server. Disable this if you only want existing " +"users to be able to use it." +msgstr "" + +#: plinth/modules/matrixsynapse/forms.py:24 +#, python-brace-format +msgid "" +"Configures the local coturn app as the STUN/TURN " +"server for Matrix Synapse. Disable this if you want to use a different STUN/" +"TURN server." +msgstr "" + +#: plinth/modules/matrixsynapse/manifest.py:14 +msgid "Element" +msgstr "" + +#: plinth/modules/matrixsynapse/manifest.py:48 +msgid "FluffyChat" +msgstr "" + +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 +#: plinth/modules/snapshot/templates/snapshot.html:12 +#: plinth/templates/app.html:46 +msgid "Configuration" +msgstr "" + +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:18 +msgid "" +"Matrix service needs to be configured for a domain. Users on other Matrix " +"servers will be able to reach users on this server using this domain name. " +"Matrix user IDs will look like @username:domainname." +msgstr "" + +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:26 +msgid "" +"\n" +" Warning! Changing the domain name after the initial\n" +" setup is currently not supported.\n" +" " +msgstr "" + +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:35 +#, python-format +msgid "" +"No domain(s) are available. Configure at " +"least one domain to be able to use Matrix Synapse." +msgstr "" + +#: plinth/modules/matrixsynapse/templates/matrix-synapse.html:15 +#, python-format +msgid "" +"The Matrix server domain is set to %(domain_name)s. User IDs will " +"look like @username:%(domain_name)s. Changing the domain name after " +"the initial setup is currently not supported." +msgstr "" + +#: plinth/modules/matrixsynapse/templates/matrix-synapse.html:22 +msgid "" +"New users can be registered from any client if public registration is " +"enabled." +msgstr "" + +#: plinth/modules/matrixsynapse/templates/matrix-synapse.html:31 +#, python-format +msgid "" +"The configured domain name is using a self-signed certificate. Federation " +"with other Matrix Synapse instances requires a valid TLS certificate. Please " +"go to Let's Encrypt to obtain one." +msgstr "" + +#: plinth/modules/mediawiki/__init__.py:23 +msgid "" +"MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " +"projects. A wiki engine is a program for creating a collaboratively edited " +"website. You can use MediaWiki to host a wiki-like website, take notes or " +"collaborate with friends on projects." +msgstr "" + +#: plinth/modules/mediawiki/__init__.py:27 +msgid "" +"This MediaWiki instance comes with a randomly generated administrator " +"password. You can set a new password in the \"Configuration\" section and " +"log in using the \"admin\" account. You can then create more user accounts " +"from MediaWiki itself by going to the Special:CreateAccount page." +msgstr "" + +#: plinth/modules/mediawiki/__init__.py:33 +msgid "" +"Anyone with a link to this wiki can read it. Only users that are logged in " +"can make changes to the content." +msgstr "" + +#: plinth/modules/mediawiki/__init__.py:56 +#: plinth/modules/mediawiki/manifest.py:6 +msgid "MediaWiki" +msgstr "" + +#: plinth/modules/mediawiki/__init__.py:57 plinth/templates/index.html:132 +msgid "Wiki" +msgstr "" + +#: plinth/modules/mediawiki/forms.py:52 +msgid "Administrator Password" +msgstr "" + +#: plinth/modules/mediawiki/forms.py:53 +msgid "" +"Set a new password for MediaWiki's administrator account (admin). Leave this " +"field blank to keep the current password." +msgstr "" + +#: plinth/modules/mediawiki/forms.py:58 +msgid "Server URL" +msgstr "" + +#: plinth/modules/mediawiki/forms.py:59 +msgid "" +"Used by MediaWiki to generate URLs that point to the wiki such as in footer, " +"feeds and emails." +msgstr "" + +#: plinth/modules/mediawiki/forms.py:64 +msgid "Enable public registrations" +msgstr "" + +#: plinth/modules/mediawiki/forms.py:65 +msgid "" +"If enabled, anyone on the internet will be able to create an account on your " +"MediaWiki instance." +msgstr "" + +#: plinth/modules/mediawiki/forms.py:69 +msgid "Enable private mode" +msgstr "" + +#: plinth/modules/mediawiki/forms.py:70 +msgid "" +"If enabled, access will be restricted. Only people who have accounts can " +"read/write to the wiki. Public registrations will also be disabled." +msgstr "" + +#: plinth/modules/mediawiki/forms.py:75 +msgid "Default Skin" +msgstr "" + +#: plinth/modules/mediawiki/forms.py:76 +msgid "" +"Choose a default skin for your MediaWiki installation. Users have the option " +"to select their preferred skin." +msgstr "" + +#: plinth/modules/mediawiki/views.py:49 +msgid "Password updated" +msgstr "" + +#: plinth/modules/mediawiki/views.py:58 +msgid "Public registrations enabled" +msgstr "" + +#: plinth/modules/mediawiki/views.py:67 +msgid "Public registrations disabled" +msgstr "" + +#: plinth/modules/mediawiki/views.py:72 +msgid "Private mode enabled" +msgstr "" + +#: plinth/modules/mediawiki/views.py:79 +msgid "Private mode disabled" +msgstr "" + +#: plinth/modules/mediawiki/views.py:86 +msgid "Default skin changed" +msgstr "" + +#: plinth/modules/mediawiki/views.py:90 +msgid "Server URL updated" +msgstr "" + +#: plinth/modules/minetest/__init__.py:35 +#, python-brace-format +msgid "" +"Minetest is a multiplayer infinite-world block sandbox. This module enables " +"the Minetest server to be run on this {box_name}, on the default port " +"(30000). To connect to the server, a Minetest client is needed." +msgstr "" + +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 +msgid "Minetest" +msgstr "" + +#: plinth/modules/minetest/__init__.py:61 +msgid "Block Sandbox" +msgstr "" + +#: plinth/modules/minetest/forms.py:13 +msgid "Maximum number of players" +msgstr "" + +#: plinth/modules/minetest/forms.py:15 +msgid "" +"You can change the maximum number of players playing minetest at a single " +"instance of time." +msgstr "" + +#: plinth/modules/minetest/forms.py:19 +msgid "Enable creative mode" +msgstr "" + +#: plinth/modules/minetest/forms.py:20 +msgid "" +"Creative mode changes the rules of the game to make it more suitable for " +"creative gameplay, rather than challenging \"survival\" gameplay." +msgstr "" + +#: plinth/modules/minetest/forms.py:25 +msgid "Enable PVP" +msgstr "" + +#: plinth/modules/minetest/forms.py:26 +msgid "Enabling Player Vs Player will allow players to damage other players." +msgstr "" + +#: plinth/modules/minetest/forms.py:30 +msgid "Enable damage" +msgstr "" + +#: plinth/modules/minetest/forms.py:31 +msgid "When disabled, players cannot die or receive damage of any kind." +msgstr "" + +#: plinth/modules/minetest/templates/minetest.html:17 +#: plinth/modules/networks/forms.py:54 plinth/modules/networks/forms.py:90 +msgid "Address" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:20 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " +"(music, pictures, and video) to clients on a network. DLNA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:43 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "MiniDLNA" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:47 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:13 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:14 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:10 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:48 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:81 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:91 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:35 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:38 +msgid "Updated media directory" +msgstr "" + +#: plinth/modules/mumble/__init__.py:26 +msgid "" +"Mumble is an open source, low-latency, encrypted, high quality voice chat " +"software." +msgstr "" + +#: plinth/modules/mumble/__init__.py:28 +msgid "" +"You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " +"desktop and mobile devices are available." +msgstr "" + +#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 +msgid "Mumble" +msgstr "" + +#: plinth/modules/mumble/__init__.py:49 +msgid "Voice Chat" +msgstr "" + +#: plinth/modules/mumble/forms.py:30 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:33 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + +#: plinth/modules/mumble/manifest.py:34 +msgid "Mumblefly" +msgstr "" + +#: plinth/modules/mumble/manifest.py:43 +msgid "Mumla" +msgstr "" + +#: plinth/modules/mumble/views.py:39 +msgid "SuperUser password successfully updated." +msgstr "" + +#: plinth/modules/names/__init__.py:22 +#, python-brace-format +msgid "" +"Name Services provides an overview of the ways {box_name} can be reached " +"from the public Internet: domain name, Tor onion service, and Pagekite. For " +"each type of name, it is shown whether the HTTP, HTTPS, and SSH services are " +"enabled or disabled for incoming connections through the given name." +msgstr "" + +#: plinth/modules/names/__init__.py:43 +msgid "Name Services" +msgstr "" + +#: plinth/modules/names/components.py:12 +msgid "All" +msgstr "" + +#: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20 +msgid "All web apps" +msgstr "" + +#: plinth/modules/names/components.py:24 +msgid "Secure Shell" +msgstr "" + +#: plinth/modules/names/templates/names.html:17 +msgid "Services" +msgstr "" + +#: plinth/modules/networks/__init__.py:36 +msgid "" +"Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " +"PPPoE. Share that connection with other devices on the network." +msgstr "" + +#: plinth/modules/networks/__init__.py:38 +msgid "" +"Devices administered through other methods may not be available for " +"configuration here." +msgstr "" + +#: plinth/modules/networks/__init__.py:59 +msgid "Networks" +msgstr "" + +#: plinth/modules/networks/__init__.py:180 +#, python-brace-format +msgid "Using DNSSEC on IPv{kind}" +msgstr "" + +#: plinth/modules/networks/forms.py:16 +msgid "Connection Type" +msgstr "" + +#: plinth/modules/networks/forms.py:28 +msgid "Connection Name" +msgstr "" + +#: plinth/modules/networks/forms.py:30 +msgid "Network Interface" +msgstr "" + +#: plinth/modules/networks/forms.py:31 +msgid "The network device that this connection should be bound to." +msgstr "" + +#: plinth/modules/networks/forms.py:34 +msgid "Firewall Zone" +msgstr "" + +#: plinth/modules/networks/forms.py:35 +msgid "" +"The firewall zone will control which services are available over this " +"interfaces. Select Internal only for trusted networks." +msgstr "" + +#: plinth/modules/networks/forms.py:39 +msgid "IPv4 Addressing Method" +msgstr "" + +#: plinth/modules/networks/forms.py:41 +msgid "" +"Automatic (DHCP): Configure automatically, use Internet connection from this " +"network" +msgstr "" + +#: plinth/modules/networks/forms.py:44 +msgid "" +"Shared: Act as a router, provide Internet connection to other devices on " +"this network" +msgstr "" + +#: plinth/modules/networks/forms.py:47 plinth/modules/networks/forms.py:85 +msgid "" +"Manual: Use manually specified parameters, use Internet connection from this " +"network" +msgstr "" + +#: plinth/modules/networks/forms.py:50 +msgid "Disabled: Do not configure this addressing method" +msgstr "" + +#: plinth/modules/networks/forms.py:57 +msgid "Netmask" +msgstr "" + +#: plinth/modules/networks/forms.py:58 +msgid "" +"Optional value. If left blank, a default netmask based on the address will " +"be used." +msgstr "" + +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:97 +#: plinth/modules/networks/templates/connection_show.html:193 +#: plinth/modules/networks/templates/connection_show.html:234 +msgid "Gateway" +msgstr "" + +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:97 +msgid "Optional value." +msgstr "" + +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:100 +msgid "DNS Server" +msgstr "" + +#: plinth/modules/networks/forms.py:66 +msgid "" +"Optional value. If this value is given and IPv4 addressing method is " +"\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." +msgstr "" + +#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:106 +msgid "Second DNS Server" +msgstr "" + +#: plinth/modules/networks/forms.py:72 +msgid "" +"Optional value. If this value is given and IPv4 Addressing Method is " +"\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." +msgstr "" + +#: plinth/modules/networks/forms.py:77 +msgid "IPv6 Addressing Method" +msgstr "" + +#: plinth/modules/networks/forms.py:79 +msgid "" +"Automatic: Configure automatically, use Internet connection from this network" +msgstr "" + +#: plinth/modules/networks/forms.py:82 +msgid "" +"Automatic (DHCP only): Configure automatically, use Internet connection from " +"this network" +msgstr "" + +#: plinth/modules/networks/forms.py:87 +msgid "Ignore: Ignore this addressing method" +msgstr "" + +#: plinth/modules/networks/forms.py:92 +msgid "Prefix" +msgstr "" + +#: plinth/modules/networks/forms.py:93 +msgid "Value between 1 and 128." +msgstr "" + +#: plinth/modules/networks/forms.py:101 +msgid "" +"Optional value. If this value is given and IPv6 addressing method is " +"\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." +msgstr "" + +#: plinth/modules/networks/forms.py:107 +msgid "" +"Optional value. If this value is given and IPv6 Addressing Method is " +"\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." +msgstr "" + +#: plinth/modules/networks/forms.py:120 +msgid "-- select --" +msgstr "" + +#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/templates/connection_show.html:135 +msgid "SSID" +msgstr "" + +#: plinth/modules/networks/forms.py:248 +msgid "The visible name of the network." +msgstr "" + +#: plinth/modules/networks/forms.py:250 +#: plinth/modules/networks/templates/connection_show.html:148 +msgid "Mode" +msgstr "" + +#: plinth/modules/networks/forms.py:250 +msgid "Infrastructure" +msgstr "" + +#: plinth/modules/networks/forms.py:251 +msgid "Access Point" +msgstr "" + +#: plinth/modules/networks/forms.py:252 +msgid "Ad-hoc" +msgstr "" + +#: plinth/modules/networks/forms.py:254 +msgid "Frequency Band" +msgstr "" + +#: plinth/modules/networks/forms.py:254 +msgid "Automatic" +msgstr "" + +#: plinth/modules/networks/forms.py:255 +msgid "A (5 GHz)" +msgstr "" + +#: plinth/modules/networks/forms.py:256 +msgid "B/G (2.4 GHz)" +msgstr "" + +#: plinth/modules/networks/forms.py:258 +#: plinth/modules/networks/templates/connection_show.html:162 +msgid "Channel" +msgstr "" + +#: plinth/modules/networks/forms.py:259 +msgid "" +"Optional value. Wireless channel in the selected frequency band to restrict " +"to. Blank or 0 value means automatic selection." +msgstr "" + +#: plinth/modules/networks/forms.py:264 +msgid "BSSID" +msgstr "" + +#: plinth/modules/networks/forms.py:265 +msgid "" +"Optional value. Unique identifier for the access point. When connecting to " +"an access point, connect only if the BSSID of the access point matches the " +"one provided. Example: 00:11:22:aa:bb:cc." +msgstr "" + +#: plinth/modules/networks/forms.py:271 +msgid "Authentication Mode" +msgstr "" + +#: plinth/modules/networks/forms.py:272 +msgid "" +"Select WPA if the wireless network is secured and requires clients to have " +"the password to connect." +msgstr "" + +#: plinth/modules/networks/forms.py:274 +msgid "WPA" +msgstr "" + +#: plinth/modules/networks/forms.py:274 +msgid "Open" +msgstr "" + +#: plinth/modules/networks/forms.py:310 +#, python-brace-format +msgid "Specify how your {box_name} is connected to your network" +msgstr "" + +#: plinth/modules/networks/forms.py:317 +#, python-brace-format +msgid "" +"Connected to a router

Your {box_name} gets its " +"Internet connection from your router via Wi-Fi or Ethernet cable. This is a " +"typical home setup.

" +msgstr "" + +#: plinth/modules/networks/forms.py:324 +#, python-brace-format +msgid "" +"{box_name} is your router

Your {box_name} has " +"multiple network interfaces such as multiple Ethernet ports or a Wi-Fi " +"adapter. {box_name} is directly connected to the Internet and all your " +"devices connect to {box_name} for their Internet connectivity.

" +msgstr "" + +#: plinth/modules/networks/forms.py:333 +#, python-brace-format +msgid "" +"Directly connected to the Internet

Your Internet " +"connection is directly attached to your {box_name} and there are no other " +"devices on the network. This can happen on community or cloud setups.

" +msgstr "" + +#: plinth/modules/networks/forms.py:352 +msgid "Choose your internet connection type" +msgstr "" + +#: plinth/modules/networks/forms.py:356 +msgid "" +"I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " +"connected to the Internet. Every time you connect to the Internet with your " +"Internet Service Provider (ISP), you may get a different IP address, " +"especially after some offline time. Many ISPs offer this type of " +"connectivity. If you have a public IP address but are unsure if it changes " +"over time or not, it is safer to choose this option.

" +msgstr "" + +#: plinth/modules/networks/forms.py:368 +#, python-brace-format +msgid "" +"I have a public IP address that does not change over time (recommended)

This means that devices on the Internet can reach you " +"when you are connected to the Internet. Every time you connect to the " +"Internet with your Internet Service Provider (ISP), you always get the same " +"IP address. This is the most trouble-free setup for many {box_name} services " +"but very few ISPs offer this. You may be able to get this service from your " +"ISP by making an additional payment.

" +msgstr "" + +#: plinth/modules/networks/forms.py:381 +#, python-brace-format +msgid "" +"I dont have a public IP address

This means that " +"devices on the Internet can not reach you when you are connected to " +"the Internet. Every time you connect to the Internet with your Internet " +"Service Provider (ISP), you get an IP address that is only relevant for " +"local networks. Many ISPs offer this type of connectivity. This is the most " +"troublesome situation for hosting services at home. {box_name} provides many " +"workaround solutions but each solution has some limitations.

" +msgstr "" + +#: plinth/modules/networks/forms.py:394 +msgid "" +"I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" +msgstr "" + +#: plinth/modules/networks/forms.py:411 +msgid "Preferred router configuration" +msgstr "" + +#: plinth/modules/networks/forms.py:416 +#, python-brace-format +msgid "" +"Use DMZ feature to forward all traffic (recommended)

Most routers provide a configuration setting called DMZ. This will allow " +"the router to forward all incoming traffic from the Internet to a single IP " +"address such as the {box_name}'s IP address. First remember to configure a " +"static local IP address for your {box_name} in your router's configuration." +msgstr "" + +#: plinth/modules/networks/forms.py:428 +#, python-brace-format +msgid "" +"Forward specific traffic as needed by each application

You may alternatively choose to forward only specific traffic to your " +"{box_name}. This is ideal if you have other servers like {box_name} in your " +"network or if your router does not support DMZ feature. All applications " +"that provide a web interface need you to forward traffic from ports 80 and " +"443 to work. Each of the other applications will suggest which port(s) need " +"to be forwarded for that application to work.

" +msgstr "" + +#: plinth/modules/networks/forms.py:442 +msgid "" +"Router is currently unconfigured

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.

" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:24 +#, python-format +msgid "" +"This is the primary connection that %(box_name)s relies on for Internet " +"connectivity. Altering it may render your %(box_name)s unreachable. Ensure " +"that you have other means to access %(box_name)s before altering this " +"connection." +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:36 +msgid "Edit connection" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:36 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:72 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:73 +#: plinth/templates/base.html:156 plinth/templates/base.html:157 +msgid "Edit" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:43 +#: plinth/modules/networks/templates/connections_list.html:61 +msgid "Deactivate" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:50 +#: plinth/modules/networks/templates/connections_list.html:69 +msgid "Activate" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:56 +msgid "Delete connection" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:59 +#: plinth/modules/networks/templates/connections_diagram.html:19 +#: plinth/modules/networks/templates/connections_diagram.html:22 +#: plinth/modules/networks/templates/connections_diagram.html:51 +#: plinth/modules/networks/templates/connections_diagram.html:73 +msgid "Connection" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:64 +msgid "Primary connection" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:66 +#: plinth/modules/networks/templates/connection_show.html:208 +#: plinth/modules/networks/templates/connection_show.html:249 +msgid "yes" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:77 +#: plinth/modules/storage/templates/storage.html:23 +msgid "Device" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:81 +msgid "State" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:86 +msgid "State reason" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:95 +msgid "MAC address" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:99 +msgid "Interface" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:103 +#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:19 +#: plinth/modules/snapshot/templates/snapshot_manage.html:29 +#: plinth/modules/snapshot/templates/snapshot_rollback.html:27 +msgid "Description" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:109 +msgid "Physical Link" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:114 +msgid "Link state" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:117 +msgid "cable is connected" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:120 +msgid "please check cable" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:124 +#: plinth/modules/networks/templates/connection_show.html:140 +msgid "Speed" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:126 +#, python-format +msgid "%(ethernet_speed)s Mbit/s" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:142 +#, python-format +msgid "%(wireless_bitrate)s Mbit/s" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:154 +msgid "Signal strength" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:170 +msgid "IPv4" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:175 +#: plinth/modules/networks/templates/connection_show.html:218 +#: plinth/modules/shadowsocks/forms.py:49 +msgid "Method" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:184 +#: plinth/modules/networks/templates/connection_show.html:225 +msgid "IP address" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:200 +#: plinth/modules/networks/templates/connection_show.html:241 +msgid "DNS server" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:207 +#: plinth/modules/networks/templates/connection_show.html:248 +#: plinth/modules/storage/forms.py:138 +msgid "Default" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:213 +msgid "IPv6" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:256 +msgid "This connection is not active." +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:42 +msgid "Security" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:264 +#: plinth/modules/networks/templates/connection_show.html:284 +#: plinth/modules/networks/templates/connection_show.html:303 +msgid "Firewall zone" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:273 +msgid "" +"This interface should be connected to a local network/machine. If you " +"connect this interface to a public network, services meant to be available " +"only internally will become available externally. This is a security risk." +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:293 +#: plinth/modules/networks/templates/connection_show.html:316 +msgid "" +"This interface should receive your Internet connection. If you connect it to " +"a local network/machine, many services meant to available only internally " +"will not be available." +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:305 +#: plinth/modules/networks/templates/connections_diagram.html:24 +#: plinth/network.py:24 +msgid "External" +msgstr "" + +#: plinth/modules/networks/templates/connection_show.html:312 +#, python-format +msgid "" +"This interface is not maintained by %(box_name)s. For security, it is " +"automatically assigned to the external zone." +msgstr "" + +#: plinth/modules/networks/templates/connections_create.html:19 +msgid "Create Connection" +msgstr "" + +#: plinth/modules/networks/templates/connections_delete.html:11 +#: plinth/modules/networks/views.py:517 +msgid "Delete Connection" +msgstr "" + +#: plinth/modules/networks/templates/connections_delete.html:14 +#, python-format +msgid "Delete connection %(name)s permanently?" +msgstr "" + +#: plinth/modules/networks/templates/connections_diagram.html:11 +msgid "Internet" +msgstr "" + +#: plinth/modules/networks/templates/connections_diagram.html:16 +#: plinth/modules/networks/templates/connections_diagram.html:48 +msgid "Spacing" +msgstr "" + +#: plinth/modules/networks/templates/connections_diagram.html:29 +#: plinth/modules/networks/templates/connections_diagram.html:59 +#: plinth/modules/networks/views.py:99 plinth/network.py:27 +msgid "Ethernet" +msgstr "" + +#: plinth/modules/networks/templates/connections_diagram.html:32 +#: plinth/modules/networks/templates/connections_diagram.html:62 +#: plinth/modules/networks/views.py:100 plinth/network.py:28 +msgid "Wi-Fi" +msgstr "" + +#: plinth/modules/networks/templates/connections_diagram.html:35 +#: plinth/modules/networks/templates/connections_diagram.html:65 +#: plinth/modules/networks/templates/connections_list.html:43 +#, python-format +msgid "Show connection %(name)s" +msgstr "" + +#: plinth/modules/networks/templates/connections_diagram.html:53 +#: plinth/network.py:24 +msgid "Internal" +msgstr "" + +#: plinth/modules/networks/templates/connections_diagram.html:77 +msgid "Computer" +msgstr "" + +#: plinth/modules/networks/templates/connections_edit.html:20 +#: plinth/modules/networks/views.py:237 plinth/modules/networks/views.py:321 +msgid "Edit Connection" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:8 +msgid "Connections" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:12 +#: plinth/modules/networks/templates/connections_list.html:14 +#: plinth/modules/networks/views.py:370 +msgid "Nearby Wi-Fi Networks" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:17 +#: plinth/modules/networks/templates/connections_list.html:19 +#: plinth/modules/networks/views.py:394 +#: plinth/modules/wireguard/templates/wireguard_add_server.html:19 +msgid "Add Connection" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:31 +msgid "Active" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:35 +msgid "Inactive" +msgstr "" + +#: plinth/modules/networks/templates/connections_list.html:77 +#, python-format +msgid "Delete connection %(name)s" +msgstr "" + +#: plinth/modules/networks/templates/connections_type_select.html:19 +msgid "Create..." +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_content.html:10 +msgid "What Type Of Internet Connection Do You Have?" +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_content.html:16 +msgid "" +"Select an option that best describes the type of Internet connection. This " +"information is used only to guide you with further setup." +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 +#: plinth/modules/networks/templates/network_topology_firstboot.html:19 +#: plinth/modules/networks/templates/router_configuration_firstboot.html:19 +#: plinth/modules/users/templates/users_firstboot.html:63 +msgid "Skip this step" +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 +#: plinth/modules/networks/templates/network_topology_firstboot.html:21 +#: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:35 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:38 +#: plinth/modules/upgrades/templates/update-firstboot.html:33 +msgid "Next" +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_main.html:9 +msgid "Your Internet Connection Type" +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_main.html:14 +msgid "" +"The following best describes the type of Internet connection provided by " +"your ISP. This information is only used to suggest you necessary " +"configuration actions." +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_main.html:23 +msgid "My ISP provides a public IP address that does not change over time." +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_main.html:27 +msgid "My ISP provides a public IP address that may change over time." +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_main.html:31 +msgid "My ISP does not provide a public IP address." +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_main.html:35 +msgid "I do not know the type of connection my ISP provides." +msgstr "" + +#: plinth/modules/networks/templates/internet_connectivity_main.html:41 +#: plinth/modules/networks/templates/network_topology_main.html:41 +msgid "Update..." +msgstr "" + +#: plinth/modules/networks/templates/network_topology_content.html:10 +#, python-format +msgid "How is Your %(box_name)s Connected to the Internet?" +msgstr "" + +#: plinth/modules/networks/templates/network_topology_content.html:16 +#, python-format +msgid "" +"Select an option that best describes how your %(box_name)s is connected in " +"your network. This information is used to guide you with further setup. It " +"can be changed later." +msgstr "" + +#: plinth/modules/networks/templates/network_topology_main.html:9 +#, python-format +msgid "%(box_name)s Internet Connectivity" +msgstr "" + +#: plinth/modules/networks/templates/network_topology_main.html:15 +#, python-format +msgid "" +"The following best describes how your %(box_name)s is connected in your " +"network. This information is used only to suggest necessary configuration " +"actions." +msgstr "" + +#: plinth/modules/networks/templates/network_topology_main.html:24 +#, python-format +msgid "" +"Your %(box_name)s gets its Internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/network_topology_main.html:29 +#, python-format +msgid "" +"Your %(box_name)s is directly connected to the Internet and all your devices " +"connect to %(box_name)s for their Internet connectivity." +msgstr "" + +#: plinth/modules/networks/templates/network_topology_main.html:34 +#, python-format +msgid "" +"Your Internet connection is directly attached to your %(box_name)s and there " +"are no other devices on the network." +msgstr "" + +#: plinth/modules/networks/templates/networks_configuration.html:24 +msgid "" +"Advanced networking operations such as bonding, bridging and VLAN management " +"are provided by the Cockpit app." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:10 +#, python-format +msgid "Setup %(box_name)s Behind a Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:16 +#, python-format +msgid "" +"Your %(box_name)s gets its internet connection from your router via Wi-Fi or " +"Ethernet cable. This is a typical home setup." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:23 +#, python-format +msgid "" +"With this setup, any device on the internet trying to reach your " +"%(box_name)s will have to go through your router. The router will need to be " +"configured to forward all traffic it receives so that %(box_name)s provides " +"the services." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:32 +msgid "" +"If you don't have control over your router, choose not to configure it. To " +"see options to overcome this limitation, choose 'I dont have a public IP " +"address' option in Internet connection type selection." +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:39 +msgid "Choose How You Wish to Configure Your Router" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:42 +msgid "" +"You will need to login to your router's administration console provided by " +"the router. This may look like one of the following:" +msgstr "" + +#: plinth/modules/networks/templates/router_configuration_content.html:54 +msgid "" +"The username and password is configured by you when you first setup the " +"router. For many routers, this information is printed at the back of the " +"router. If you don't remember the credentials or the IP address of the " +"router, you may decide to reset it and set it up freshly. Lookup your router " +"model number and search online for the router's manual. This will provide " +"full instructions on how to perform this task." +msgstr "" + +#: plinth/modules/networks/views.py:27 +msgid "disabled" +msgstr "" + +#: plinth/modules/networks/views.py:28 +msgid "automatic" +msgstr "" + +#: plinth/modules/networks/views.py:29 +msgid "manual" +msgstr "" + +#: plinth/modules/networks/views.py:30 +msgid "shared" +msgstr "" + +#: plinth/modules/networks/views.py:31 +msgid "link-local" +msgstr "" + +#: plinth/modules/networks/views.py:37 plinth/modules/networks/views.py:98 +#: plinth/modules/networks/views.py:109 +msgid "unknown" +msgstr "" + +#: plinth/modules/networks/views.py:38 +msgid "unmanaged" +msgstr "" + +#: plinth/modules/networks/views.py:39 +msgid "unavailable" +msgstr "" + +#: plinth/modules/networks/views.py:40 +msgid "disconnected" +msgstr "" + +#: plinth/modules/networks/views.py:41 +msgid "preparing" +msgstr "" + +#: plinth/modules/networks/views.py:42 +msgid "connecting" +msgstr "" + +#: plinth/modules/networks/views.py:43 +msgid "needs authentication" +msgstr "" + +#: plinth/modules/networks/views.py:44 +msgid "requesting address" +msgstr "" + +#: plinth/modules/networks/views.py:45 +msgid "checking" +msgstr "" + +#: plinth/modules/networks/views.py:46 +msgid "waiting for secondary" +msgstr "" + +#: plinth/modules/networks/views.py:47 +msgid "activated" +msgstr "" + +#: plinth/modules/networks/views.py:48 +msgid "deactivating" +msgstr "" + +#: plinth/modules/networks/views.py:56 +msgid "no reason" +msgstr "" + +#: plinth/modules/networks/views.py:58 +msgid "unknown error" +msgstr "" + +#: plinth/modules/networks/views.py:60 +msgid "device is now managed" +msgstr "" + +#: plinth/modules/networks/views.py:62 +msgid "device is now unmanaged" +msgstr "" + +#: plinth/modules/networks/views.py:64 +msgid "configuration failed" +msgstr "" + +#: plinth/modules/networks/views.py:66 +msgid "secrets required" +msgstr "" + +#: plinth/modules/networks/views.py:68 +msgid "DHCP client failed to start" +msgstr "" + +#: plinth/modules/networks/views.py:70 +msgid "DHCP client error" +msgstr "" + +#: plinth/modules/networks/views.py:72 +msgid "DHCP client failed" +msgstr "" + +#: plinth/modules/networks/views.py:74 +msgid "shared connection service failed to start" +msgstr "" + +#: plinth/modules/networks/views.py:76 +msgid "shared connection service failed" +msgstr "" + +#: plinth/modules/networks/views.py:78 +msgid "device was removed" +msgstr "" + +#: plinth/modules/networks/views.py:80 +msgid "device disconnected by user" +msgstr "" + +#: plinth/modules/networks/views.py:82 +msgid "a dependency of the connection failed" +msgstr "" + +#: plinth/modules/networks/views.py:84 +msgid "Wi-Fi network not found" +msgstr "" + +#: plinth/modules/networks/views.py:86 +msgid "a secondary connection failed" +msgstr "" + +#: plinth/modules/networks/views.py:88 +msgid "new connection activation was enqueued" +msgstr "" + +#: plinth/modules/networks/views.py:90 +msgid "a duplicate IP address was detected" +msgstr "" + +#: plinth/modules/networks/views.py:92 +msgid "selected IP method is not supported" +msgstr "" + +#: plinth/modules/networks/views.py:101 +msgid "generic" +msgstr "" + +#: plinth/modules/networks/views.py:102 +msgid "TUN or TAP interface" +msgstr "" + +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/wireguard/manifest.py:14 +msgid "WireGuard" +msgstr "" + +#: plinth/modules/networks/views.py:110 +msgid "ad-hoc" +msgstr "" + +#: plinth/modules/networks/views.py:111 +msgid "infrastructure" +msgstr "" + +#: plinth/modules/networks/views.py:112 +msgid "access point" +msgstr "" + +#: plinth/modules/networks/views.py:113 +msgid "mesh point" +msgstr "" + +#: plinth/modules/networks/views.py:127 +msgid "Network Connections" +msgstr "" + +#: plinth/modules/networks/views.py:142 +msgid "Cannot show connection: Connection not found." +msgstr "" + +#: plinth/modules/networks/views.py:195 +msgid "Connection Information" +msgstr "" + +#: plinth/modules/networks/views.py:209 +msgid "Cannot edit connection: Connection not found." +msgstr "" + +#: plinth/modules/networks/views.py:215 +msgid "This type of connection is not yet understood." +msgstr "" + +#: plinth/modules/networks/views.py:333 +#, python-brace-format +msgid "Activated connection {name}." +msgstr "" + +#: plinth/modules/networks/views.py:337 +msgid "Failed to activate connection: Connection not found." +msgstr "" + +#: plinth/modules/networks/views.py:343 +#, python-brace-format +msgid "Failed to activate connection {name}: No suitable device is available." +msgstr "" + +#: plinth/modules/networks/views.py:356 +#, python-brace-format +msgid "Deactivated connection {name}." +msgstr "" + +#: plinth/modules/networks/views.py:360 +msgid "Failed to de-activate connection: Connection not found." +msgstr "" + +#: plinth/modules/networks/views.py:412 +msgid "Adding New Generic Connection" +msgstr "" + +#: plinth/modules/networks/views.py:430 +msgid "Adding New Ethernet Connection" +msgstr "" + +#: plinth/modules/networks/views.py:448 +msgid "Adding New PPPoE Connection" +msgstr "" + +#: plinth/modules/networks/views.py:483 +msgid "Adding New Wi-Fi Connection" +msgstr "" + +#: plinth/modules/networks/views.py:498 +#, python-brace-format +msgid "Connection {name} deleted." +msgstr "" + +#: plinth/modules/networks/views.py:502 plinth/modules/networks/views.py:512 +msgid "Failed to delete connection: Connection not found." +msgstr "" + +#: plinth/modules/openvpn/__init__.py:25 +#, python-brace-format +msgid "" +"Virtual Private Network (VPN) is a technique for securely connecting two " +"devices in order to access resources of a private network. While you are " +"away from home, you can connect to your {box_name} in order to join your " +"home network and access private/internal services provided by {box_name}. " +"You can also access the rest of the Internet via {box_name} for added " +"security and anonymity." +msgstr "" + +#: plinth/modules/openvpn/__init__.py:55 +msgid "Connect to VPN services" +msgstr "" + +#: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 +msgid "OpenVPN" +msgstr "" + +#: plinth/modules/openvpn/__init__.py:59 +#: plinth/modules/wireguard/__init__.py:51 +msgid "Virtual Private Network" +msgstr "" + +#: plinth/modules/openvpn/__init__.py:70 +#, python-brace-format +msgid "" +"Download Profile" +msgstr "" + +#: plinth/modules/openvpn/manifest.py:52 +msgid "Tunnelblick" +msgstr "" + +#: plinth/modules/openvpn/templates/migrate_to_ecc.html:7 +msgid "Migrate to ECC" +msgstr "" + +#: plinth/modules/openvpn/templates/migrate_to_ecc.html:10 +msgid "" +"Your OpenVPN installation is currently using RSA. Switching to the modern " +"Elliptic Curve Cryptography improves speed of establishing a connection and " +"security. This operation is irreversible. It should only take a few minutes " +"on most single board computers." +msgstr "" + +#: plinth/modules/openvpn/templates/migrate_to_ecc.html:19 +#, python-format +msgid "" +"All new installations of OpenVPN on %(box_name)s will use ECC by default. We " +"recommend migrating as soon as possible." +msgstr "" + +#: plinth/modules/openvpn/templates/migrate_to_ecc.html:26 +#, python-format +msgid "" +"Warning: Existing client profiles will be invalidated by this " +"operation. All OpenVPN users on %(box_name)s must download their new " +"profiles. OpenVPN clients compatible with ECC should be used to connect to " +"this server." +msgstr "" + +#: plinth/modules/openvpn/templates/migrate_to_ecc.html:38 +msgid "Migrate" +msgstr "" + +#: plinth/modules/openvpn/templates/openvpn.html:22 +msgid "Profile" +msgstr "" + +#: plinth/modules/openvpn/templates/openvpn.html:25 +#, python-format +msgid "" +"To connect to %(box_name)s's VPN, you need to download a profile and feed it " +"to an OpenVPN client on your mobile or desktop machine. OpenVPN Clients are " +"available for most platforms. Click \"Learn more...\" above for recommended " +"clients and instructions on how to configure them." +msgstr "" + +#: plinth/modules/openvpn/templates/openvpn.html:35 +#, python-format +msgid "Profile is specific to each user of %(box_name)s. Keep it a secret." +msgstr "" + +#: plinth/modules/openvpn/templates/openvpn.html:46 +msgid "Download my profile" +msgstr "" + +#: plinth/modules/pagekite/__init__.py:21 +#, python-brace-format +msgid "" +"PageKite is a system for exposing {box_name} services when you don't have a " +"direct connection to the Internet. You only need this if your {box_name} " +"services are unreachable from the rest of the Internet. This includes the " +"following situations:" +msgstr "" + +#: plinth/modules/pagekite/__init__.py:26 +#, python-brace-format +msgid "{box_name} is behind a restricted firewall." +msgstr "" + +#: plinth/modules/pagekite/__init__.py:29 +#, python-brace-format +msgid "{box_name} is connected to a (wireless) router which you don't control." +msgstr "" + +#: plinth/modules/pagekite/__init__.py:31 +msgid "" +"Your ISP does not provide you an external IP address and instead provides " +"Internet connection through NAT." +msgstr "" + +#: plinth/modules/pagekite/__init__.py:33 +msgid "" +"Your ISP does not provide you a static IP address and your IP address " +"changes every time you connect to Internet." +msgstr "" + +#: plinth/modules/pagekite/__init__.py:35 +msgid "Your ISP limits incoming connections." +msgstr "" + +#: plinth/modules/pagekite/__init__.py:37 +#, python-brace-format +msgid "" +"PageKite works around NAT, firewalls and IP address limitations by using a " +"combination of tunnels and reverse proxies. You can use any pagekite service " +"provider, for example pagekite.net. In " +"the future it might be possible to use your buddy's {box_name} for this." +msgstr "" + +#: plinth/modules/pagekite/__init__.py:63 +msgid "PageKite" +msgstr "" + +#: plinth/modules/pagekite/__init__.py:64 +msgid "Public Visibility" +msgstr "" + +#: plinth/modules/pagekite/__init__.py:77 +msgid "PageKite Domain" +msgstr "" + +#: plinth/modules/pagekite/forms.py:32 +msgid "Server domain" +msgstr "" + +#: plinth/modules/pagekite/forms.py:34 +msgid "" +"Select your pagekite server. Set \"pagekite.net\" to use the default " +"pagekite.net server." +msgstr "" + +#: plinth/modules/pagekite/forms.py:37 plinth/modules/shadowsocks/forms.py:40 +msgid "Server port" +msgstr "" + +#: plinth/modules/pagekite/forms.py:38 +msgid "Port of your pagekite server (default: 80)" +msgstr "" + +#: plinth/modules/pagekite/forms.py:40 +msgid "Kite name" +msgstr "" + +#: plinth/modules/pagekite/forms.py:41 +msgid "Example: mybox.pagekite.me" +msgstr "" + +#: plinth/modules/pagekite/forms.py:43 +msgid "Invalid kite name" +msgstr "" + +#: plinth/modules/pagekite/forms.py:47 +msgid "Kite secret" +msgstr "" + +#: plinth/modules/pagekite/forms.py:48 +msgid "" +"A secret associated with the kite or the default secret for your account if " +"no secret is set on the kite." +msgstr "" + +#: plinth/modules/pagekite/forms.py:88 +msgid "protocol" +msgstr "" + +#: plinth/modules/pagekite/forms.py:91 +msgid "external (frontend) port" +msgstr "" + +#: plinth/modules/pagekite/forms.py:94 +msgid "internal (freedombox) port" +msgstr "" + +#: plinth/modules/pagekite/forms.py:95 +msgid "Enable Subdomains" +msgstr "" + +#: plinth/modules/pagekite/forms.py:130 +msgid "Deleted custom service" +msgstr "" + +#: plinth/modules/pagekite/forms.py:164 +msgid "This service is already available as a standard service." +msgstr "" + +#: plinth/modules/pagekite/forms.py:172 +msgid "Added custom service" +msgstr "" + +#: plinth/modules/pagekite/forms.py:175 +msgid "This service already exists" +msgstr "" + +#: plinth/modules/pagekite/templates/pagekite_configure.html:13 +msgid "Custom Services" +msgstr "" + +#: plinth/modules/pagekite/templates/pagekite_configure.html:17 +#: plinth/modules/pagekite/templates/pagekite_configure.html:19 +msgid "Add Custom Service" +msgstr "" + +#: plinth/modules/pagekite/templates/pagekite_configure.html:35 +#, python-format +msgid "connected to %(backend_host)s:%(backend_port)s" +msgstr "" + +#: plinth/modules/pagekite/templates/pagekite_configure.html:47 +msgid "Delete this service" +msgstr "" + +#: plinth/modules/pagekite/templates/pagekite_custom_services.html:11 +#: plinth/modules/pagekite/views.py:34 +msgid "Add custom PageKite service" +msgstr "" + +#: plinth/modules/pagekite/templates/pagekite_custom_services.html:14 +msgid "" +"Warning:
Your PageKite frontend server may not support all the " +"protocol/port combinations that you are able to define here. For example, " +"HTTPS on ports other than 443 is known to cause problems." +msgstr "" + +#: plinth/modules/pagekite/utils.py:45 +msgid "Web Server (HTTP)" +msgstr "" + +#: plinth/modules/pagekite/utils.py:47 +#, python-brace-format +msgid "Site will be available at http://{0}" +msgstr "" + +#: plinth/modules/pagekite/utils.py:59 +msgid "Web Server (HTTPS)" +msgstr "" + +#: plinth/modules/pagekite/utils.py:61 +#, python-brace-format +msgid "Site will be available at https://{0}" +msgstr "" + +#: plinth/modules/pagekite/utils.py:73 +msgid "Secure Shell (SSH)" +msgstr "" + +#: plinth/modules/pagekite/utils.py:75 +msgid "" +"See SSH client setup instructions" +msgstr "" + +#: plinth/modules/performance/__init__.py:16 +#: plinth/modules/performance/__init__.py:42 +msgid "Performance" +msgstr "" + +#: plinth/modules/performance/__init__.py:19 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:23 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + +#: plinth/modules/performance/__init__.py:43 +msgid "System Monitoring" +msgstr "" + +#: plinth/modules/power/__init__.py:14 +msgid "Restart or shut down the system." +msgstr "" + +#: plinth/modules/power/__init__.py:31 +msgid "Power" +msgstr "" + +#: plinth/modules/power/templates/power.html:13 +msgid "" +"Currently an installation or upgrade is running. Consider waiting until it's " +"finished before shutting down or restarting." +msgstr "" + +#: plinth/modules/power/templates/power.html:22 plinth/templates/base.html:171 +#: plinth/templates/base.html:172 +msgid "Restart" +msgstr "" + +#: plinth/modules/power/templates/power.html:25 +msgid "Shut Down" +msgstr "" + +#: plinth/modules/power/templates/power_restart.html:17 +msgid "" +"Are you sure you want to restart? You will not be able to access this web " +"interface for a few minutes until the system is restarted." +msgstr "" + +#: plinth/modules/power/templates/power_restart.html:34 +msgid "" +"Currently an installation or upgrade is running. Consider waiting until it's " +"finished before restarting." +msgstr "" + +#: plinth/modules/power/templates/power_restart.html:48 +#: plinth/modules/power/templates/power_restart.html:51 +msgid "Restart Now" +msgstr "" + +#: plinth/modules/power/templates/power_shutdown.html:17 +msgid "" +"Are you sure you want to shut down? You will not be able to access this web " +"interface after shut down." +msgstr "" + +#: plinth/modules/power/templates/power_shutdown.html:33 +msgid "" +"Currently an installation or upgrade is running. Consider waiting until it's " +"finished before shutting down." +msgstr "" + +#: plinth/modules/power/templates/power_shutdown.html:47 +#: plinth/modules/power/templates/power_shutdown.html:50 +msgid "Shut Down Now" +msgstr "" + +#: plinth/modules/privoxy/__init__.py:23 +msgid "" +"Privoxy is a non-caching web proxy with advanced filtering capabilities for " +"enhancing privacy, modifying web page data and HTTP headers, controlling " +"access, and removing ads and other obnoxious Internet junk. " +msgstr "" + +#: plinth/modules/privoxy/__init__.py:28 +#, python-brace-format +msgid "" +"You can use Privoxy by modifying your browser proxy settings to your " +"{box_name} hostname (or IP address) with port 8118. While using Privoxy, you " +"can see its configuration details and documentation at http://config.privoxy.org/ or http://p.p." +msgstr "" + +#: plinth/modules/privoxy/__init__.py:52 +msgid "Privoxy" +msgstr "" + +#: plinth/modules/privoxy/__init__.py:53 +msgid "Web Proxy" +msgstr "" + +#: plinth/modules/privoxy/__init__.py:114 +#, python-brace-format +msgid "Access {url} with proxy {proxy} on tcp{kind}" +msgstr "" + +#: plinth/modules/quassel/__init__.py:27 +#, python-brace-format +msgid "" +"Quassel is an IRC application that is split into two parts, a \"core\" and a " +"\"client\". This allows the core to remain connected to IRC servers, and to " +"continue receiving messages, even when the client is disconnected. " +"{box_name} can run the Quassel core service keeping you always online and " +"one or more Quassel clients from a desktop or a mobile can be used to " +"connect and disconnect from it." +msgstr "" + +#: plinth/modules/quassel/__init__.py:34 +msgid "" +"You can connect to your Quassel core on the default Quassel port 4242. " +"Clients to connect to Quassel from your desktop and mobile devices are available." +msgstr "" + +#: plinth/modules/quassel/__init__.py:56 plinth/modules/quassel/manifest.py:9 +msgid "Quassel" +msgstr "" + +#: plinth/modules/quassel/__init__.py:57 +msgid "IRC Client" +msgstr "" + +#: plinth/modules/quassel/manifest.py:33 +msgid "Quasseldroid" +msgstr "" + +#: plinth/modules/radicale/__init__.py:25 +#, python-brace-format +msgid "" +"Radicale is a CalDAV and CardDAV server. It allows synchronization and " +"sharing of scheduling and contact data. To use Radicale, a supported client " +"application is needed. Radicale can be accessed by any user with a " +"{box_name} login." +msgstr "" + +#: plinth/modules/radicale/__init__.py:31 +msgid "" +"Radicale provides a basic web interface, which only supports creating new " +"calendars and addressbooks. It does not support adding events or contacts, " +"which must be done using a separate client." +msgstr "" + +#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/manifest.py:74 +msgid "Radicale" +msgstr "" + +#: plinth/modules/radicale/__init__.py:56 +msgid "Calendar and Addressbook" +msgstr "" + +#: plinth/modules/radicale/forms.py:14 +msgid "Only the owner of a calendar/addressbook can view or make changes." +msgstr "" + +#: plinth/modules/radicale/forms.py:18 +#, python-brace-format +msgid "" +"Any user with a {box_name} login can view any calendar/addressbook, but only " +"the owner can make changes." +msgstr "" + +#: plinth/modules/radicale/forms.py:23 +#, python-brace-format +msgid "" +"Any user with a {box_name} login can view or make changes to any calendar/" +"addressbook." +msgstr "" + +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + +#: plinth/modules/radicale/manifest.py:9 +msgid "DAVx5" +msgstr "" + +#: plinth/modules/radicale/manifest.py:11 +msgid "" +"Enter the URL of the Radicale server (e.g. https://) and your user name. DAVx5 will show all existing calendars and " +"address books and you can create new." +msgstr "" + +#: plinth/modules/radicale/manifest.py:28 +msgid "GNOME Calendar" +msgstr "" + +#: plinth/modules/radicale/manifest.py:56 +msgid "Evolution" +msgstr "" + +#: plinth/modules/radicale/manifest.py:58 +msgid "" +"Evolution is a personal information management application that provides " +"integrated mail, calendaring and address book functionality." +msgstr "" + +#: plinth/modules/radicale/manifest.py:62 +msgid "" +"In Evolution add a new calendar and address book respectively with WebDAV. " +"Enter the URL of the Radicale server (e.g. https://) and your user name. Clicking on the search button will list the " +"existing calendars and address books." +msgstr "" + +#: plinth/modules/radicale/views.py:35 +msgid "Access rights configuration updated" +msgstr "" + +#: plinth/modules/roundcube/__init__.py:21 +msgid "" +"Roundcube webmail is a browser-based multilingual IMAP client with an " +"application-like user interface. It provides full functionality you expect " +"from an email client, including MIME support, address book, folder " +"manipulation, message searching and spell checking." +msgstr "" + +#: plinth/modules/roundcube/__init__.py:26 +msgid "" +"You can use it by providing the username and password of the email account " +"you wish to access followed by the domain name of the IMAP server for your " +"email provider, like imap.example.com. For IMAP over SSL " +"(recommended), fill the server field like imaps://imap.example.com." +msgstr "" + +#: plinth/modules/roundcube/__init__.py:31 +msgid "" +"For Gmail, username will be your Gmail address, password will be your Google " +"account password and server will be imaps://imap.gmail.com. " +"Note that you will also need to enable \"Less secure apps\" in your Google " +"account settings (https://www.google.com/settings/security/lesssecureapps)." +msgstr "" + +#: plinth/modules/roundcube/__init__.py:55 +msgid "Email Client" +msgstr "" + +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + +#: plinth/modules/samba/__init__.py:27 +msgid "" +"Samba allows to share files and folders between FreedomBox and other " +"computers in your local network." +msgstr "" + +#: plinth/modules/samba/__init__.py:30 +#, python-brace-format +msgid "" +"After installation, you can choose which disks to use for sharing. Enabled " +"shares are accessible in the file manager on your computer at location \\" +"\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " +"There are three types of shares you can choose from: " +msgstr "" + +#: plinth/modules/samba/__init__.py:35 +msgid "Open share - accessible to everyone in your local network." +msgstr "" + +#: plinth/modules/samba/__init__.py:36 +msgid "" +"Group share - accessible only to FreedomBox users who are in the freedombox-" +"share group." +msgstr "" + +#: plinth/modules/samba/__init__.py:38 +msgid "" +"Home share - every user in the freedombox-share group can have their own " +"private space." +msgstr "" + +#: plinth/modules/samba/__init__.py:56 +msgid "Access to the private shares" +msgstr "" + +#: plinth/modules/samba/__init__.py:59 +msgid "Samba" +msgstr "" + +#: plinth/modules/samba/__init__.py:60 +msgid "Network File Storage" +msgstr "" + +#: plinth/modules/samba/manifest.py:14 +msgid "Android Samba Client" +msgstr "" + +#: plinth/modules/samba/manifest.py:27 +msgid "Ghost Commander - Samba plugin" +msgstr "" + +#: plinth/modules/samba/manifest.py:41 +msgid "VLC media player" +msgstr "" + +#: plinth/modules/samba/manifest.py:60 +msgid "GNOME Files" +msgstr "" + +#: plinth/modules/samba/manifest.py:72 +msgid "Dolphin" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:20 +msgid "Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:22 +msgid "" +"Note: Only specially created directories will be shared on selected disks, " +"not the whole disk." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:84 +msgid "VFAT partitions are not supported" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:112 +#, python-format +msgid "" +"You can find additional information about disks on the storage module page and configure access to the " +"shares on the users module page." +msgstr "" + +#: plinth/modules/samba/templates/samba.html:120 +msgid "Users who can currently access group and home shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:124 +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:129 +msgid "Unavailable Shares" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:131 +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:140 +msgid "Share name" +msgstr "" + +#: plinth/modules/samba/templates/samba.html:141 +msgid "Action" +msgstr "" + +#: plinth/modules/samba/views.py:33 +msgid "FreedomBox OS disk" +msgstr "" + +#: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 +msgid "Open Share" +msgstr "" + +#: plinth/modules/samba/views.py:63 plinth/modules/storage/forms.py:144 +msgid "Group Share" +msgstr "" + +#: plinth/modules/samba/views.py:67 +msgid "Home Share" +msgstr "" + +#: plinth/modules/samba/views.py:102 +msgid "Share enabled." +msgstr "" + +#: plinth/modules/samba/views.py:107 +#, python-brace-format +msgid "Error enabling share: {error_message}" +msgstr "" + +#: plinth/modules/samba/views.py:112 +msgid "Share disabled." +msgstr "" + +#: plinth/modules/samba/views.py:117 +#, python-brace-format +msgid "Error disabling share: {error_message}" +msgstr "" + +#: plinth/modules/searx/__init__.py:22 +msgid "" +"Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " +"displays results from multiple search engines." +msgstr "" + +#: plinth/modules/searx/__init__.py:24 +msgid "" +"Searx can be used to avoid tracking and profiling by search engines. It " +"stores no cookies by default." +msgstr "" + +#: plinth/modules/searx/__init__.py:42 +msgid "Search the web" +msgstr "" + +#: plinth/modules/searx/__init__.py:45 plinth/modules/searx/manifest.py:6 +msgid "Searx" +msgstr "" + +#: plinth/modules/searx/__init__.py:46 +msgid "Web Search" +msgstr "" + +#: plinth/modules/searx/forms.py:13 +msgid "Safe Search" +msgstr "" + +#: plinth/modules/searx/forms.py:14 +msgid "Select the default family filter to apply to your search results." +msgstr "" + +#: plinth/modules/searx/forms.py:15 +msgid "Moderate" +msgstr "" + +#: plinth/modules/searx/forms.py:15 +msgid "Strict" +msgstr "" + +#: plinth/modules/searx/forms.py:18 +msgid "Allow Public Access" +msgstr "" + +#: plinth/modules/searx/forms.py:19 +msgid "Allow this application to be used by anyone who can reach it." +msgstr "" + +#: plinth/modules/security/forms.py:13 +msgid "Restrict console logins (recommended)" +msgstr "" + +#: plinth/modules/security/forms.py:14 +msgid "" +"When this option is enabled, only users in the \"admin\" group will be able " +"to log in to console or via SSH. Console users may be able to access some " +"services without further authorization." +msgstr "" + +#: plinth/modules/security/forms.py:19 +msgid "Fail2Ban (recommended)" +msgstr "" + +#: plinth/modules/security/forms.py:20 +msgid "" +"When this option is enabled, Fail2Ban will limit brute force break-in " +"attempts to the SSH server and other enabled password protected internet-" +"services." +msgstr "" + +#: plinth/modules/security/templates/security.html:12 +#: plinth/modules/security/templates/security.html:14 +msgid "Show security report" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:44 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:21 +#: plinth/modules/upgrades/templates/upgrades_configure.html:52 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:26 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:64 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + +#: plinth/modules/security/templates/security_report.html:10 +#: plinth/modules/security/views.py:74 +msgid "Security Report" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:12 +#, python-format +msgid "" +"There are %(count)s reported security vulnerabilities in the FreedomBox app, " +"which provides the core services and user interface for a FreedomBox server." +msgstr "" + +#: plinth/modules/security/templates/security_report.html:19 +msgid "" +"The following table lists the current reported number of security " +"vulnerabilities for each installed app. More information on the " +"vulnerabilities can be found on the Debian Security Bug Tracker." +msgstr "" + +#: plinth/modules/security/templates/security_report.html:28 +msgid "" +"For apps that provide services, the \"Sandboxed\" column shows whether " +"sandboxing features are in use. Sandboxing mitigates the impact of a " +"potentially compromised app to the rest of the system." +msgstr "" + +#: plinth/modules/security/templates/security_report.html:35 +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:45 +msgid "App Name" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:46 +msgid "Current Vulnerabilities" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:47 +msgid "Sandboxed" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:48 +msgid "Sandbox Coverage" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:58 +msgid "N/A" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:60 +msgid "Yes" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:62 +msgid "No" +msgstr "" + +#: plinth/modules/security/templates/security_report.html:69 +msgid "Not running" +msgstr "" + +#: plinth/modules/security/views.py:56 +#, python-brace-format +msgid "Error setting restricted access: {exception}" +msgstr "" + +#: plinth/modules/security/views.py:59 +msgid "Updated security configuration" +msgstr "" + +#: plinth/modules/shaarli/__init__.py:18 +msgid "Shaarli allows you to save and share bookmarks." +msgstr "" + +#: plinth/modules/shaarli/__init__.py:19 +msgid "" +"Note that Shaarli only supports a single user account, which you will need " +"to setup on the initial visit." +msgstr "" + +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 +msgid "Shaarli" +msgstr "" + +#: plinth/modules/shaarli/__init__.py:39 +msgid "Bookmarks" +msgstr "" + +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + +#: plinth/modules/shadowsocks/__init__.py:21 +msgid "" +"Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " +"your Internet traffic. It can be used to bypass Internet filtering and " +"censorship." +msgstr "" + +#: plinth/modules/shadowsocks/__init__.py:25 +#, python-brace-format +msgid "" +"Your {box_name} can run a Shadowsocks client, that can connect to a " +"Shadowsocks server. It will also run a SOCKS5 proxy. Local devices can " +"connect to this proxy, and their data will be encrypted and proxied through " +"the Shadowsocks server." +msgstr "" + +#: plinth/modules/shadowsocks/__init__.py:30 +msgid "" +"To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " +"browser or application to http://freedombox_address:1080/" +msgstr "" + +#: plinth/modules/shadowsocks/__init__.py:51 +msgid "Shadowsocks" +msgstr "" + +#: plinth/modules/shadowsocks/__init__.py:53 +msgid "Socks5 Proxy" +msgstr "" + +#: plinth/modules/shadowsocks/forms.py:12 +#: plinth/modules/shadowsocks/forms.py:13 +msgid "Recommended" +msgstr "" + +#: plinth/modules/shadowsocks/forms.py:37 +msgid "Server" +msgstr "" + +#: plinth/modules/shadowsocks/forms.py:38 +msgid "Server hostname or IP address" +msgstr "" + +#: plinth/modules/shadowsocks/forms.py:42 +msgid "Server port number" +msgstr "" + +#: plinth/modules/shadowsocks/forms.py:45 +msgid "Password used to encrypt data. Must match server password." +msgstr "" + +#: plinth/modules/shadowsocks/forms.py:50 +msgid "Encryption method. Must match setting on server." +msgstr "" + +#: plinth/modules/sharing/__init__.py:20 +#, python-brace-format +msgid "" +"Sharing allows you to share files and folders on your {box_name} over the " +"web with chosen groups of users." +msgstr "" + +#: plinth/modules/sharing/__init__.py:39 +msgid "Sharing" +msgstr "" + +#: plinth/modules/sharing/forms.py:18 +msgid "Name of the share" +msgstr "" + +#: plinth/modules/sharing/forms.py:20 +msgid "" +"A lowercase alpha-numeric string that uniquely identifies a share. Example: " +"media." +msgstr "" + +#: plinth/modules/sharing/forms.py:24 +msgid "Path to share" +msgstr "" + +#: plinth/modules/sharing/forms.py:25 +msgid "Disk path to a folder on this server that you intend to share." +msgstr "" + +#: plinth/modules/sharing/forms.py:28 +msgid "Public share" +msgstr "" + +#: plinth/modules/sharing/forms.py:29 +msgid "Make files in this folder available to anyone with the link." +msgstr "" + +#: plinth/modules/sharing/forms.py:34 +msgid "User groups that can read the files in the share:" +msgstr "" + +#: plinth/modules/sharing/forms.py:36 +msgid "" +"Users of the selected user groups will be able to read the files in the " +"share." +msgstr "" + +#: plinth/modules/sharing/forms.py:52 +msgid "A share with this name already exists." +msgstr "" + +#: plinth/modules/sharing/forms.py:63 +msgid "Shares should be either public or shared with at least one group" +msgstr "" + +#: plinth/modules/sharing/templates/sharing.html:19 +#: plinth/modules/sharing/templates/sharing.html:22 +msgid "Add share" +msgstr "" + +#: plinth/modules/sharing/templates/sharing.html:27 +msgid "No shares currently configured." +msgstr "" + +#: plinth/modules/sharing/templates/sharing.html:34 +msgid "Disk Path" +msgstr "" + +#: plinth/modules/sharing/templates/sharing.html:35 +msgid "Shared Over" +msgstr "" + +#: plinth/modules/sharing/templates/sharing.html:36 +msgid "With Groups" +msgstr "" + +#: plinth/modules/sharing/templates/sharing.html:53 +msgid "public access" +msgstr "" + +#: plinth/modules/sharing/views.py:39 +msgid "Share added." +msgstr "" + +#: plinth/modules/sharing/views.py:44 +msgid "Add Share" +msgstr "" + +#: plinth/modules/sharing/views.py:59 +msgid "Share edited." +msgstr "" + +#: plinth/modules/sharing/views.py:64 +msgid "Edit Share" +msgstr "" + +#: plinth/modules/sharing/views.py:95 +msgid "Share deleted." +msgstr "" + +#: plinth/modules/snapshot/__init__.py:22 +msgid "" +"Snapshots allows creating and managing btrfs file system snapshots. These " +"can be used to roll back the system to a previously known good state in case " +"of unwanted changes to the system." +msgstr "" + +#: plinth/modules/snapshot/__init__.py:26 +#, no-python-format +msgid "" +"Snapshots are taken periodically (called timeline snapshots) and also before " +"and after a software installation. Older snapshots will be automatically " +"cleaned up according to the settings below." +msgstr "" + +#: plinth/modules/snapshot/__init__.py:29 +msgid "" +"Snapshots currently work on btrfs file systems only and on the root " +"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " +msgstr "" + +#: plinth/modules/snapshot/__init__.py:54 +msgid "Storage Snapshots" +msgstr "" + +#: plinth/modules/snapshot/forms.py:12 +msgid "Free Disk Space to Maintain" +msgstr "" + +#: plinth/modules/snapshot/forms.py:13 +msgid "" +"Maintain this percentage of free space on the disk. If free space falls " +"below this value, older snapshots are removed until this much free space is " +"regained. The default value is 30%." +msgstr "" + +#: plinth/modules/snapshot/forms.py:20 +msgid "Timeline Snapshots" +msgstr "" + +#: plinth/modules/snapshot/forms.py:21 +msgid "" +"Enable or disable timeline snapshots (hourly, daily, monthly and yearly)." +msgstr "" + +#: plinth/modules/snapshot/forms.py:26 +msgid "Software Installation Snapshots" +msgstr "" + +#: plinth/modules/snapshot/forms.py:27 +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." +msgstr "" + +#: plinth/modules/snapshot/forms.py:32 +msgid "Hourly Snapshots Limit" +msgstr "" + +#: plinth/modules/snapshot/forms.py:33 +msgid "Keep a maximum of this many hourly snapshots." +msgstr "" + +#: plinth/modules/snapshot/forms.py:36 +msgid "Daily Snapshots Limit" +msgstr "" + +#: plinth/modules/snapshot/forms.py:37 +msgid "Keep a maximum of this many daily snapshots." +msgstr "" + +#: plinth/modules/snapshot/forms.py:40 +msgid "Weekly Snapshots Limit" +msgstr "" + +#: plinth/modules/snapshot/forms.py:41 +msgid "Keep a maximum of this many weekly snapshots." +msgstr "" + +#: plinth/modules/snapshot/forms.py:44 +msgid "Monthly Snapshots Limit" +msgstr "" + +#: plinth/modules/snapshot/forms.py:45 +msgid "Keep a maximum of this many monthly snapshots." +msgstr "" + +#: plinth/modules/snapshot/forms.py:48 +msgid "Yearly Snapshots Limit" +msgstr "" + +#: plinth/modules/snapshot/forms.py:49 +msgid "" +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 +msgid "Delete the following snapshots permanently?" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17 +#: plinth/modules/snapshot/templates/snapshot_manage.html:27 +#: plinth/modules/snapshot/templates/snapshot_rollback.html:25 +msgid "Number" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18 +#: plinth/modules/snapshot/templates/snapshot_manage.html:28 +#: plinth/modules/snapshot/templates/snapshot_rollback.html:26 +msgid "Date" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:42 +#: plinth/modules/snapshot/templates/snapshot_manage.html:20 +#: plinth/modules/snapshot/views.py:196 +msgid "Delete Snapshots" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_manage.html:17 +msgid "Create Snapshot" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_manage.html:30 +msgid "Rollback" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_manage.html:40 +msgid "will be used at next boot" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_manage.html:45 +msgid "in use" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_manage.html:54 +#, python-format +msgid "Rollback to snapshot #%(number)s" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_not_supported.html:11 +#, python-format +msgid "" +"You have a filesystem of type %(fs_type)s. Snapshots are " +"currently only available on %(types_supported)s filesystems." +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_rollback.html:12 +msgid "Roll back the system to this snapshot?" +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_rollback.html:15 +msgid "" +"A new snapshot with the current state of the file system will be " +"automatically created. You will be able to undo a rollback by reverting to " +"the newly created snapshot." +msgstr "" + +#: plinth/modules/snapshot/templates/snapshot_rollback.html:44 +#, python-format +msgid "Rollback to Snapshot #%(number)s" +msgstr "" + +#: plinth/modules/snapshot/views.py:27 +msgid "manually created" +msgstr "" + +#: plinth/modules/snapshot/views.py:28 +msgid "timeline" +msgstr "" + +#: plinth/modules/snapshot/views.py:29 +msgid "apt" +msgstr "" + +#: plinth/modules/snapshot/views.py:39 +msgid "Manage Snapshots" +msgstr "" + +#: plinth/modules/snapshot/views.py:88 +msgid "Created snapshot." +msgstr "" + +#: plinth/modules/snapshot/views.py:151 +msgid "Storage snapshots configuration updated" +msgstr "" + +#: plinth/modules/snapshot/views.py:155 plinth/modules/tor/views.py:60 +#, python-brace-format +msgid "Action error: {0} [{1}] [{2}]" +msgstr "" + +#: plinth/modules/snapshot/views.py:183 +msgid "Deleted selected snapshots" +msgstr "" + +#: plinth/modules/snapshot/views.py:188 +msgid "Snapshot is currently in use. Please try again later." +msgstr "" + +#: plinth/modules/snapshot/views.py:207 +#, python-brace-format +msgid "Rolled back to snapshot #{number}." +msgstr "" + +#: plinth/modules/snapshot/views.py:210 +msgid "The system must be restarted to complete the rollback." +msgstr "" + +#: plinth/modules/snapshot/views.py:222 +msgid "Rollback to Snapshot" +msgstr "" + +#: plinth/modules/ssh/__init__.py:23 +msgid "" +"A Secure Shell server uses the secure shell protocol to accept connections " +"from remote computers. An authorized remote computer can perform " +"administration tasks, copy files or run other services using such " +"connections." +msgstr "" + +#: plinth/modules/ssh/__init__.py:45 +msgid "Secure Shell (SSH) Server" +msgstr "" + +#: plinth/modules/ssh/forms.py:13 +msgid "Disable password authentication" +msgstr "" + +#: plinth/modules/ssh/forms.py:14 +msgid "" +"Improves security by preventing password guessing. Ensure that you have " +"setup SSH keys in your administrator user account before enabling this " +"option." +msgstr "" + +#: plinth/modules/ssh/templates/ssh.html:11 +msgid "Server Fingerprints" +msgstr "" + +#: plinth/modules/ssh/templates/ssh.html:14 +msgid "" +"When connecting to the server, ensure that the fingerprint shown by the SSH " +"client matches one of these fingerprints." +msgstr "" + +#: plinth/modules/ssh/templates/ssh.html:24 +msgid "Algorithm" +msgstr "" + +#: plinth/modules/ssh/templates/ssh.html:25 +msgid "Fingerprint" +msgstr "" + +#: plinth/modules/ssh/views.py:48 +msgid "SSH authentication with password disabled." +msgstr "" + +#: plinth/modules/ssh/views.py:51 +msgid "SSH authentication with password enabled." +msgstr "" + +#: plinth/modules/sso/__init__.py:28 +msgid "Single Sign On" +msgstr "" + +#: plinth/modules/sso/templates/login.html:20 +msgid "Login" +msgstr "" + +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + +#: plinth/modules/storage/__init__.py:26 +#, python-brace-format +msgid "" +"This module allows you to manage storage media attached to your {box_name}. " +"You can view the storage media currently in use, mount and unmount removable " +"media, expand the root partition etc." +msgstr "" + +#: plinth/modules/storage/__init__.py:51 plinth/modules/storage/__init__.py:322 +#: plinth/modules/storage/__init__.py:353 +msgid "Storage" +msgstr "" + +#: plinth/modules/storage/__init__.py:216 +#, python-brace-format +msgid "{disk_size:.1f} bytes" +msgstr "" + +#: plinth/modules/storage/__init__.py:220 +#, python-brace-format +msgid "{disk_size:.1f} KiB" +msgstr "" + +#: plinth/modules/storage/__init__.py:224 +#, python-brace-format +msgid "{disk_size:.1f} MiB" +msgstr "" + +#: plinth/modules/storage/__init__.py:228 +#, python-brace-format +msgid "{disk_size:.1f} GiB" +msgstr "" + +#: plinth/modules/storage/__init__.py:231 +#, python-brace-format +msgid "{disk_size:.1f} TiB" +msgstr "" + +#: plinth/modules/storage/__init__.py:243 +msgid "The operation failed." +msgstr "" + +#: plinth/modules/storage/__init__.py:245 +msgid "The operation was cancelled." +msgstr "" + +#: plinth/modules/storage/__init__.py:247 +msgid "The device is already unmounting." +msgstr "" + +#: plinth/modules/storage/__init__.py:249 +msgid "The operation is not supported due to missing driver/tool support." +msgstr "" + +#: plinth/modules/storage/__init__.py:252 +msgid "The operation timed out." +msgstr "" + +#: plinth/modules/storage/__init__.py:254 +msgid "The operation would wake up a disk that is in a deep-sleep state." +msgstr "" + +#: plinth/modules/storage/__init__.py:257 +msgid "Attempting to unmount a device that is busy." +msgstr "" + +#: plinth/modules/storage/__init__.py:259 +msgid "The operation has already been cancelled." +msgstr "" + +#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:265 +msgid "Not authorized to perform the requested operation." +msgstr "" + +#: plinth/modules/storage/__init__.py:267 +msgid "The device is already mounted." +msgstr "" + +#: plinth/modules/storage/__init__.py:269 +msgid "The device is not mounted." +msgstr "" + +#: plinth/modules/storage/__init__.py:271 +msgid "Not permitted to use the requested option." +msgstr "" + +#: plinth/modules/storage/__init__.py:273 +msgid "The device is mounted by another user." +msgstr "" + +#: plinth/modules/storage/__init__.py:317 +#, no-python-format, python-brace-format +msgid "Low space on system partition: {percent_used}% used, {free_space} free." +msgstr "" + +#: plinth/modules/storage/__init__.py:319 +msgid "Low disk space" +msgstr "" + +#: plinth/modules/storage/__init__.py:347 +msgid "Disk failure imminent" +msgstr "" + +#: plinth/modules/storage/__init__.py:349 +#, python-brace-format +msgid "" +"Disk {id} is reporting that it is likely to fail in the near future. Copy " +"any data while you still can and replace the drive." +msgstr "" + +#: plinth/modules/storage/forms.py:62 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:79 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:82 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:85 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:88 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:95 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:142 +msgid "Share" +msgstr "" + +#: plinth/modules/storage/forms.py:150 +msgid "Other directory (specify below)" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:17 +msgid "The following storage devices are in use:" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:24 +msgid "Label" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:25 +msgid "Mount Point" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:27 +msgid "Used" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:77 +msgid "Partition Expansion" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:79 +#, python-format +msgid "" +"There is %(expandable_root_size)s of unallocated space available after your " +"root partition. Root partition can be expanded to use this space. This " +"will provide you additional free space to store your files." +msgstr "" + +#: plinth/modules/storage/templates/storage.html:89 +#: plinth/modules/storage/templates/storage_expand.html:24 +#: plinth/modules/storage/views.py:58 +msgid "Expand Root Partition" +msgstr "" + +#: plinth/modules/storage/templates/storage.html:95 +msgid "" +"Advanced storage operations such as disk partitioning and RAID management " +"are provided by the Cockpit app." +msgstr "" + +#: plinth/modules/storage/templates/storage_expand.html:14 +#, python-format +msgid "" +"Please backup your data before proceeding. After this operation, " +"%(expandable_root_size)s of additional free space will be available in your " +"root partition." +msgstr "" + +#: plinth/modules/storage/views.py:70 +#, python-brace-format +msgid "Error expanding partition: {exception}" +msgstr "" + +#: plinth/modules/storage/views.py:73 +msgid "Partition expanded successfully." +msgstr "" + +#: plinth/modules/storage/views.py:91 +#, python-brace-format +msgid "{drive_vendor} {drive_model} can be safely unplugged." +msgstr "" + +#: plinth/modules/storage/views.py:95 +msgid "Device can be safely unplugged." +msgstr "" + +#: plinth/modules/storage/views.py:102 +#, python-brace-format +msgid "Error ejecting device: {error_message}" +msgstr "" + +#: plinth/modules/syncthing/__init__.py:23 +msgid "" +"Syncthing is an application to synchronize files across multiple devices, e." +"g. your desktop computer and mobile phone. Creation, modification, or " +"deletion of files on one device will be automatically replicated on all " +"other devices that also run Syncthing." +msgstr "" + +#: plinth/modules/syncthing/__init__.py:28 +#, python-brace-format +msgid "" +"Running Syncthing on {box_name} provides an extra synchronization point for " +"your data that is available most of the time, allowing your devices to " +"synchronize more often. {box_name} runs a single instance of Syncthing that " +"may be used by multiple users. Each user's set of devices may be " +"synchronized with a distinct set of folders. The web interface on " +"{box_name} is only available for users belonging to the \"admin\" or " +"\"syncthing-access\" group." +msgstr "" + +#: plinth/modules/syncthing/__init__.py:57 +msgid "Administer Syncthing application" +msgstr "" + +#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/manifest.py:12 +msgid "Syncthing" +msgstr "" + +#: plinth/modules/syncthing/__init__.py:62 +msgid "File Synchronization" +msgstr "" + +#: plinth/modules/tor/__init__.py:26 +msgid "" +"Tor is an anonymous communication system. You can learn more about it from " +"the Tor Project website. For " +"best protection when web surfing, the Tor Project recommends that you use " +"the Tor Browser." +msgstr "" + +#: plinth/modules/tor/__init__.py:50 +msgid "Tor" +msgstr "" + +#: plinth/modules/tor/__init__.py:67 +msgid "Tor Onion Service" +msgstr "" + +#: plinth/modules/tor/__init__.py:71 +msgid "Tor Socks Proxy" +msgstr "" + +#: plinth/modules/tor/__init__.py:75 +msgid "Tor Bridge Relay" +msgstr "" + +#: plinth/modules/tor/__init__.py:117 +msgid "Tor relay port available" +msgstr "" + +#: plinth/modules/tor/__init__.py:127 +msgid "Obfs3 transport registered" +msgstr "" + +#: plinth/modules/tor/__init__.py:137 +msgid "Obfs4 transport registered" +msgstr "" + +#: plinth/modules/tor/__init__.py:206 +#, python-brace-format +msgid "Access URL {url} on tcp{kind} via Tor" +msgstr "" + +#: plinth/modules/tor/__init__.py:217 +#, python-brace-format +msgid "Confirm Tor usage at {url} on tcp{kind}" +msgstr "" + +#: plinth/modules/tor/forms.py:33 +msgid "" +"Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" +msgstr "" + +#: plinth/modules/tor/forms.py:75 +msgid "Enable Tor" +msgstr "" + +#: plinth/modules/tor/forms.py:77 +msgid "Use upstream bridges to connect to Tor network" +msgstr "" + +#: plinth/modules/tor/forms.py:79 +msgid "" +"When enabled, the bridges configured below will be used to connect to the " +"Tor network. Use this option if your Internet Service Provider (ISP) blocks " +"or censors connections to the Tor Network. This will disable relay modes." +msgstr "" + +#: plinth/modules/tor/forms.py:84 +msgid "Upstream bridges" +msgstr "" + +#: plinth/modules/tor/forms.py:86 +msgid "" +"You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " +"here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." +msgstr "" + +#: plinth/modules/tor/forms.py:92 +msgid "Enable Tor relay" +msgstr "" + +#: plinth/modules/tor/forms.py:93 +#, python-brace-format +msgid "" +"When enabled, your {box_name} will run a Tor relay and donate bandwidth to " +"the Tor network. Do this if you have more than 2 megabits/s of upload and " +"download bandwidth." +msgstr "" + +#: plinth/modules/tor/forms.py:98 +msgid "Enable Tor bridge relay" +msgstr "" + +#: plinth/modules/tor/forms.py:100 +msgid "" +"When enabled, relay information is published in the Tor bridge database " +"instead of public Tor relay database making it harder to censor this node. " +"This helps others circumvent censorship." +msgstr "" + +#: plinth/modules/tor/forms.py:105 +msgid "Enable Tor Hidden Service" +msgstr "" + +#: plinth/modules/tor/forms.py:107 +#, python-brace-format +msgid "" +"A hidden service will allow {box_name} to provide selected services (such as " +"wiki or chat) without revealing its location. Do not use this for strong " +"anonymity yet." +msgstr "" + +#: plinth/modules/tor/forms.py:112 +msgid "Download software packages over Tor" +msgstr "" + +#: plinth/modules/tor/forms.py:113 +msgid "" +"When enabled, software will be downloaded over the Tor network for " +"installations and upgrades. This adds a degree of privacy and security " +"during software downloads." +msgstr "" + +#: plinth/modules/tor/forms.py:128 +msgid "Specify at least one upstream bridge to use upstream bridges." +msgstr "" + +#: plinth/modules/tor/manifest.py:13 +msgid "Tor Browser" +msgstr "" + +#: plinth/modules/tor/manifest.py:29 +msgid "Orbot: Proxy with Tor" +msgstr "" + +#: plinth/modules/tor/templates/tor.html:16 +msgid "Tor configuration is being updated" +msgstr "" + +#: plinth/modules/tor/templates/tor.html:26 +msgid "Onion Service" +msgstr "" + +#: plinth/modules/tor/templates/tor.html:28 +msgid "Ports" +msgstr "" + +#: plinth/modules/tor/templates/tor.html:59 +msgid "Relay" +msgstr "" + +#: plinth/modules/tor/templates/tor.html:61 +#, python-format +msgid "" +"If your %(box_name)s is behind a router or firewall, you should make sure " +"the following ports are open, and port-forwarded, if necessary:" +msgstr "" + +#: plinth/modules/tor/templates/tor.html:71 +msgid "Service" +msgstr "" + +#: plinth/modules/tor/templates/tor.html:87 +msgid "SOCKS" +msgstr "" + +#: plinth/modules/tor/templates/tor.html:90 +#, python-format +msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." +msgstr "" + +#: plinth/modules/tor/views.py:137 plinth/views.py:222 +msgid "Setting unchanged" +msgstr "" + +#: plinth/modules/transmission/__init__.py:24 +msgid "Transmission is a BitTorrent client with a web interface." +msgstr "" + +#: plinth/modules/transmission/__init__.py:25 +msgid "" +"BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " +"not anonymous." +msgstr "" + +#: plinth/modules/transmission/__init__.py:27 +msgid "Please do not change the default port of the Transmission daemon." +msgstr "" + +#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/manifest.py:6 +msgid "Transmission" +msgstr "" + +#: plinth/modules/ttrss/__init__.py:23 +msgid "" +"Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " +"allow reading news from any location, while feeling as close to a real " +"desktop application as possible." +msgstr "" + +#: plinth/modules/ttrss/__init__.py:27 +#, python-brace-format +msgid "" +"When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." +msgstr "" + +#: plinth/modules/ttrss/__init__.py:31 +msgid "" +"When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." +msgstr "" + +#: plinth/modules/ttrss/__init__.py:49 +msgid "Read and subscribe to news feeds" +msgstr "" + +#: plinth/modules/ttrss/__init__.py:52 plinth/modules/ttrss/manifest.py:18 +msgid "Tiny Tiny RSS" +msgstr "" + +#: plinth/modules/ttrss/__init__.py:53 +msgid "News Feed Reader" +msgstr "" + +#: plinth/modules/ttrss/manifest.py:9 +msgid "Tiny Tiny RSS (Fork)" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:39 +#: plinth/modules/upgrades/templates/update-firstboot.html:14 +msgid "Check for and apply the latest software and security updates." +msgstr "" + +#: plinth/modules/upgrades/__init__.py:40 +msgid "" +"Updates are run at 06:00 everyday according to local time zone. Set your " +"time zone in Date & Time app. Apps are restarted after update causing them " +"to be unavailable briefly. If system reboot is deemed necessary, it is done " +"automatically at 02:00 causing all apps to be unavailable briefly." +msgstr "" + +#: plinth/modules/upgrades/__init__.py:74 +#: plinth/modules/upgrades/__init__.py:129 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +msgid "Software Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:132 +msgid "FreedomBox Updated" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:217 +msgid "Could not start distribution update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:219 +msgid "" +"There is not enough free space in the root partition to start the " +"distribution update. Please ensure at least 5 GB is free. Distribution " +"update will be retried after 24 hours, if enabled." +msgstr "" + +#: plinth/modules/upgrades/__init__.py:230 +msgid "Distribution update started" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:232 +msgid "" +"Started update to next stable release. This may take a long time to complete." +msgstr "" + +#: plinth/modules/upgrades/forms.py:15 +msgid "Enable auto-update" +msgstr "" + +#: plinth/modules/upgrades/forms.py:16 +msgid "When enabled, FreedomBox automatically updates once a day." +msgstr "" + +#: plinth/modules/upgrades/forms.py:19 +msgid "Enable auto-update to next stable release" +msgstr "" + +#: plinth/modules/upgrades/forms.py:20 +msgid "" +"When enabled, FreedomBox will update to the next stable distribution release " +"when it is available." +msgstr "" + +#: plinth/modules/upgrades/forms.py:34 +#: plinth/modules/upgrades/templates/upgrades_configure.html:89 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/forms.py:40 +msgid "Update now (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:19 +msgid "Updating, please wait..." +msgstr "" + +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:22 +#: plinth/modules/upgrades/templates/update-firstboot.html:20 +msgid "" +"This may take a long time to complete. During an update, " +"this web interface may be temporarily unavailable and show an error. In that " +"case, refresh the page to continue." +msgstr "" + +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:31 +#, python-format +msgid "" +"\n" +"\t%(box_name)s is up to date. Press Next to continue.\n" +" " +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades-new-release.html:9 +#, python-format +msgid "%(box_name)s updated" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades-new-release.html:13 +#, 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:22 +#: plinth/templates/notifications.html:44 +msgid "Dismiss" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:30 +#: plinth/modules/upgrades/templates/upgrades_configure.html:100 +msgid "Updating..." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:32 +#, python-format +msgid "There is a new %(box_name)s version available." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:35 +msgid "Your Freedombox needs an update!" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:47 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:78 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:94 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:108 +msgid "Update now" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:114 +msgid "" +"This may take a long time to complete. During an update, " +"you cannot install apps. Also, this web interface may be temporarily " +"unavailable and show an error. In that case, refresh the page to continue." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:128 +msgid "Show recent update logs" +msgstr "" + +#: plinth/modules/upgrades/views.py:67 +#, python-brace-format +msgid "Error when configuring unattended-upgrades: {error}" +msgstr "" + +#: plinth/modules/upgrades/views.py:71 +msgid "Automatic upgrades enabled" +msgstr "" + +#: plinth/modules/upgrades/views.py:74 +msgid "Automatic upgrades disabled" +msgstr "" + +#: plinth/modules/upgrades/views.py:82 +msgid "Distribution upgrade enabled" +msgstr "" + +#: plinth/modules/upgrades/views.py:85 +msgid "Distribution upgrade disabled" +msgstr "" + +#: plinth/modules/upgrades/views.py:127 +msgid "Upgrade process started." +msgstr "" + +#: plinth/modules/upgrades/views.py:129 +msgid "Starting upgrade failed." +msgstr "" + +#: plinth/modules/upgrades/views.py:139 +msgid "Frequent feature updates activated." +msgstr "" + +#: plinth/modules/users/__init__.py:29 +msgid "" +"Create and manage user accounts. These accounts serve as centralized " +"authentication mechanism for most apps. Some apps further require a user " +"account to be part of a group to authorize the user to access the app." +msgstr "" + +#: plinth/modules/users/__init__.py:34 +#, python-brace-format +msgid "" +"Any user may login to {box_name} web interface to see a list of apps " +"relevant to them in the home page. However, only users of the admin " +"group may alter apps or system settings." +msgstr "" + +#: plinth/modules/users/__init__.py:57 +msgid "Users and Groups" +msgstr "" + +#: plinth/modules/users/__init__.py:77 +msgid "Access to all services and system settings" +msgstr "" + +#: plinth/modules/users/__init__.py:113 +#, python-brace-format +msgid "Check LDAP entry \"{search_item}\"" +msgstr "" + +#: plinth/modules/users/forms.py:36 +msgid "Username is taken or is reserved." +msgstr "" + +#: plinth/modules/users/forms.py:63 +msgid "Enter a valid username." +msgstr "" + +#: plinth/modules/users/forms.py:70 +msgid "" +"Required. 150 characters or fewer. English letters, digits and @/./-/_ only." +msgstr "" + +#: plinth/modules/users/forms.py:78 +msgid "Authorization Password" +msgstr "" + +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." +msgstr "" + +#: plinth/modules/users/forms.py:93 +msgid "Invalid password." +msgstr "" + +#: plinth/modules/users/forms.py:110 +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 " +"are in the appropriate group.

Users in the admin group will be " +"able to log in to all services. They can also log in to the system through " +"SSH and have administrative privileges (sudo)." +msgstr "" + +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 +#, python-brace-format +msgid "Creating LDAP user failed: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:168 +#, python-brace-format +msgid "Failed to add new user to {group} group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:182 +msgid "Authorized SSH Keys" +msgstr "" + +#: plinth/modules/users/forms.py:184 +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:269 +msgid "Renaming LDAP user failed." +msgstr "" + +#: plinth/modules/users/forms.py:282 +msgid "Failed to remove user from group." +msgstr "" + +#: plinth/modules/users/forms.py:294 +msgid "Failed to add user to group." +msgstr "" + +#: plinth/modules/users/forms.py:307 +msgid "Unable to set SSH keys." +msgstr "" + +#: plinth/modules/users/forms.py:325 +msgid "Failed to change user status." +msgstr "" + +#: plinth/modules/users/forms.py:370 +msgid "Changing LDAP user password failed." +msgstr "" + +#: plinth/modules/users/forms.py:410 +#, python-brace-format +msgid "Failed to add new user to admin group: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:429 +#, python-brace-format +msgid "Failed to restrict console access: {error}" +msgstr "" + +#: plinth/modules/users/forms.py:442 +msgid "User account created, you are now logged in" +msgstr "" + +#: plinth/modules/users/templates/users_change_password.html:11 +#, python-format +msgid "Change Password for %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_change_password.html:21 +msgid "Save Password" +msgstr "" + +#: plinth/modules/users/templates/users_create.html:11 +#: plinth/modules/users/templates/users_create.html:19 +#: plinth/modules/users/templates/users_list.html:15 +#: plinth/modules/users/templates/users_list.html:17 +#: plinth/modules/users/views.py:44 +msgid "Create User" +msgstr "" + +#: plinth/modules/users/templates/users_delete.html:11 +#: plinth/modules/users/views.py:134 +msgid "Delete User" +msgstr "" + +#: plinth/modules/users/templates/users_delete.html:14 +#, python-format +msgid "Delete user %(username)s permanently?" +msgstr "" + +#: plinth/modules/users/templates/users_delete.html:23 +#, python-format +msgid "Delete %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:11 +msgid "Administrator Account" +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:15 +msgid "" +"Choose a username and password to access this web interface. The password " +"can be changed later. This user will be granted administrative privileges. " +"Other users can be added later." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:28 +msgid "Create Account" +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:32 +msgid "An administrator account already exists." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:38 +msgid "The following administrator accounts exist in the system." +msgstr "" + +#: plinth/modules/users/templates/users_firstboot.html:50 +#, python-format, python-brace-format +msgid "" +"Delete these accounts from command line and refresh the page to create an " +"account that is usable with %(box_name)s. On the command line run the " +"command 'echo \"{password}\" | /usr/share/plinth/actions/users remove-user " +"{username}'. If an account is already usable with %(box_name)s, skip this " +"step." +msgstr "" + +#: plinth/modules/users/templates/users_list.html:11 +#: plinth/modules/users/views.py:61 +msgid "Users" +msgstr "" + +#: plinth/modules/users/templates/users_list.html:28 +#, python-format +msgid "Edit user %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_list.html:41 +#, python-format +msgid "Delete user %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:11 +#, python-format +msgid "Edit User %(username)s" +msgstr "" + +#: plinth/modules/users/templates/users_update.html:19 +#, python-format +msgid "" +"Use the change password form to " +"change the password." +msgstr "" + +#: plinth/modules/users/templates/users_update.html:31 +#: plinth/templates/language-selection.html:17 +msgid "Save Changes" +msgstr "" + +#: plinth/modules/users/views.py:42 +#, python-format +msgid "User %(username)s created." +msgstr "" + +#: plinth/modules/users/views.py:76 +#, python-format +msgid "User %(username)s updated." +msgstr "" + +#: plinth/modules/users/views.py:77 +msgid "Edit User" +msgstr "" + +#: plinth/modules/users/views.py:144 +#, python-brace-format +msgid "User {user} deleted." +msgstr "" + +#: plinth/modules/users/views.py:151 +msgid "Deleting LDAP user failed." +msgstr "" + +#: plinth/modules/users/views.py:160 +msgid "Change Password" +msgstr "" + +#: plinth/modules/users/views.py:161 +msgid "Password changed successfully." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:20 +msgid "WireGuard is a fast, modern, secure VPN tunnel." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:22 +#, python-brace-format +msgid "" +"It can be used to connect to a VPN provider which supports WireGuard, and to " +"route all outgoing traffic from {box_name} through the VPN." +msgstr "" + +#: plinth/modules/wireguard/__init__.py:26 +#, python-brace-format +msgid "" +"A second use case is to connect a mobile device to {box_name} while " +"travelling. While connected to a public Wi-Fi network, all traffic can be " +"securely relayed through {box_name}." +msgstr "" + +#: plinth/modules/wireguard/forms.py:32 +msgid "Invalid key." +msgstr "" + +#: plinth/modules/wireguard/forms.py:61 +#: plinth/modules/wireguard/templates/wireguard.html:17 +#: plinth/modules/wireguard/templates/wireguard.html:77 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:24 +msgid "Public Key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:62 +msgid "" +"Public key of the peer. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:70 +msgid "Endpoint of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:71 +msgid "" +"Domain name and port in the form \"ip:port\". Example: demo.wireguard." +"com:12912 ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:76 +msgid "Public key of the server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:77 +msgid "" +"Provided by the server operator, a long string of characters. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:82 +msgid "Client IP address provided by server" +msgstr "" + +#: plinth/modules/wireguard/forms.py:83 +msgid "" +"IP address assigned to this machine on the VPN after connecting to the " +"endpoint. This value is usually provided by the server operator. Example: " +"192.168.0.10." +msgstr "" + +#: plinth/modules/wireguard/forms.py:89 +msgid "Private key of this machine" +msgstr "" + +#: plinth/modules/wireguard/forms.py:90 +msgid "" +"Optional. New public/private keys are generated if left blank. Public key " +"can then be provided to the server. This is the recommended way. However, " +"some server operators insist on providing this. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." +msgstr "" + +#: plinth/modules/wireguard/forms.py:98 +msgid "Pre-shared key" +msgstr "" + +#: plinth/modules/wireguard/forms.py:99 +msgid "" +"Optional. A shared secret key provided by the server to add an additional " +"layer of security. Fill in only if provided. Example: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." +msgstr "" + +#: plinth/modules/wireguard/forms.py:105 +msgid "Use this connection to send all outgoing traffic" +msgstr "" + +#: plinth/modules/wireguard/forms.py:107 +msgid "Typically checked for a VPN service through which all traffic is sent." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:10 +msgid "As a Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:12 +msgid "Peers allowed to connect to this server:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:18 +msgid "Allowed IPs" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:19 +#: plinth/modules/wireguard/templates/wireguard.html:78 +msgid "Last Connected Time" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:38 +#, python-format +msgid "No peers configured to connect to this %(box_name)s yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:48 +#, python-format +msgid "Public key for this %(box_name)s:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:54 +msgid "Not configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:59 +msgid "Add a new peer" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:63 +#: plinth/modules/wireguard/views.py:48 +msgid "Add Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:67 +msgid "As a Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:69 +#, python-format +msgid "Servers that %(box_name)s will connect to:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:76 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:20 +msgid "Endpoint" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:100 +msgid "No connections to remote servers are configured yet." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:110 +msgid "Add a new server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard.html:114 +#: plinth/modules/wireguard/views.py:157 +msgid "Add Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_add_client.html:19 +msgid "Add Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:14 +msgid "Are you sure that you want to delete this client?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:14 +msgid "Are you sure that you want to delete this server?" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_client.html:19 +msgid "Update Client" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_edit_server.html:19 +msgid "Update Connection" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:12 +#, python-format +msgid "" +"%(box_name)s will allow this client to connect to it. Ensure that the client " +"is configured with the following information." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:21 +msgid "Client public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:25 +msgid "IP address to use for client:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:29 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:32 +msgid "Pre-shared key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:33 +msgid "Server endpoints:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:41 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:28 +msgid "Server public key:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:53 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:52 +msgid "Data transmitted:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:57 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:56 +msgid "Data received:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_client.html:61 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:60 +msgid "Latest handshake:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:14 +#, python-format +msgid "" +"%(box_name)s will attempt to reach a WireGuard server with the following " +"information. Ensure that the server is configured to allow %(box_name)s's " +"public key and IP address." +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:24 +msgid "Server endpoint:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:36 +msgid "Public key of this machine:" +msgstr "" + +#: plinth/modules/wireguard/templates/wireguard_show_server.html:40 +msgid "IP address of this machine:" +msgstr "" + +#: plinth/modules/wireguard/views.py:43 +msgid "Added new client." +msgstr "" + +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 +msgid "Client with public key already exists" +msgstr "" + +#: plinth/modules/wireguard/views.py:71 +msgid "Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:93 +msgid "Updated client." +msgstr "" + +#: plinth/modules/wireguard/views.py:98 +msgid "Modify Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:131 +msgid "Delete Allowed Client" +msgstr "" + +#: plinth/modules/wireguard/views.py:140 +msgid "Client deleted." +msgstr "" + +#: plinth/modules/wireguard/views.py:142 +msgid "Client not found" +msgstr "" + +#: plinth/modules/wireguard/views.py:152 +msgid "Added new server." +msgstr "" + +#: plinth/modules/wireguard/views.py:173 +msgid "Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:191 +msgid "Updated server." +msgstr "" + +#: plinth/modules/wireguard/views.py:196 +msgid "Modify Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:233 +msgid "Delete Connection to Server" +msgstr "" + +#: plinth/modules/wireguard/views.py:253 +msgid "Server deleted." +msgstr "" + +#: plinth/modules/wordpress/__init__.py:23 +msgid "" +"WordPress is a popular way to create and manage websites and blogs. Content " +"can be managed using a visual interface. Layout and functionality of the web " +"pages can be customized. Appearance can be chosen using themes. " +"Administration interface and produced web pages are suitable for mobile " +"devices." +msgstr "" + +#: plinth/modules/wordpress/__init__.py:29 +#, python-brace-format +msgid "" +"You need to run WordPress setup by visiting the app before making the site " +"publicly available below. Setup must be run when accessing {box_name} with " +"the correct domain name. Enable permalinks in administrator interface for " +"better URLs to your pages and posts." +msgstr "" + +#: plinth/modules/wordpress/__init__.py:34 +msgid "" +"WordPress has its own user accounts. First administrator account is created " +"during setup. Bookmark the admin page " +"to reach administration interface in the future." +msgstr "" + +#: plinth/modules/wordpress/__init__.py:38 +msgid "" +"After a major version upgrade, you need to manually run database upgrade " +"from administrator interface. Additional plugins or themes may be installed " +"and upgraded at your own risk." +msgstr "" + +#: plinth/modules/wordpress/__init__.py:58 +#: plinth/modules/wordpress/manifest.py:6 +msgid "WordPress" +msgstr "" + +#: plinth/modules/wordpress/__init__.py:59 +msgid "Website and Blog" +msgstr "" + +#: plinth/modules/wordpress/forms.py:14 +msgid "Public access" +msgstr "" + +#: plinth/modules/wordpress/forms.py:15 +msgid "" +"Allow all visitors. Disabling allows only administrators to view the " +"WordPress site or blog. Enable only after performing initial WordPress setup." +msgstr "" + +#: plinth/modules/zoph/__init__.py:26 +#, python-brace-format +msgid "" +"Zoph manages your photo collection. Photos are stored on your {box_name}, " +"under your control. Instead of focusing on galleries for public display, " +"Zoph focuses on managing them for your own use, organizing them by who took " +"them, where they were taken, and who is in them. Photos can be linked to " +"multiple hierarchical albums and categories. It is easy to find all photos " +"containing a person, or photos taken on a date, or photos taken at a " +"location using search, map and calendar views. Individual photos can be " +"shared with others by sending a direct link." +msgstr "" + +#: plinth/modules/zoph/__init__.py:37 +#, python-brace-format +msgid "" +"The {box_name} user who setup Zoph will also become the administrator in " +"Zoph. For additional users, accounts must be created both in {box_name} and " +"in Zoph with the same user name." +msgstr "" + +#: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 +msgid "Zoph" +msgstr "" + +#: plinth/modules/zoph/__init__.py:59 +msgid "Photo Organizer" +msgstr "" + +#: plinth/modules/zoph/forms.py:14 +msgid "Enable OpenStreetMap for maps" +msgstr "" + +#: plinth/modules/zoph/forms.py:15 +msgid "" +"When enabled, requests will be made to OpenStreetMap servers from user's " +"browser. This impacts privacy." +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:15 +#: plinth/modules/zoph/templates/zoph-pre-setup.html:28 +msgid "Setup" +msgstr "" + +#: plinth/modules/zoph/templates/zoph-pre-setup.html:18 +#, python-format +msgid "" +"User account %(username)s will become the administrator " +"account for Zoph." +msgstr "" + +#: plinth/network.py:29 +msgid "PPPoE" +msgstr "" + +#: plinth/network.py:30 +msgid "Generic" +msgstr "" + +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 +#, python-brace-format +msgid "Package {package_name} is the latest version ({latest_version})" +msgstr "" + +#: plinth/package.py:355 +msgid "Error during installation" +msgstr "" + +#: plinth/package.py:377 +msgid "installing" +msgstr "" + +#: plinth/package.py:379 +msgid "downloading" +msgstr "" + +#: plinth/package.py:381 +msgid "media change" +msgstr "" + +#: plinth/package.py:383 +#, python-brace-format +msgid "configuration file: {file}" +msgstr "" + +#: plinth/templates/403.html:10 +msgid "403 Forbidden" +msgstr "" + +#: plinth/templates/403.html:14 +#, python-format +msgid "You don't have permission to access %(request_path)s on this server." +msgstr "" + +#: plinth/templates/404.html:10 +msgid "404" +msgstr "" + +#: plinth/templates/404.html:13 +#, python-format +msgid "Requested page %(request_path)s was not found." +msgstr "" + +#: plinth/templates/404.html:19 +msgid "" +"If you believe this missing page should exist, please file a bug at the " +"FreedomBox Service (Plinth) project issue tracker." +msgstr "" + +#: plinth/templates/500.html:10 +msgid "500" +msgstr "" + +#: plinth/templates/500.html:14 +#, python-format +msgid "" +"This is an internal error and not something you caused or can fix. Please " +"report the error on the bug tracker so we can fix it. Also, please attach " +"the status log to the bug report." +msgstr "" + +#: plinth/templates/app-header.html:22 +msgid "Installation" +msgstr "" + +#: plinth/templates/app.html:29 +#, python-format +msgid "Service %(service_name)s is not running." +msgstr "" + +#: plinth/templates/base.html:30 +#, python-format +msgid "Core functionality and web interface for %(box_name)s" +msgstr "" + +#: plinth/templates/base.html:107 +msgid " Home" +msgstr "" + +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + +#: plinth/templates/base.html:115 +msgid " Apps" +msgstr "" + +#: plinth/templates/base.html:119 +msgid "Apps" +msgstr "" + +#: plinth/templates/base.html:124 +msgid " System" +msgstr "" + +#: plinth/templates/base.html:128 +msgid "System" +msgstr "" + +#: plinth/templates/base.html:163 plinth/templates/base.html:164 +msgid "Change password" +msgstr "" + +#: plinth/templates/base.html:177 plinth/templates/base.html:178 +msgid "Shut down" +msgstr "" + +#: plinth/templates/base.html:185 plinth/templates/base.html:186 +#: plinth/templates/base.html:213 plinth/templates/base.html:215 +msgid "Log out" +msgstr "" + +#: plinth/templates/base.html:195 plinth/templates/base.html:198 +msgid "Select language" +msgstr "" + +#: plinth/templates/base.html:204 plinth/templates/base.html:206 +msgid "Log in" +msgstr "" + +#: plinth/templates/clients-button.html:16 +msgid "Launch web client" +msgstr "" + +#: plinth/templates/clients-button.html:25 +msgid "Client Apps" +msgstr "" + +#: plinth/templates/clients.html:17 +msgid "Web" +msgstr "" + +#: plinth/templates/clients.html:42 +msgid "Desktop" +msgstr "" + +#: plinth/templates/clients.html:53 +msgid "GNU/Linux" +msgstr "" + +#: plinth/templates/clients.html:55 +msgid "Windows" +msgstr "" + +#: plinth/templates/clients.html:57 +msgid "macOS" +msgstr "" + +#: plinth/templates/clients.html:73 +msgid "Mobile" +msgstr "" + +#: plinth/templates/clients.html:84 +msgid "Play Store" +msgstr "" + +#: plinth/templates/clients.html:86 +msgid "F-Droid" +msgstr "" + +#: plinth/templates/clients.html:88 +msgid "App Store" +msgstr "" + +#: plinth/templates/clients.html:104 +msgid "Package" +msgstr "" + +#: plinth/templates/clients.html:111 +msgid "Debian:" +msgstr "" + +#: plinth/templates/clients.html:114 +msgid "Homebrew:" +msgstr "" + +#: plinth/templates/clients.html:117 +msgid "RPM:" +msgstr "" + +#: plinth/templates/first_setup.html:18 +#, python-format +msgid "" +"Please wait for %(box_name)s to finish installation. You can start using " +"your %(box_name)s once it is done." +msgstr "" + +#: plinth/templates/index.html:22 +#, python-format +msgid "" +"Enable some applications to add shortcuts to " +"this page." +msgstr "" + +#: plinth/templates/index.html:108 +#, python-format +msgid "" +"%(box_name)s, a Debian pure blend, is a 100%% free software self-hosting web " +"server to deploy social applications on small machines. It provides online " +"communication tools respecting your privacy and data ownership." +msgstr "" + +#: plinth/templates/index.html:117 +#, python-format +msgid "" +"This portal is a part of the %(box_name)s web interface. %(box_name)s is " +"free software, distributed under the GNU Affero General Public License, " +"Version 3 or later." +msgstr "" + +#: plinth/templates/index.html:135 +msgid "Source Code" +msgstr "" + +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "" + +#: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 +msgid "Donate" +msgstr "" + +#: plinth/templates/index.html:147 +msgid "FreedomBox Foundation" +msgstr "" + +#: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 +msgid "Mailing list" +msgstr "" + +#: plinth/templates/internal-zone.html:11 +#, python-format +msgid "" +"%(service_name)s is available only on internal networks or when the " +"client is connected to %(box_name)s through VPN." +msgstr "" + +#: plinth/templates/internal-zone.html:17 +msgid "Currently there are no network interfaces configured as internal." +msgstr "" + +#: plinth/templates/internal-zone.html:19 +#, python-format +msgid "" +"Currently the following network interfaces are configured as internal: " +"%(interface_list)s" +msgstr "" + +#: plinth/templates/messages.html:11 +msgid "Close" +msgstr "" + +#: plinth/templates/notifications-dropdown.html:11 +msgid "Notifications" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:8 +msgid "Port Forwarding" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:13 +#, python-format +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:39 +#, python-format +msgid "To %(box_name)s Ports" +msgstr "" + +#: plinth/templates/setup.html:24 +msgid "Install this application?" +msgstr "" + +#: plinth/templates/setup.html:28 +msgid "This application needs an update. Update now?" +msgstr "" + +#: plinth/templates/setup.html:39 +msgid "" +"Another installation or upgrade is already running. Please wait for a few " +"moments before trying again." +msgstr "" + +#: plinth/templates/setup.html:46 +msgid "This application is currently not available in your distribution." +msgstr "" + +#: plinth/templates/setup.html:50 +msgid "Check again" +msgstr "" + +#: plinth/templates/setup.html:55 +msgid "" +"Conflicting Packages: Some packages installed on the system " +"conflict with the installation of this app. The following packages will be " +"removed if you proceed:" +msgstr "" + +#: plinth/templates/setup.html:71 +msgid "Install" +msgstr "" + +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/templates/setup.html:83 +msgid "Performing pre-install operation" +msgstr "" + +#: plinth/templates/setup.html:88 +msgid "Performing post-install operation" +msgstr "" + +#: plinth/templates/setup.html:94 +#, python-format +msgid "Installing %(package_names)s: %(status)s" +msgstr "" + +#: plinth/templates/setup.html:104 +#, python-format +msgid "%(percentage)s%% complete" +msgstr "" + +#: plinth/web_framework.py:114 +msgid "Gujarati" +msgstr "" diff --git a/plinth/locale/ar_SA/LC_MESSAGES/django.po b/plinth/locale/ar_SA/LC_MESSAGES/django.po index fd322857d..4a4e9457b 100644 --- a/plinth/locale/ar_SA/LC_MESSAGES/django.po +++ b/plinth/locale/ar_SA/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2020-06-10 15:41+0000\n" "Last-Translator: aiman an \n" "Language-Team: Arabic (Saudi Arabia) Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6879,28 +6879,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7092,12 +7097,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7109,10 +7114,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index 9af6814e6..ee917fd8a 100644 --- a/plinth/locale/bg/LC_MESSAGES/django.po +++ b/plinth/locale/bg/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" -"PO-Revision-Date: 2022-03-04 21:35+0000\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" +"PO-Revision-Date: 2022-03-31 09:12+0000\n" "Last-Translator: 109247019824 \n" "Language-Team: Bulgarian \n" @@ -152,7 +152,7 @@ msgstr "Домейн в местната мрежа" #: plinth/modules/backups/__init__.py:27 msgid "Backups allows creating and managing backup archives." -msgstr "Създаване и управление на архивни копия." +msgstr "Създаване и управление на архивни с резервни копия." #: plinth/modules/backups/__init__.py:50 plinth/modules/backups/__init__.py:202 #: plinth/modules/backups/__init__.py:247 @@ -185,8 +185,8 @@ msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " "succeed. The latest error is: {error_message}" msgstr "" -"Резервно копие по график се провали. Последните {error_count} опита за " -"създаване на резервно копие са безуспешни. Последната грешка е: " +"Грешка при създаване на резервно копие по график. Последните {error_count} " +"опита за създаване на резервно копие са безуспешни. Последната грешка е: " "{error_message}" #: plinth/modules/backups/__init__.py:252 @@ -219,9 +219,9 @@ msgid "" "This many latest backups are kept and the rest are removed. A value of \"0\" " "disables backups of this type. Triggered at specified hour every day." msgstr "" -"Таакова количество от последните резервни копия ще бъдат запазвани, а " -"останалите - премахвани. Стойност „0“ изключва този вид резервно копие. " -"Изпълнява се в определен час всеки ден." +"Такова броя от последните резервни копия ще бъдат запазвани, а останалите - " +"премахвани. Стойност „0“ изключва този вид резервно копие. Изпълнява се в " +"определен час всеки ден." #: plinth/modules/backups/forms.py:64 msgid "Number of weekly backups to keep" @@ -232,7 +232,7 @@ msgid "" "This many latest backups are kept and the rest are removed. A value of \"0\" " "disables backups of this type. Triggered at specified hour every Sunday." msgstr "" -"Толкова от последните резервни копия ще бъдат запазвани, а останалите - " +"Толкова броя от последните резервни копия ще бъдат запазвани, а останалите - " "премахвани. Стойност „0“ изключва този вид резервно копие. Изпълнява се в " "определен час всяка неделя." @@ -246,7 +246,7 @@ msgid "" "disables backups of this type. Triggered at specified hour first day of " "every month." msgstr "" -"Толкова от последните резервни копия ще бъдат запазвани, а останалите - " +"Толкова броя от последните резервни копия ще бъдат запазвани, а останалите - " "премахвани. Стойност „0“ изключва този вид резервно копие. Изпълнява се в " "определен час на първия ден от всеки месец." @@ -885,7 +885,7 @@ msgstr "" #: plinth/modules/wireguard/templates/wireguard_show_client.html:77 #: plinth/modules/wireguard/templates/wireguard_show_server.html:78 msgid "Delete" -msgstr "" +msgstr "Премахване" #: plinth/modules/bepasty/views.py:53 msgid "Admin" @@ -902,7 +902,7 @@ msgstr "" #: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 #: plinth/modules/zoph/views.py:72 msgid "An error occurred during configuration." -msgstr "" +msgstr "Възникна грешка по време на настройване." #: plinth/modules/bepasty/views.py:104 msgid "Password added." @@ -1039,8 +1039,8 @@ msgstr "" #: plinth/modules/calibre/forms.py:19 msgid "" -"Only letters of the English alphabet and numbers, without spaces or special " -"characters. Example: My_Library_2000" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" msgstr "" #: plinth/modules/calibre/forms.py:30 @@ -3042,7 +3042,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:34 +#: plinth/modules/minetest/__init__.py:35 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3051,11 +3051,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6930,28 +6930,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7143,14 +7148,14 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Страница" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Страница" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "" @@ -7160,10 +7165,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index e4a2619a3..e6dfbf861 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-06-16 07:33+0000\n" "Last-Translator: Oymate \n" "Language-Team: Bengali Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "মাইনটেস্ট" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6889,28 +6889,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7102,12 +7107,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7119,10 +7124,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index 2c4790fb0..7b51fb510 100644 --- a/plinth/locale/cs/LC_MESSAGES/django.po +++ b/plinth/locale/cs/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" -"PO-Revision-Date: 2022-03-04 12:58+0000\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" +"PO-Revision-Date: 2022-03-31 09:12+0000\n" "Last-Translator: Jiří Podhorecký \n" "Language-Team: Czech \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.11.1-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -1067,10 +1067,16 @@ msgid "Name of the new library" msgstr "Název nové knihovny" #: plinth/modules/calibre/forms.py:19 +#, fuzzy +#| msgid "" +#| "Only letters of the English alphabet and numbers, without spaces or " +#| "special characters. Example: My_Library_2000" msgid "" -"Only letters of the English alphabet and numbers, without spaces or special " -"characters. Example: My_Library_2000" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" msgstr "" +"Pouze písmena anglické abecedy a číslice, bez mezer a speciálních znaků. " +"Příklad: My_Library_2000" #: plinth/modules/calibre/forms.py:30 msgid "A library with this name already exists." @@ -3395,7 +3401,7 @@ msgstr "Změna výchozího vzhledu" msgid "Server URL updated" msgstr "Aktualizace URL serveru" -#: plinth/modules/minetest/__init__.py:34 +#: plinth/modules/minetest/__init__.py:35 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3408,11 +3414,11 @@ msgstr "" "serveru je třeba Minetest " "klient." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Pískoviště s kostkami" @@ -7863,28 +7869,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "Obecné" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "Balíček {package_name} je nejnovější verze ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Chyba při instalaci" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "Instalace" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "stahování" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "změna média" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "soubor s nastaveními: {file}" @@ -8094,14 +8105,14 @@ msgstr "" "svobodný software, šířený pod licencí GNU Affero General Public License, " "verze 3 a novějších." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Domovská stránka" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Zdrojové kódy" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Domovská stránka" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Podpořit vývoj darem" @@ -8111,10 +8122,14 @@ msgid "FreedomBox Foundation" msgstr "Nadace FreedomBox" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "Chatovací místnost na IRC" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Poštovní konference" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index 06b252896..5c51f288f 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Danish Minetest klient." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 #, fuzzy #| msgid "Block Sandbox (Minetest)" msgid "Block Sandbox" @@ -7961,28 +7961,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Fejl under installation" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "Installerer" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "downloader" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "medie-ændring" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -8203,12 +8208,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -8222,10 +8227,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox Brugervejledning" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index e57a6b9cb..67832139e 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: 2022-03-28 20:05-0400\n" -"PO-Revision-Date: 2022-03-04 12:58+0000\n" -"Last-Translator: Johannes Keyser \n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" +"PO-Revision-Date: 2022-04-04 18:08+0000\n" +"Last-Translator: Paul Lettich \n" "Language-Team: German \n" "Language: de\n" @@ -19,7 +19,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.11.1-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -1094,10 +1094,16 @@ msgid "Name of the new library" msgstr "Name der neuen Bibliothek" #: plinth/modules/calibre/forms.py:19 +#, fuzzy +#| msgid "" +#| "Only letters of the English alphabet and numbers, without spaces or " +#| "special characters. Example: My_Library_2000" msgid "" -"Only letters of the English alphabet and numbers, without spaces or special " -"characters. Example: My_Library_2000" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" msgstr "" +"Nur Buchstaben des Alphabets und Zahlen, ohne Leerzeichen oder " +"Sonderzeichen. Beispiel: Meine_Bibliothek_2000" #: plinth/modules/calibre/forms.py:30 msgid "A library with this name already exists." @@ -3461,7 +3467,7 @@ msgstr "Standard-Thema geändert" msgid "Server URL updated" msgstr "Server-URL aktualisiert" -#: plinth/modules/minetest/__init__.py:34 +#: plinth/modules/minetest/__init__.py:35 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3474,11 +3480,11 @@ msgstr "" "Standardport (30000). Um auf dem Server zu spielen, wird ein Minetest-Client benötigt." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block-Sandkasten" @@ -4439,7 +4445,7 @@ msgstr "" #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 #: plinth/modules/users/templates/users_firstboot.html:63 msgid "Skip this step" -msgstr "Überspringen Sie diesen Schritt" +msgstr "Überspringen Sie diesen Schritt" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 @@ -8028,28 +8034,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "Allgemein" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "Paket {package_name} ist die aktuellste Version ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Fehler bei der Installation" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "Installation läuft" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "herunterladen" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "Medienwechsel" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "Konfigurationsdatei: {file}" @@ -8264,14 +8275,14 @@ msgstr "" "freie Software, die unter der GNU Affero General Public License, Version 3 " "oder höher, vertrieben wird." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Homepage" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Quellcode" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Homepage" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Spenden" @@ -8281,10 +8292,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox Stiftung" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "IRC-Chatraum" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Mailingliste" diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index 5a2dfbdd5..87d45a349 100644 --- a/plinth/locale/django.pot +++ b/plinth/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -985,8 +985,8 @@ msgstr "" #: plinth/modules/calibre/forms.py:19 msgid "" -"Only letters of the English alphabet and numbers, without spaces or special " -"characters. Example: My_Library_2000" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" msgstr "" #: plinth/modules/calibre/forms.py:30 @@ -2986,7 +2986,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:34 +#: plinth/modules/minetest/__init__.py:35 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2995,11 +2995,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6872,28 +6872,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7085,12 +7090,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7102,10 +7107,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 24ad592ed..487fded19 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-04-14 04:27+0000\n" "Last-Translator: Michalis \n" "Language-Team: Greek Minetest πελάτη είναι απαραίτητος." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Μπλοκ Sandbox" @@ -8156,28 +8156,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "Γενικός" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Σφάλμα κατά την εγκατάσταση" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "Εγκαθίσταται" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "Λήψη" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "Αλλαγή μέσου" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "αρχείο ρυθμίσεων: {file}" @@ -8402,14 +8407,14 @@ msgstr "" "είναι ελεύθερο λογισμικό, που διανέμεται με τη γενική άδεια δημόσιας χρήσης " "GNU Affero, έκδοση 3 ή νεότερη." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Αρχική σελίδα" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Πηγαίος Κώδικας" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Αρχική σελίδα" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Δωρεά" @@ -8419,10 +8424,14 @@ msgid "FreedomBox Foundation" msgstr "Ίδρυμα FreedomBox" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "Αίθουσα συνομιλίας IRC" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Λίστα ηλεκτρονικού ταχυδρομείου" diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index 2e35d35e1..de5d5fe63 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2022-03-10 22:59+0000\n" "Last-Translator: Nathaniel Ramos Alexander \n" "Language-Team: Spanish Cliente Minetest." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Sandbox de bloques" @@ -7980,28 +7980,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "Genérica" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "El paquete {package_name} es la última versión ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Error durante la instalación" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "instalando" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "descargando" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "cambio de medio" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "archivo de configuración: {file}" @@ -8213,14 +8218,14 @@ msgstr "" "software libre, distribuido bajo la Licencia Pública General de GNU Affero, " "versión 3 o posterior." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Página inicio" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Código Fuente" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Página inicio" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Donar" @@ -8230,10 +8235,14 @@ msgid "FreedomBox Foundation" msgstr "Fundación FreedomBox" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "Sala de chat IRC" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Lista de correo" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index 9c29ab155..29ddcf067 100644 --- a/plinth/locale/fa/LC_MESSAGES/django.po +++ b/plinth/locale/fa/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-09-07 11:34+0000\n" "Last-Translator: Seyed mohammad ali Hosseinifard \n" "Language-Team: Persian برنامهٔ ماین‌تست نیاز است." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 #, fuzzy msgid "Block Sandbox" msgstr "بازی مکعب‌ها (Minetest)" @@ -7591,28 +7591,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7809,14 +7814,14 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "کد منبع" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "کمک مالی" @@ -7827,10 +7832,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "گپ سرای آی‌آرسی" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "فهرست پستی" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index fb56ee61b..ead66a328 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" @@ -8043,32 +8043,37 @@ msgstr "PPPOE" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 #, fuzzy #| msgid "Installation" msgid "installing" msgstr "INSTALLATION" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "SETTING UNCHANGED" -#: plinth/package.py:273 +#: plinth/package.py:383 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -8294,12 +8299,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -8313,10 +8318,14 @@ msgid "FreedomBox Foundation" msgstr "FREEDOMBOX MANUAL" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 8f28637c9..a9fe394c5 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" -"PO-Revision-Date: 2022-03-20 14:17+0000\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" +"PO-Revision-Date: 2022-04-01 21:10+0000\n" "Last-Translator: Coucouf \n" "Language-Team: French \n" @@ -1093,10 +1093,17 @@ msgid "Name of the new library" msgstr "Nom de la collection" #: plinth/modules/calibre/forms.py:19 +#, fuzzy +#| msgid "" +#| "Only letters of the English alphabet and numbers, without spaces or " +#| "special characters. Example: My_Library_2000" msgid "" -"Only letters of the English alphabet and numbers, without spaces or special " -"characters. Example: My_Library_2000" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" msgstr "" +"Seules les lettres A à Z majuscules ou minuscules, les chiffres et les " +"caractères _ . et - sans espaces sont autorisés. Exemple : " +"Ma_Bibliotheque_2000" #: plinth/modules/calibre/forms.py:30 msgid "A library with this name already exists." @@ -3482,7 +3489,7 @@ msgstr "Thème par défaut modifié" msgid "Server URL updated" msgstr "URL du Serveur mise à jour" -#: plinth/modules/minetest/__init__.py:34 +#: plinth/modules/minetest/__init__.py:35 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3495,11 +3502,11 @@ msgstr "" "au serveur, vous devez disposer d'un client Minetest." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Bac à sable cubique" @@ -8074,28 +8081,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "Générique" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "Le paquet {package_name} est à la dernière version ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Erreur pendant l’installation" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "installation en cours" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "téléchargement en cours" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "changement de support" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "fichier de configuration : {file}" @@ -8308,14 +8320,14 @@ msgstr "" "est un logiciel libre distribué sous la licence publique générale GNU " "Affero, version 3 ou ultérieure." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Page d’accueil du projet" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Code source" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Page d’accueil du projet" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Faire un don" @@ -8325,10 +8337,14 @@ msgid "FreedomBox Foundation" msgstr "Fondation FreedomBox" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "Canal de tchat IRC" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Liste de discussion du projet" diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index 37bd98cb3..258a3a76d 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Galician Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6902,28 +6902,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7115,12 +7120,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7132,10 +7137,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index 8e2442a01..7d1631487 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Gujarati Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -7203,28 +7203,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7422,12 +7427,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7439,10 +7444,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index caaa5944c..7523fca3f 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Hindi मैइनटेस्ट क्लायंटकी आवश्यकता है." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "मैइनटेस्ट" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "ब्लॉक सेंडबोक्स" @@ -7946,28 +7946,33 @@ msgstr "पीपीपीअोइ" msgid "Generic" msgstr "जेनेरिक" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "इंस्टालेशन करते समय पर त्रुटि" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "इंस्टॉलिंग" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "डाउनलोडिंग" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "मीडिया बदलाव" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "कॉंफ़िगरेशन फ़ाइल: {file}" @@ -8187,14 +8192,14 @@ msgstr "" "यह पोर्टल %(box_name)s का वेब इंटरफ़ेस का एक भाग है. %(box_name)s एक मुक्त सॉफ्टवेयर " "है, जो ग्नू एफेरो जनरल पब्लिक लाइसेंस संस्करण 3 या बाद के तहत वितरित है." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "होमपेज" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "सोर्स कोड" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "होमपेज" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "दान करें" @@ -8204,10 +8209,14 @@ msgid "FreedomBox Foundation" msgstr "फ्रीडमबाक्स फाउंडेशन" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "आईआरसी चैटरूम" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "मेलिंग सूची" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 19be928a6..747d74693 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" -"PO-Revision-Date: 2022-03-10 22:59+0000\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" +"PO-Revision-Date: 2022-03-31 09:12+0000\n" "Last-Translator: Benedek Nagy \n" "Language-Team: Hungarian \n" @@ -1082,10 +1082,16 @@ msgid "Name of the new library" msgstr "Az új könyvtár neve" #: plinth/modules/calibre/forms.py:19 +#, fuzzy +#| msgid "" +#| "Only letters of the English alphabet and numbers, without spaces or " +#| "special characters. Example: My_Library_2000" msgid "" -"Only letters of the English alphabet and numbers, without spaces or special " -"characters. Example: My_Library_2000" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" msgstr "" +"A könyvtár neve csak az angol ábécé betűit és számokat tartalmazhat, " +"szóközök és különleges karakterek nélkül. Példa: Konyvtar_neve_2000" #: plinth/modules/calibre/forms.py:30 msgid "A library with this name already exists." @@ -3435,7 +3441,7 @@ msgstr "Az alapértelmezett felszín megváltozott" msgid "Server URL updated" msgstr "Szerver URL frissítve" -#: plinth/modules/minetest/__init__.py:34 +#: plinth/modules/minetest/__init__.py:35 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3449,11 +3455,11 @@ msgstr "" "szerverre egy Minetest " "kliensre is szükséged lesz." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Blokk sandbox" @@ -7959,28 +7965,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "Általános" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "A(z) {package_name} a legfrissebb verzió ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Hiba lépett fel a telepítés során" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "telepítés" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "letöltés" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "adathordozó csere" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurációs fájl: {file}" @@ -8192,14 +8203,14 @@ msgstr "" "Általános Nyilvános Licenc (3-as vagy újabb változat) alapján terjesztett " "szabad szoftver." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Honlap" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Forráskód" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Honlap" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Adományozás" @@ -8209,10 +8220,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox Alapítvány" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "IRC-csevegőszoba" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Levelezőlista" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index 31e45d6bd..71bbdbb4e 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-06-24 00:42+0000\n" "Last-Translator: Reza Almanda \n" "Language-Team: Indonesian Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -7365,28 +7365,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Galat saat pemasangan" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "memasang" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "mengunduh" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7583,14 +7588,14 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Beranda" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Kode Sumber" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Beranda" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Donasi" @@ -7600,10 +7605,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox Foundation" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "Ruang Obrolan IRC" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Milis" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index 7bbf7482e..0adc833d0 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2022-01-06 22:41+0000\n" "Last-Translator: Dietmar \n" "Language-Team: Italian client Minetest." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block Sandbox" @@ -7439,28 +7439,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7657,12 +7662,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7674,10 +7679,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index 775297637..b9507b6aa 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-05-20 12:32+0000\n" "Last-Translator: Jacque Fresco \n" "Language-Team: Japanese Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6874,28 +6874,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7087,12 +7092,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7104,10 +7109,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index d841a1f5b..f11c6753a 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2020-07-16 16:41+0000\n" "Last-Translator: Yogesh \n" "Language-Team: Kannada Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6876,28 +6876,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7089,12 +7094,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7106,10 +7111,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index c8dafed1e..f39efa0bf 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-02-22 10:50+0000\n" "Last-Translator: Kornelijus Tvarijanavičius \n" "Language-Team: Lithuanian Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6875,28 +6875,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7088,12 +7093,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7105,10 +7110,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index c7c800676..532a3c446 100644 --- a/plinth/locale/nb/LC_MESSAGES/django.po +++ b/plinth/locale/nb/LC_MESSAGES/django.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-12-27 05:53+0000\n" "Last-Translator: Petter Reinholdtsen \n" "Language-Team: Norwegian Bokmål Minetest-klient." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block-sandkassen" @@ -7999,28 +7999,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "Generisk" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Feil under installasjon" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "installering" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "laster ned" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "mediaendring" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "oppsettsfil: {file}" @@ -8237,14 +8242,14 @@ msgstr "" "programvare, og distribuert i henhold til GNU Affero General Public License " "versjon 3 eller senere." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Hjemmeside" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Kildekode" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Hjemmeside" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Doner" @@ -8254,10 +8259,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox Foundation" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "IRC-nettpratrom" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Adresseliste" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 5a88fa8d2..78d5906be 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" -"PO-Revision-Date: 2022-03-06 11:18+0000\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" +"PO-Revision-Date: 2022-03-31 09:12+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch \n" @@ -1083,10 +1083,16 @@ msgid "Name of the new library" msgstr "Naam van de nieuwe bibliotheek" #: plinth/modules/calibre/forms.py:19 +#, fuzzy +#| msgid "" +#| "Only letters of the English alphabet and numbers, without spaces or " +#| "special characters. Example: My_Library_2000" msgid "" -"Only letters of the English alphabet and numbers, without spaces or special " -"characters. Example: My_Library_2000" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" msgstr "" +"Alleen letters van het alfabet en cijfers, zonder spaties of speciale " +"tekens. Voorbeeld: Mijn_Bibliotheek_2000" #: plinth/modules/calibre/forms.py:30 msgid "A library with this name already exists." @@ -3433,7 +3439,7 @@ msgstr "Standaard uiterlijk veranderd" msgid "Server URL updated" msgstr "Server URL aangepast" -#: plinth/modules/minetest/__init__.py:34 +#: plinth/modules/minetest/__init__.py:35 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3446,11 +3452,11 @@ msgstr "" "standaardpoort (30000). Voor de verbinding met de server is een Minetest client nodig." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block Sandbox" @@ -7942,28 +7948,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "Generiek" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "Pakket {package_name} is de nieuwste versie ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Fout tijdens installatie" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "installeren" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "downloaden" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "media wijzigen" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "configuratiebestand: {file}" @@ -8175,14 +8186,14 @@ msgstr "" "vrije software en wordt gedistribueerd onder de GNU Affero General Public " "License, Versie 3 of hoger." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Startpagina" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Broncode" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Startpagina" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Doneren" @@ -8192,10 +8203,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox Foundation" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "IRC Chatroom" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Mailinglijst" diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index 31f34ce88..14dd3237e 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-03-03 16:50+0000\n" "Last-Translator: Karol Werner \n" "Language-Team: Polish Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" @@ -7395,28 +7395,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "plik konfiguracyjny: {file}" @@ -7645,12 +7650,12 @@ msgstr "" "Plinth jest wolnym oprogramowaniem, rozpowszechnianym w licencji GNU Affero " "General Public License w wersji 3 lub późniejszej." -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7662,10 +7667,14 @@ msgid "FreedomBox Foundation" msgstr "Fundacja FreedomBox" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index 29f43ae20..5bd51bf01 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-05-08 22:33+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -7213,30 +7213,35 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "Definição inalterada" -#: plinth/package.py:273 +#: plinth/package.py:383 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -7432,12 +7437,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7449,10 +7454,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 5700ba7b7..893377c54 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2022-03-20 14:17+0000\n" "Last-Translator: Nikita Epifanov \n" "Language-Team: Russian Minetest клиент." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Песочница" @@ -7905,28 +7905,33 @@ msgstr "PPPоE" msgid "Generic" msgstr "Универсальный" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "Пакет {package_name} последней версией ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Ошибка во время установки" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "Установка" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "Загрузка" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "изменение медиа" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "Файл настроек: {file}" @@ -8138,14 +8143,14 @@ msgstr "" "программное обеспечение, выпускаемое под лицензией GNU Affero General Public " "License, Версии 3 или старше." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Домашняя страница" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Исходный код" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Домашняя страница" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Пожертвовать" @@ -8155,10 +8160,14 @@ msgid "FreedomBox Foundation" msgstr "Фонд FrеedomBox" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "Чат IRC" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Список рассылки" diff --git a/plinth/locale/si/LC_MESSAGES/django.po b/plinth/locale/si/LC_MESSAGES/django.po index 529e2cea7..9011f5d04 100644 --- a/plinth/locale/si/LC_MESSAGES/django.po +++ b/plinth/locale/si/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-04-27 13:32+0000\n" "Last-Translator: HelaBasa \n" "Language-Team: Sinhala Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6874,28 +6874,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7087,12 +7092,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7104,10 +7109,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index 7fc1db56d..f6ddd06e6 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Slovenian Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -7152,28 +7152,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7365,12 +7370,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7382,10 +7387,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/sq/LC_MESSAGES/django.po b/plinth/locale/sq/LC_MESSAGES/django.po index 6b980bb8c..0cbd0ef8d 100644 --- a/plinth/locale/sq/LC_MESSAGES/django.po +++ b/plinth/locale/sq/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2022-02-06 23:23+0000\n" "Last-Translator: Besnik Bleta \n" "Language-Team: Albanian klient Minetest." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Bankëprovë Blloqesh" @@ -7972,29 +7972,34 @@ msgstr "PPPoE" msgid "Generic" msgstr "Elementar" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" "Paketa {package_name} gjendet nën versionin më të ri ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Gabim gjatë instalimit" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "po instalohet" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "po shkarkohet" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "ndryshim media" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "kartelë formësimi: {file}" @@ -8205,14 +8210,14 @@ msgstr "" "<em>software</em> i lirë, i shpërndarë sipas licencës GNU Affero " "General Public License, Version 3 ose i mëvonshëm." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Faqe hyrëse" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Kod Burim" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Faqe hyrëse" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Dhuroni" @@ -8222,10 +8227,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox Foundation" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "Dhomë IRC" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Listë postimesh" diff --git a/plinth/locale/sr/LC_MESSAGES/django.po b/plinth/locale/sr/LC_MESSAGES/django.po index 12c966b6b..ee08d464a 100644 --- a/plinth/locale/sr/LC_MESSAGES/django.po +++ b/plinth/locale/sr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Serbian Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6983,28 +6983,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7196,12 +7201,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7213,10 +7218,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 239613faa..3435b9030 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2022-02-17 16:58+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish Minetest klient behövs." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block sandbox" @@ -7901,28 +7901,33 @@ msgstr "Pppoe" msgid "Generic" msgstr "Generiska" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "Paketet {package_name} är den senaste versionen ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Fel vid installation" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "Installera" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "ladda ner" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "Mediabyte" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -8133,14 +8138,14 @@ msgstr "" "är fri programvara, distribueras under GNU Affero General Public License, " "version 3 eller senare." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Hemsida" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Källkod" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Hemsida" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Donera" @@ -8150,10 +8155,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox Foundation" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "IRC chatrum" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "E-postlista" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index b802f37ca..a84ec064b 100644 --- a/plinth/locale/ta/LC_MESSAGES/django.po +++ b/plinth/locale/ta/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -986,8 +986,8 @@ msgstr "" #: plinth/modules/calibre/forms.py:19 msgid "" -"Only letters of the English alphabet and numbers, without spaces or special " -"characters. Example: My_Library_2000" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" msgstr "" #: plinth/modules/calibre/forms.py:30 @@ -2987,7 +2987,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:34 +#: plinth/modules/minetest/__init__.py:35 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2996,11 +2996,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6873,28 +6873,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7086,12 +7091,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7103,10 +7108,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index 20d46014d..53631a2d6 100644 --- a/plinth/locale/te/LC_MESSAGES/django.po +++ b/plinth/locale/te/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2022-03-02 12:27+0000\n" "Last-Translator: James Valleroy \n" "Language-Team: Telugu Minetest క్లయింట్ అవసరం." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "మైన్ టెస్ట్" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "బ్లాక్ శాండ్‌బాక్స్‌" @@ -7634,28 +7634,33 @@ msgstr "పిపిపిఒఇ" msgid "Generic" msgstr "సాధారణమైన" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "ప్యాకేజీ {package_name} తాజా వెర్షన్ ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "సంస్థాపన ఒక పొరపాటు జరిగింది" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "వ్యవస్థాపిస్తోంది" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "దిగుమతి అవుతోంది" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "ప్రసార మాధ్యమం మార్పు" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "ఆకృతీకరణ ఫైలు: {file}" @@ -7862,14 +7867,14 @@ msgstr "" "ఈ పోర్టల్ %(box_name)s వెబ్ సంవిధానంలో ఒక భాగం. %(box_name)s అనేది ఉచిత సాఫ్ట్‌వేర్, ఇది GNU " "అఫెరో జనరల్ పబ్లిక్ లైసెన్స్, వెర్షన్ 3 లేదా తదుపరిది కింద పంపిణీ చేయబడింది." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "హోంపేజ్" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "మూల కోడ్" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "హోంపేజ్" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "విరాళమివ్వండి" @@ -7879,10 +7884,14 @@ msgid "FreedomBox Foundation" msgstr "ఫ్రీడమ్ బాక్స్ నిర్దేశిక" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "IRC చాట్ రూమ్" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "మెయిలింగ్ జాబితా" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index 49efc971d..05939466e 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -6,9 +6,9 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" -"PO-Revision-Date: 2022-03-04 12:58+0000\n" -"Last-Translator: Burak Yavuz \n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" +"PO-Revision-Date: 2022-03-31 09:12+0000\n" +"Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" "Language: tr\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.11.1-dev\n" +"X-Generator: Weblate 4.12-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -1070,10 +1070,16 @@ msgid "Name of the new library" msgstr "Yeni kütüphanenin adı" #: plinth/modules/calibre/forms.py:19 +#, fuzzy +#| msgid "" +#| "Only letters of the English alphabet and numbers, without spaces or " +#| "special characters. Example: My_Library_2000" msgid "" -"Only letters of the English alphabet and numbers, without spaces or special " -"characters. Example: My_Library_2000" +"Only letters of the English alphabet, numbers and the characters _ . and - " +"without spaces or special characters. Example: My_Library_2000" msgstr "" +"Boşluk veya özel karakterler olmadan yalnızca İngiliz alfabesindeki harfler " +"ve sayılar. Örnek: Kutuphanem_2000" #: plinth/modules/calibre/forms.py:30 msgid "A library with this name already exists." @@ -3412,7 +3418,7 @@ msgstr "Varsayılan kaplama değiştirildi" msgid "Server URL updated" msgstr "Sunucu URL'si güncellendi" -#: plinth/modules/minetest/__init__.py:34 +#: plinth/modules/minetest/__init__.py:35 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3425,11 +3431,11 @@ msgstr "" "(30000) çalıştırılmasını sağlar. Sunucuya bağlanmak için bir Minetest istemcisi gereklidir." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Blok Kum Havuzu" @@ -7899,28 +7905,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "Genel" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "{package_name} paketi en son sürümdür ({latest_version})" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Kurulum sırasında hata oldu" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "yükleniyor" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "indiriliyor" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "ortam değiştirme" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "yapılandırma dosyası: {file}" @@ -8132,14 +8143,14 @@ msgstr "" "Affero Genel Kamu Lisansı, Sürüm 3 veya üzeri altında dağıtılan özgür bir " "yazılımdır." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Ana Sayfa" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Kaynak Kodu" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Ana Sayfa" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Bağış" @@ -8149,10 +8160,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox Vakfı" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "IRC Sohbet Odası" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Posta listesi" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index d3b35de7c..1cfaf3f03 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2022-02-16 20:57+0000\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian клієнт Minetest." -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Блокова пісочниця" @@ -7354,28 +7354,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "Помилка під час установлення" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "установлення" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "завантаження" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "зміна медія" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "файл конфіґурації: {file}" @@ -7584,14 +7589,14 @@ msgstr "" "безкоштовним програмним забезпеченням, що поширюється під Загальною " "громадською ліцензією GNU Affero (GNU AGPL) версії 3 або пізнішої." -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "Домашня сторінка" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "Вихідний код" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "Домашня сторінка" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "Пожертви" @@ -7601,10 +7606,14 @@ msgid "FreedomBox Foundation" msgstr "Фонд FreedomBox" #: plinth/templates/index.html:154 +msgid "Forum" +msgstr "" + +#: plinth/templates/index.html:159 msgid "IRC Chatroom" msgstr "Канал IRC" -#: plinth/templates/index.html:159 +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "Поштова розсилка" diff --git a/plinth/locale/vi/LC_MESSAGES/django.po b/plinth/locale/vi/LC_MESSAGES/django.po index 79ac4b6e4..703833f3c 100644 --- a/plinth/locale/vi/LC_MESSAGES/django.po +++ b/plinth/locale/vi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-07-28 08:34+0000\n" "Last-Translator: bruh \n" "Language-Team: Vietnamese Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -7099,28 +7099,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7312,12 +7317,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7329,10 +7334,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index da234de52..ef8e556f6 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: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2022-03-28 05:11+0000\n" "Last-Translator: Eric \n" "Language-Team: Chinese (Simplified) Minetest 客户端。" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "方块沙盒" @@ -7145,28 +7145,33 @@ msgstr "PPPoE" msgid "Generic" msgstr "通用" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "安装时错误" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "安装" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "下载中" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "媒体改变" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "配置文件:{file}" @@ -7370,14 +7375,14 @@ msgstr "" "此页面是 %(box_name)s Web 接口的一部分。%(box_name)s 是自由软件,以 GNU " "Affero 通用许可证第 3 版或更高版发布。" -#: plinth/templates/index.html:137 -msgid "Homepage" -msgstr "主页" - -#: plinth/templates/index.html:140 +#: plinth/templates/index.html:135 msgid "Source Code" msgstr "源代码" +#: plinth/templates/index.html:140 +msgid "Homepage" +msgstr "主页" + #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 msgid "Donate" msgstr "捐赠" @@ -7387,10 +7392,14 @@ msgid "FreedomBox Foundation" msgstr "FreedomBox 基金会" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "邮件列表" diff --git a/plinth/locale/zh_Hant/LC_MESSAGES/django.po b/plinth/locale/zh_Hant/LC_MESSAGES/django.po index b48cf9491..e35045e6d 100644 --- a/plinth/locale/zh_Hant/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hant/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-28 20:05-0400\n" +"POT-Creation-Date: 2022-04-11 19:52-0400\n" "PO-Revision-Date: 2021-12-23 12:50+0000\n" "Last-Translator: pesder \n" "Language-Team: Chinese (Traditional) Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:59 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:60 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:60 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -6975,28 +6975,33 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:94 +#: plinth/package.py:188 +#, python-brace-format +msgid "Package {expression} is not available for install" +msgstr "" + +#: plinth/package.py:201 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" msgstr "" -#: plinth/package.py:245 +#: plinth/package.py:355 msgid "Error during installation" msgstr "" -#: plinth/package.py:267 +#: plinth/package.py:377 msgid "installing" msgstr "" -#: plinth/package.py:269 +#: plinth/package.py:379 msgid "downloading" msgstr "" -#: plinth/package.py:271 +#: plinth/package.py:381 msgid "media change" msgstr "" -#: plinth/package.py:273 +#: plinth/package.py:383 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7188,12 +7193,12 @@ msgid "" "Version 3 or later." msgstr "" -#: plinth/templates/index.html:137 -msgid "Homepage" +#: plinth/templates/index.html:135 +msgid "Source Code" msgstr "" #: plinth/templates/index.html:140 -msgid "Source Code" +msgid "Homepage" msgstr "" #: plinth/templates/index.html:143 plinth/templates/toolbar.html:19 @@ -7205,10 +7210,14 @@ msgid "FreedomBox Foundation" msgstr "" #: plinth/templates/index.html:154 -msgid "IRC Chatroom" +msgid "Forum" msgstr "" #: plinth/templates/index.html:159 +msgid "IRC Chatroom" +msgstr "" + +#: plinth/templates/index.html:164 msgid "Mailing list" msgstr "" diff --git a/plinth/modules/calibre/forms.py b/plinth/modules/calibre/forms.py index 84c7e187e..378c43420 100644 --- a/plinth/modules/calibre/forms.py +++ b/plinth/modules/calibre/forms.py @@ -16,9 +16,9 @@ class CreateLibraryForm(forms.Form): name = forms.CharField( label=_('Name of the new library'), strip=True, - help_text=_('Only letters of the English alphabet and numbers, ' - 'without spaces or special characters. Example: ' - 'My_Library_2000'), + help_text=_('Only letters of the English alphabet, numbers ' + 'and the characters _ . and - without spaces or ' + 'special characters. Example: My_Library_2000'), validators=[validators.RegexValidator(r'^[A-Za-z0-9_.-]+$')]) def clean_name(self): diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index 7aa1e032d..f18b75150 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -13,20 +13,21 @@ from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups -from plinth.package import Packages +from plinth.package import Package, Packages from plinth.utils import format_lazy from . import manifest _mods = [ + Package('minetest-mod-3d-armor') | Package('minetest-mod-player-3d-armor'), 'minetest-mod-character-creator', 'minetest-mod-craftguide', 'minetest-mod-infinite-chest', 'minetest-mod-lucky-block', 'minetest-mod-maidroid', 'minetest-mod-mesecons', 'minetest-mod-moreblocks', 'minetest-mod-moreores', 'minetest-mod-nether', - 'minetest-mod-pipeworks', 'minetest-mod-player-3d-armor', - 'minetest-mod-protector', 'minetest-mod-quartz', 'minetest-mod-skyblock', - 'minetest-mod-throwing', 'minetest-mod-unified-inventory', - 'minetest-mod-unifieddyes', 'minetest-mod-worldedit' + 'minetest-mod-pipeworks', 'minetest-mod-protector', 'minetest-mod-quartz', + 'minetest-mod-skyblock', 'minetest-mod-throwing', + 'minetest-mod-unified-inventory', 'minetest-mod-unifieddyes', + 'minetest-mod-worldedit' ] _description = [ diff --git a/plinth/modules/security/__init__.py b/plinth/modules/security/__init__.py index c095376b5..db834c7d0 100644 --- a/plinth/modules/security/__init__.py +++ b/plinth/modules/security/__init__.py @@ -132,7 +132,7 @@ def get_apps_report(): components = app_.get_components_of_type(Packages) packages = [] for component in components: - packages += component.packages + packages += component.possible_packages if not packages: continue # app has no managed packages diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py index 42b579b6a..634493de0 100644 --- a/plinth/modules/upgrades/__init__.py +++ b/plinth/modules/upgrades/__init__.py @@ -62,7 +62,7 @@ class UpgradesApp(app_module.App): app_id = 'upgrades' - _version = 11 + _version = 12 can_be_disabled = False diff --git a/plinth/package.py b/plinth/package.py index c7f99d211..bb916e017 100644 --- a/plinth/package.py +++ b/plinth/package.py @@ -17,12 +17,84 @@ from django.utils.translation import gettext as _ from django.utils.translation import gettext_lazy from plinth import actions, app -from plinth.errors import ActionError +from plinth.errors import ActionError, MissingPackageError from plinth.utils import format_lazy logger = logging.getLogger(__name__) +class PackageExpression: + + def possible(self) -> list[str]: + """Return the list of possible packages before resolving.""" + raise NotImplementedError + + def actual(self) -> str: + """Return the name of the package to install. + + TODO: Also return version and suite to install from. + """ + raise NotImplementedError + + +class Package(PackageExpression): + + def __init__( + self, + name, + optional: bool = False, + version: Optional[str] = None, # ">=1.0,<2.0" + distribution: Optional[str] = None, # Debian, Ubuntu + suite: Optional[str] = None, # stable, testing + codename: Optional[str] = None, # bullseye-backports + architecture: Optional[str] = None): # arm64 + self.name = name + self.optional = optional + self.version = version + self.distribution = distribution + self.suite = suite + self.codename = codename + self.architecture = architecture + + def __repr__(self): + return self.name + + def __or__(self, other): + return PackageOr(self, other) + + def possible(self) -> list[str]: + return [self.name] + + def actual(self) -> str: + cache = apt.Cache() + if self.name in cache: + # TODO: Also return version and suite to install from + return self.name + + raise MissingPackageError(self.name) + + +class PackageOr(PackageExpression): + """Specify that one of the two packages will be installed.""" + + def __init__(self, package1: PackageExpression, + package2: PackageExpression): + self.package1 = package1 + self.package2 = package2 + + def __repr__(self): + return self.package1.name + ' | ' + self.package2.name + + def possible(self) -> list[str]: + return self.package1.possible() + self.package2.possible() + + def actual(self) -> str: + try: + return self.package1.actual() + except MissingPackageError: + return self.package2.actual() + + class Packages(app.FollowerComponent): """Component to manage the packages of an app. @@ -35,7 +107,8 @@ class Packages(app.FollowerComponent): IGNORE = 'ignore' # Proceed as if there are no conflicts REMOVE = 'remove' # Remove the packages before installing the app - def __init__(self, component_id: str, packages: list[str], + def __init__(self, component_id: str, + packages: list[Union[str, PackageExpression]], skip_recommends: bool = False, conflicts: Optional[list[str]] = None, conflicts_action: Optional[ConflictsAction] = None): @@ -60,29 +133,63 @@ class Packages(app.FollowerComponent): super().__init__(component_id) self.component_id = component_id - self._packages = packages + self._packages: list[PackageExpression] = [] + for package in packages: + if isinstance(package, str): + self._packages.append(Package(package)) + else: + self._packages.append(package) + self.skip_recommends = skip_recommends self.conflicts = conflicts self.conflicts_action = conflicts_action @property - def packages(self) -> list[str]: - """Return the list of packages managed by this component.""" + def package_expressions(self) -> list[PackageExpression]: + """Return the list of managed packages as expressions.""" return self._packages + @property + def possible_packages(self) -> list[str]: + """Return the list of possible packages before resolving.""" + packages: list[str] = [] + for package_expression in self.package_expressions: + packages.extend(package_expression.possible()) + + return packages + + def get_actual_packages(self) -> list[str]: + """Return the computed list of packages to install. + + Raise MissingPackageError if a required package is not available. + """ + return [ + package_expression.actual() + for package_expression in self.package_expressions + ] + def setup(self, old_version): """Install the packages.""" # TODO: Drop the need for setup helper. module_name = self.app.__module__ module = sys.modules[module_name] helper = module.setup_helper - helper.install(self.packages, skip_recommends=self.skip_recommends) + helper.install(self.get_actual_packages(), + skip_recommends=self.skip_recommends) def diagnose(self): """Run diagnostics and return results.""" results = super().diagnose() cache = apt.Cache() - for package_name in self.packages: + for package_expression in self.package_expressions: + try: + package_name = package_expression.actual() + except MissingPackageError: + message = _('Package {expression} is not available for ' + 'install').format(expression=package_expression) + results.append([message, 'failed']) + continue + result = 'warning' latest_version = '?' if package_name in cache: @@ -106,7 +213,7 @@ class Packages(app.FollowerComponent): return packages_installed(self.conflicts) - def has_unavailable_packages(self): + def has_unavailable_packages(self) -> Optional[bool]: """Return whether any of the packages are not available. Returns True if one or more of the packages is not available in the @@ -121,9 +228,12 @@ class Packages(app.FollowerComponent): return None # List of all packages from all Package components - cache = apt.Cache() - return any(package for package in self.packages - if package not in cache) + try: + self.get_actual_packages() + except MissingPackageError: + return True + + return False class PackageException(Exception): diff --git a/plinth/setup.py b/plinth/setup.py index ca9da25da..ae45399e5 100644 --- a/plinth/setup.py +++ b/plinth/setup.py @@ -166,8 +166,8 @@ def list_dependencies(app_ids=None, essential=False): continue for component in app.get_components_of_type(Packages): - for package_name in component.packages: - print(package_name) + for package_expression in component.package_expressions: + print(package_expression) def run_setup_in_background(): @@ -500,9 +500,9 @@ class ForceUpgrader(): continue for component in app.get_components_of_type(Packages): - upgradable_packages.update(component.packages) + upgradable_packages.update(component.possible_packages) - for managed_package in component.packages: + for managed_package in component.possible_packages: package_apps_map[managed_package].add(app.app_id) return upgradable_packages.intersection( diff --git a/plinth/templates/index.html b/plinth/templates/index.html index ea066ef07..a9441b2e4 100644 --- a/plinth/templates/index.html +++ b/plinth/templates/index.html @@ -131,14 +131,14 @@

{% trans "Wiki" %}

+

+ {% trans "Source Code" %} +

+

+ + {%trans "Forum" %} + +

{%trans "IRC Chatroom" %} diff --git a/plinth/tests/test_package.py b/plinth/tests/test_package.py index c67d4c25f..96f364096 100644 --- a/plinth/tests/test_package.py +++ b/plinth/tests/test_package.py @@ -3,22 +3,58 @@ Test module for package module. """ +import unittest from unittest.mock import Mock, call, patch import pytest from plinth.app import App -from plinth.errors import ActionError -from plinth.package import Packages, packages_installed, remove +from plinth.errors import ActionError, MissingPackageError +from plinth.package import Package, Packages, packages_installed, remove setup_helper = Mock() +class TestPackageExpressions(unittest.TestCase): + + def test_package(self): + """Test resolving package names.""" + package = Package('python3') + assert package.possible() == ['python3'] + assert package.actual() == 'python3' + + package = Package('unknown-package') + assert package.possible() == ['unknown-package'] + self.assertRaises(MissingPackageError, package.actual) + + def test_package_or_expression(self): + """Test resolving package OR expressions.""" + expression = Package('python3') | Package('unknown-package') + assert expression.possible() == ['python3', 'unknown-package'] + assert expression.actual() == 'python3' + + expression = Package('unknown-package') | Package('python3') + assert expression.possible() == ['unknown-package', 'python3'] + assert expression.actual() == 'python3' + + # When both packages are available, prefer the first. + expression = Package('bash') | Package('dash') + assert expression.possible() == ['bash', 'dash'] + assert expression.actual() == 'bash' + + expression = Package('unknown-package') | Package( + 'another-unknown-package') + assert expression.possible() == [ + 'unknown-package', 'another-unknown-package' + ] + self.assertRaises(MissingPackageError, expression.actual) + + def test_packages_init(): """Test initialization of packages component.""" component = Packages('test-component', ['foo', 'bar']) + assert component.possible_packages == ['foo', 'bar'] assert component.component_id == 'test-component' - assert component.packages == ['foo', 'bar'] assert not component.skip_recommends assert component.conflicts is None assert component.conflicts_action is None @@ -29,12 +65,27 @@ def test_packages_init(): component = Packages('test-component', [], skip_recommends=True, conflicts=['conflict1', 'conflict2'], conflicts_action=Packages.ConflictsAction.IGNORE) - assert component.packages == [] + assert component.possible_packages == [] assert component.skip_recommends assert component.conflicts == ['conflict1', 'conflict2'] assert component.conflicts_action == Packages.ConflictsAction.IGNORE +def test_packages_get_actual_packages(): + """Test resolving of package expressions to actual packages.""" + component = Packages('test-component', ['python3']) + assert component.get_actual_packages() == ['python3'] + + component = Packages('test-component', + [Package('unknown-package') | Package('python3')]) + assert component.get_actual_packages() == ['python3'] + + component = Packages('test-component', [], skip_recommends=True, + conflicts=['conflict1', 'conflict2'], + conflicts_action=Packages.ConflictsAction.IGNORE) + assert component.get_actual_packages() == [] + + def test_packages_setup(): """Test setting up packages component.""" @@ -42,22 +93,31 @@ def test_packages_setup(): """Test app""" app_id = 'test-app' - component = Packages('test-component', ['foo1', 'bar1']) + component = Packages('test-component', ['python3', 'bash']) app = TestApp() app.add(component) setup_helper.reset_mock() app.setup(old_version=3) setup_helper.install.assert_has_calls( - [call(['foo1', 'bar1'], skip_recommends=False)]) + [call(['python3', 'bash'], skip_recommends=False)]) - component = Packages('test-component', ['foo2', 'bar2'], + component = Packages('test-component', ['bash', 'perl'], skip_recommends=True) app = TestApp() app.add(component) setup_helper.reset_mock() app.setup(old_version=3) setup_helper.install.assert_has_calls( - [call(['foo2', 'bar2'], skip_recommends=True)]) + [call(['bash', 'perl'], skip_recommends=True)]) + + component = Packages('test-component', + [Package('python3') | Package('unknown-package')]) + app = TestApp() + app.add(component) + setup_helper.reset_mock() + app.setup(old_version=3) + setup_helper.install.assert_has_calls( + [call(['python3'], skip_recommends=False)]) @patch('apt.Cache') @@ -66,16 +126,24 @@ def test_diagnose(cache): cache.return_value = { 'package2': Mock(candidate=Mock(version='2.0', is_installed=True)), 'package3': Mock(candidate=Mock(version='3.0', is_installed=False)), + 'package7': Mock(candidate=Mock(version='4.0', is_installed=True)), } - component = Packages('test-component', - ['package1', 'package2', 'package3']) + component = Packages('test-component', [ + 'package1', 'package2', 'package3', + Package('package4') | Package('package5'), + Package('package6') | Package('package7') + ]) results = component.diagnose() - assert '(?)' in results[0][0] - assert results[0][1] == 'warning' + assert 'not available for install' in results[0][0] + assert results[0][1] == 'failed' assert '(2.0)' in results[1][0] assert results[1][1] == 'passed' assert '(3.0)' in results[2][0] assert results[2][1] == 'warning' + assert 'not available for install' in results[3][0] + assert results[3][1] == 'failed' + assert '(4.0)' in results[4][0] + assert results[4][1] == 'passed' @patch('plinth.package.packages_installed')