From 7e9070e418650f513e96339f552096d67dcb5fa9 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 29 Nov 2025 13:08:12 -0500 Subject: [PATCH 01/25] homeassistant: Fix spelling in tests Tests: - pytest runs the expected tests for Home Assistant. Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/homeassistant/tests/test_functional.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plinth/modules/homeassistant/tests/test_functional.py b/plinth/modules/homeassistant/tests/test_functional.py index 97c42d69d..3555fe17c 100644 --- a/plinth/modules/homeassistant/tests/test_functional.py +++ b/plinth/modules/homeassistant/tests/test_functional.py @@ -8,7 +8,7 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.homeassistant] -class TestHomeAssitantApp(functional.BaseAppTests): +class TestHomeAssistantApp(functional.BaseAppTests): """Basic tests for Home Assistant app.""" app_name = 'homeassistant' has_service = True From 0d30193240950befaeaaef1f08f095b79d5248f3 Mon Sep 17 00:00:00 2001 From: OwlGale Date: Mon, 1 Dec 2025 11:59:20 +0100 Subject: [PATCH 02/25] Translated using Weblate (Russian) Currently translated at 100.0% (1875 of 1875 strings) --- plinth/locale/ru/LC_MESSAGES/django.po | 112 +++++++++++++------------ 1 file changed, 57 insertions(+), 55 deletions(-) diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index a397f513f..238f8e9aa 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -8,16 +8,17 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-25 01:21+0000\n" -"PO-Revision-Date: 2025-11-21 02:51+0000\n" -"Last-Translator: Roman Akimov \n" +"PO-Revision-Date: 2025-12-01 11:00+0000\n" +"Last-Translator: OwlGale \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=" +"(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? " +"1 : 2);\n" "X-Generator: Weblate 5.15-dev\n" #: plinth/config.py:103 @@ -107,7 +108,7 @@ msgstr "Использовать языковые настройки брауз #: plinth/menu.py:116 plinth/templates/base.html:120 msgid "Home" -msgstr "Домой" +msgstr "Главная" #: plinth/menu.py:117 plinth/templates/base.html:129 msgid "Apps" @@ -2640,7 +2641,7 @@ msgstr "Просмотр и редактирование приложений Wi #: plinth/modules/featherwiki/__init__.py:59 #: plinth/modules/featherwiki/manifest.py:9 msgid "Feather Wiki" -msgstr "Перо Вики" +msgstr "Feather Wiki" #: plinth/modules/featherwiki/forms.py:13 plinth/modules/tiddlywiki/forms.py:13 msgid "Wiki files cannot be named \"index.html\"." @@ -2684,7 +2685,7 @@ msgstr "Загрузите существующий файл Feather Wiki с э #: plinth/modules/mediawiki/manifest.py:25 #: plinth/modules/tiddlywiki/manifest.py:19 msgid "Wiki" -msgstr "Wiki" +msgstr "Вики" #: plinth/modules/featherwiki/manifest.py:18 #: plinth/modules/infinoted/manifest.py:46 @@ -3288,7 +3289,7 @@ msgstr "Руководство" #: plinth/modules/help/views.py:91 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" -msgstr "Получить поддержку" +msgstr "Получить помощь" #: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 @@ -3303,7 +3304,7 @@ msgstr "Отправить отзыв" #: plinth/modules/help/views.py:74 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" -msgstr "Помощь проекту" +msgstr "Помочь проекту" #: plinth/modules/help/__init__.py:53 plinth/templates/base.html:216 #: plinth/templates/base.html:219 plinth/templates/help-menu.html:46 @@ -3327,13 +3328,13 @@ msgstr "Вы используете %(os_release)s и %(box_name)s версии msgid "" "There is a new %(box_name)s version available." -msgstr "Доступна новая версия %(box_name)s." +msgstr "Доступна новая версия %(box_name)s." #: plinth/modules/help/templates/help_about.html:40 #: plinth/modules/upgrades/templates/upgrades_configure.html:42 #, python-format msgid "%(box_name)s is up to date." -msgstr "%(box_name)s в актуальном состоянии." +msgstr "Установлены все последние обновления %(box_name)s." #: plinth/modules/help/templates/help_about.html:49 #, python-format @@ -3346,14 +3347,14 @@ msgid "" "and a Tor relay, on a device that can replace your Wi-Fi router, so that " "your data stays with you." msgstr "" -"%(box_name)s - это проект сообщества для разработки, дизайна и поощрения " -"личных серверов под управлением свободного программного обеспечения для " -"частных, личных сообщений. Это сетевое устройство, предназначенное разрешить " -"взаимодействие с остальной частью Интернета в условиях защиты " -"конфиденциальности и безопасности данных. Он содержит различные приложения, " -"такие как блог, вики, веб-сайт, социальную сеть, электронную почту, Web-" -"прокси и сервер Tor, на устройстве, которое может заменить ваш маршрутизатор " -"Wi-Fi, так что ваши данные остаются с вами." +"%(box_name)s это общественный проект для разработки, проектирования и " +"продвижения персональных серверов работающих на свободном программном " +"обеспечении для частных, личных коммуникаций. Это сетевое устройство " +"предназначено для взаимодействия с остальной частью Интернета при условии " +"обеспечения конфиденциальности и безопасности данных. Оно позволяет " +"размещать такие веб-приложения, как блог, вики, веб-сайт, социальную сеть, " +"электронную почту, веб-прокси и узел сети Tor, на устройстве, которое может " +"заменить ваш Wi-Fi роутер, чтобы ваши данные оставались с вами." #: plinth/modules/help/templates/help_about.html:62 msgid "" @@ -3364,12 +3365,13 @@ msgid "" "giving back power to the users over their networks and machines, we are " "returning the Internet to its intended peer-to-peer architecture." msgstr "" -"Мы живем в мире, сетями владеют те, с кем у нас не всегда общие интересы. " -"Путем создания программного обеспечения, которое не полагается на " -"центральную службу, мы можем восстановить контроль и конфиденциальность. " -"Сохраняя наши данные в наших домах, мы получаем полезную правовую защиту над " -"ними. Давая обратно власть пользователям в их сети и машины, мы возвращаемся " -"к его предполагаемую архитектуру Интернета peer-to-peer." +"Мы живем в мире, где использование сети определяется теми, кто зачастую не " +"действует в наших интересах. Разрабатывая программное обеспечение, которое " +"не полагается на централизованный сервис, мы можем вернуть контроль и " +"конфиденциальность. Сохраняя наши данные у себя дома, мы повышаем правовую " +"защищенность над ними. Давая пользователям власть над их сетями и " +"устройствами, мы возвращаем Интернет к его одноранговой архитектуре, каким " +"он был задуман." #: plinth/modules/help/templates/help_about.html:75 #, python-format @@ -3379,7 +3381,7 @@ msgid "" "package." msgstr "" "Существует ряд проектов, которые работают в сторону реализации будущего " -"распределенных служб, %(box_name)s стремится объединить их в удобном пакете." +"распределенных веб-сервисов, %(box_name)s стремится объединить их." #: plinth/modules/help/templates/help_about.html:83 #, python-format @@ -3401,7 +3403,7 @@ msgstr "" #: plinth/modules/help/templates/help_about.html:97 msgid "Learn" -msgstr "Узнать" +msgstr "Освоить" #: plinth/modules/help/templates/help_about.html:116 #: plinth/templates/toolbar.html:19 @@ -3410,7 +3412,7 @@ msgstr "Пожертвовать" #: plinth/modules/help/templates/help_about.html:119 msgid "Join project" -msgstr "Присоединяйтесь к проекту" +msgstr "Присоединиться к проекту" #: plinth/modules/help/templates/help_about.html:123 msgid "Translate" @@ -5227,7 +5229,7 @@ msgstr "" #: plinth/modules/names/templates/names.html:152 plinth/templates/setup.html:87 msgid "Install" -msgstr "Установка" +msgstr "Установить" #: plinth/modules/names/templates/names.html:162 msgid "Error retrieving status:" @@ -7319,9 +7321,8 @@ msgid "" "When enabled, RSS-Bridge can be accessed by any " "user belonging to the feed-reader group." msgstr "" -"Когда эта функция включена, доступ к RSS-мостику может получить любой пользователь, входящий в группу читателей " -"фидов." +"Когда эта функция включена, доступ к RSS-Bridge может получить любой пользователь, входящий в группу читателей фидов." #: plinth/modules/rssbridge/__init__.py:28 #, python-brace-format @@ -7330,10 +7331,10 @@ msgid "" "href=\"{nextcloud_url}\">Nextcloud News to follow various websites. When " "adding a feed, enable authentication and use your {box_name} credentials." msgstr "" -"Вы можете использовать RSS-мост с Miniflux or " -"Nextcloud News следить за различными веб-" -"сайтами. При добавлении фида включите аутентификацию и используйте свои " -"учетные данные от {box_name}." +"Вы можете использовать RSS-Bridge с Miniflux " +"или Nextcloud News, чтобы следить за " +"различными веб-сайтами. При добавлении фида включите аутентификацию и " +"используйте свои учетные данные от {box_name}." #: plinth/modules/rssbridge/__init__.py:49 msgid "Read and subscribe to news feeds" @@ -7342,7 +7343,7 @@ msgstr "Чтение и подписка на ленты новостей" #: plinth/modules/rssbridge/__init__.py:52 #: plinth/modules/rssbridge/manifest.py:7 msgid "RSS-Bridge" -msgstr "RSS-мост" +msgstr "RSS-Bridge" #: plinth/modules/rssbridge/forms.py:12 plinth/modules/searx/forms.py:17 msgid "Allow Public Access" @@ -7799,7 +7800,7 @@ msgstr "" #: plinth/modules/shadowsocks/__init__.py:50 msgid "Shadowsocks Client" -msgstr "Клиент Shadowsocks" +msgstr "Shadowsocks Клиент" #: plinth/modules/shadowsocks/forms.py:25 msgid "Server hostname or IP address" @@ -7846,7 +7847,7 @@ msgstr "" #: plinth/modules/shadowsocksserver/__init__.py:47 msgid "Shadowsocks Server" -msgstr "Сервер Shadowsocks" +msgstr "Shadowsocks Сервер" #: plinth/modules/shadowsocksserver/forms.py:10 #: plinth/modules/shadowsocksserver/forms.py:11 @@ -8276,14 +8277,14 @@ msgid "" "administration tasks, copy files or run other services using such " "connections." msgstr "" -"Secure Shell сервер использует протокол безопасной оболочки на прием " -"подключений с удаленных компьютеров. Уполномоченный удаленный компьютер " -"может выполнять задачи администрирования, копировать файлы или запускать " -"другие службы с использованием таких соединений." +"SSH-сервер использует протокол безопасной оболочки на прием подключений с " +"удаленных компьютеров. Уполномоченный удаленный компьютер может выполнять " +"задачи администрирования, копировать файлы или запускать другие службы с " +"использованием таких соединений." #: plinth/modules/ssh/__init__.py:42 msgid "Secure Shell Server" -msgstr "Сервер защищенной оболочки" +msgstr "SSH-сервер" #: plinth/modules/ssh/__init__.py:75 msgid "Remotely login using Secure Shell (SSH)" @@ -8365,7 +8366,7 @@ msgstr "Перейдите к входу в систему" #: plinth/modules/sso/templates/login.html:23 msgid "Login" -msgstr "Логин" +msgstr "Войти" #: plinth/modules/sso/views.py:86 msgid "Logged out successfully." @@ -9085,7 +9086,7 @@ msgstr "" #: plinth/modules/upgrades/__init__.py:146 #: plinth/modules/upgrades/__init__.py:309 msgid "Software Update" -msgstr "Обновление программного обеспечения" +msgstr "Обновление ПО" #: plinth/modules/upgrades/__init__.py:131 msgid "FreedomBox Updated" @@ -9282,7 +9283,7 @@ msgstr "Перейти к обновлению дистрибутива" #: plinth/templates/notifications.html:58 #: plinth/templates/operation-notification.html:23 msgid "Dismiss" -msgstr "Отклонить" +msgstr "Закрыть" #: plinth/modules/upgrades/templates/upgrades-dist-upgrade.html:15 #, python-format @@ -9585,8 +9586,8 @@ msgstr "Имя пользователя уже занято." msgid "" "Optional. Used to send emails to reset password and important notifications." msgstr "" -"Необязательно. Используется для отправки электронных писем для сброса пароля " -"и важных уведомлений." +"Необязательное поле. Используется для отправки электронных писем для сброса " +"пароля и важных уведомлений." #: plinth/modules/users/forms.py:107 msgid "" @@ -9610,7 +9611,8 @@ msgstr "Введите действительное имя пользовате msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -"Требуется. 150 символов или меньше. Только английские буквы, цифры и @/./-/_." +"Поле обязательно для заполнения. 150 символов или меньше. Только английские " +"буквы, цифры и @/./-/_." #: plinth/modules/users/forms.py:141 msgid "Authorization Password" @@ -9796,8 +9798,8 @@ msgid "" "Use the change password form to " "change the password." msgstr "" -"Для смены пароля используйте форму изменить пароль ." +"Для смены пароля используйте форму изменить пароль." #: plinth/modules/users/templates/users_update.html:37 #: plinth/templates/language-selection.html:17 @@ -10554,7 +10556,7 @@ msgstr "" #: plinth/templates/base.html:117 msgid " Home" -msgstr " Домой" +msgstr " Главная" #: plinth/templates/base.html:125 msgid " Apps" @@ -10687,7 +10689,7 @@ msgstr "Уведомления" #: plinth/templates/notifications.html:18 #, python-format msgid "%(time_since)s ago" -msgstr "%(time_since)s тому назад" +msgstr "%(time_since)s назад" #: plinth/templates/port-forwarding-info.html:8 msgid "Port Forwarding" @@ -10820,7 +10822,7 @@ msgstr "" #: plinth/views.py:89 msgid "Here" -msgstr "Вот здесь" +msgstr "Здесь" #: plinth/views.py:431 msgid "Setting unchanged" From 6ce4df4350a0e11311c56e0aeb5475795f1468e3 Mon Sep 17 00:00:00 2001 From: kosagi Date: Sun, 30 Nov 2025 13:01:42 +0100 Subject: [PATCH 03/25] Translated using Weblate (Catalan) Currently translated at 44.4% (833 of 1875 strings) --- plinth/locale/ca/LC_MESSAGES/django.po | 470 ++++++++++++++++++------- 1 file changed, 338 insertions(+), 132 deletions(-) diff --git a/plinth/locale/ca/LC_MESSAGES/django.po b/plinth/locale/ca/LC_MESSAGES/django.po index 085a39e50..9a27495fb 100644 --- a/plinth/locale/ca/LC_MESSAGES/django.po +++ b/plinth/locale/ca/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-25 01:21+0000\n" -"PO-Revision-Date: 2025-06-25 22:04+0000\n" +"PO-Revision-Date: 2025-12-01 11:00+0000\n" "Last-Translator: kosagi \n" "Language-Team: Catalan \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.15-dev\n" #: plinth/config.py:103 #, python-brace-format @@ -1683,6 +1683,8 @@ msgid "" "This app also shows the logs for {box_name} " "services." msgstr "" +"Aquesta aplicació també mostra els registre dels " +"serveis de {box_name}." #: plinth/modules/diagnostics/__init__.py:60 #: plinth/modules/diagnostics/__init__.py:255 @@ -1839,31 +1841,31 @@ msgstr "Resultats" #: plinth/modules/diagnostics/templates/diagnostics_full.html:53 #, python-format msgid "%(number)s passed" -msgstr "" +msgstr "%(number)s superats" #: plinth/modules/diagnostics/templates/diagnostics_full.html:57 #, python-format msgid "%(number)s failed" -msgstr "" +msgstr "%(number)s fallats" #: plinth/modules/diagnostics/templates/diagnostics_full.html:61 #, python-format msgid "%(number)s warnings" -msgstr "" +msgstr "%(number)s amb avisos" #: plinth/modules/diagnostics/templates/diagnostics_full.html:65 #, python-format msgid "%(number)s errors" -msgstr "" +msgstr "%(number)s errors" #: plinth/modules/diagnostics/templates/diagnostics_full.html:69 #, python-format msgid "%(number)s skipped" -msgstr "" +msgstr "%(number)s saltats" #: plinth/modules/diagnostics/templates/diagnostics_full.html:111 msgid "Running..." -msgstr "" +msgstr "Executant…" #: plinth/modules/diagnostics/templates/diagnostics_results.html:11 msgid "Test" @@ -2687,7 +2689,7 @@ msgstr "Feather Wiki" #: plinth/modules/featherwiki/forms.py:13 plinth/modules/tiddlywiki/forms.py:13 msgid "Wiki files cannot be named \"index.html\"." -msgstr "" +msgstr "Els fitxers de la Wiki no es poden anomenar \"index.html\"." #: plinth/modules/featherwiki/forms.py:20 plinth/modules/tiddlywiki/forms.py:20 msgid "Name of the wiki file, with file extension \".html\"" @@ -3682,17 +3684,17 @@ msgstr "" #: plinth/modules/help/views.py:27 msgid "Documentation and FAQ" -msgstr "" +msgstr "Documentació i FAQs" #: plinth/modules/help/views.py:96 #, python-brace-format msgid "About {box_name}" -msgstr "" +msgstr "Sobre {box_name}" #: plinth/modules/help/views.py:133 #, python-brace-format msgid "{box_name} Manual" -msgstr "" +msgstr "Manual de {box_name}" #: plinth/modules/homeassistant/__init__.py:31 msgid "" @@ -3701,6 +3703,10 @@ msgid "" "alarms, presence sensors, door bells, thermostats, irrigation timers, energy " "monitors, etc." msgstr "" +"Home Assistant és un centre d’automatització de la llar amb èmfasi en el " +"control local i la privadesa. S’integra amb milers de dispositius, incloent-" +"hi bombetes intel·ligents, alarmes, sensors de presència, timbres, " +"termòstats, temporitzadors de reg, monitors d’energia, etc." #: plinth/modules/homeassistant/__init__.py:35 msgid "" @@ -3709,6 +3715,10 @@ msgid "" "requires additional hardware such as a ZigBee USB dongle. You need to re-run " "setup if such hardware is added or removed." msgstr "" +"Home Assistant pot detectar, configurar i utilitzar diversos dispositius a " +"la xarxa local. Per a dispositius que utilitzen altres protocols com ZigBee, " +"normalment requereix maquinari addicional com un dongle USB ZigBee. Heu de " +"tornar a executar la configuració si s’afegeix o s’elimina aquest maquinari." #: plinth/modules/homeassistant/__init__.py:39 msgid "" @@ -3716,6 +3726,9 @@ msgid "" "An administrator account is created at this time. Home Assistant maintains " "its own user accounts." msgstr "" +"La interfície web de Home Assistant s’ha de configurar poc després d’instal·" +"lar l’aplicació. En aquest moment es crea un compte d’administrador. Home " +"Assistant manté els seus propis comptes d’usuari." #: plinth/modules/homeassistant/__init__.py:43 #, python-brace-format @@ -3725,16 +3738,21 @@ msgid "" "reviews are done by the upstream project and not by Debian/{box_name}. " "Updates are performed following an independent cycle." msgstr "" +"Tingueu en compte que Home Assistant s’instal·la i s’executa dins d’un " +"contenidor proporcionat pel projecte Home Assistant. Les revisions de " +"seguretat, qualitat, privadesa i aspectes legals les fa el projecte original " +"i no Debian/{box_name}. Les actualitzacions es realitzen seguint un cicle " +"independent." #: plinth/modules/homeassistant/__init__.py:48 msgid "This app is experimental." -msgstr "" +msgstr "Aquesta app és experimental." #: plinth/modules/homeassistant/__init__.py:64 #: plinth/modules/homeassistant/manifest.py:12 #: plinth/modules/homeassistant/manifest.py:20 msgid "Home Assistant" -msgstr "" +msgstr "Home Assistant" #: plinth/modules/homeassistant/manifest.py:62 #, fuzzy @@ -3744,7 +3762,7 @@ msgstr "Automàtic" #: plinth/modules/homeassistant/manifest.py:63 msgid "IoT" -msgstr "" +msgstr "Internet de les coses" #: plinth/modules/homeassistant/manifest.py:64 #: plinth/modules/networks/manifest.py:8 @@ -3753,19 +3771,20 @@ msgstr "" #: plinth/modules/networks/templates/connections_fields_wifi.html:15 #: plinth/modules/networks/views.py:102 plinth/network.py:29 msgid "Wi-Fi" -msgstr "" +msgstr "WiFi" #: plinth/modules/homeassistant/manifest.py:65 msgid "ZigBee" -msgstr "" +msgstr "ZigBee" #: plinth/modules/homeassistant/manifest.py:66 +#, fuzzy msgid "Z-Wave" -msgstr "" +msgstr "Z-Wave" #: plinth/modules/homeassistant/manifest.py:67 msgid "Thread" -msgstr "" +msgstr "Fil" #: plinth/modules/homeassistant/templates/homeassistant.html:17 msgid "" @@ -3773,6 +3792,9 @@ msgid "" "URL path. Please select the domain on which Home Assistant will be " "available. Home Assistant will not be available on other domains." msgstr "" +"Home Assistant requereix un domini dedicat per funcionar i no pot treballar " +"en un camí d’URL. Seleccioneu el domini en què estarà disponible Home " +"Assistant. Home Assistant no estarà disponible en altres dominis." #: plinth/modules/homeassistant/templates/homeassistant.html:28 #, python-format @@ -3782,6 +3804,10 @@ msgid "" "href=\"%(names_url)s\">Names app and Dynamic DNS app for configuring subdomains." msgstr "" +"Es pot posar a disposició un domini separat per a Home Assistant configurant " +"un subdomini com ara homeassistant.mydomain.example. Consulteu l’aplicació " +"Noms i l’aplicació DNS Dinàmic per configurar subdominis." #: plinth/modules/homeassistant/templates/homeassistant.html:40 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:18 @@ -3789,7 +3815,7 @@ msgstr "" #: plinth/modules/snapshot/templates/snapshot.html:16 #: plinth/templates/app.html:60 msgid "Update setup" -msgstr "" +msgstr "Actualitza la configuració" #: plinth/modules/ikiwiki/__init__.py:20 msgid "" @@ -3797,6 +3823,9 @@ msgid "" "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" +"ikiwiki és una aplicació senzilla de wiki i blog. Admet diversos llenguatges " +"de marques lleugers, inclòs Markdown, i funcionalitats comunes de blogging " +"com comentaris i canals RSS." #: plinth/modules/ikiwiki/__init__.py:24 #, python-brace-format @@ -3806,6 +3835,10 @@ msgid "" "edit existing ones. In the User " "Configuration you can change these permissions or add new users." msgstr "" +"Només els usuaris de {box_name} del grup admin poden crear i " +"gestionar blogs i wikis, però qualsevol usuari del grup wiki " +"pot editar els existents. A la Configuració " +"d’usuaris podeu canviar aquests permisos o afegir nous usuaris." #: plinth/modules/ikiwiki/__init__.py:45 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" @@ -3813,85 +3846,88 @@ msgstr "ikiwiki" #: plinth/modules/ikiwiki/forms.py:17 msgid "Admin Account Name" -msgstr "" +msgstr "Nom del compte d'administrador" #: plinth/modules/ikiwiki/forms.py:19 msgid "Admin Account Password" -msgstr "" +msgstr "Contrasenya del compte d'administrador" #: plinth/modules/ikiwiki/manifest.py:15 #: plinth/modules/wordpress/manifest.py:26 msgid "Blog" -msgstr "" +msgstr "Bloc" #: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:12 msgid "Manage Wikis and Blogs" -msgstr "" +msgstr "Gestiona Wikis i Blogs" #: 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 "" +msgstr "Crea una Wiki o un Blog" #: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:25 msgid "No wikis or blogs available." -msgstr "" +msgstr "No hi ha wikis o blogs disponibles." #: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:31 #, python-format msgid "Go to site %(site)s" -msgstr "" +msgstr "Ves al lloc web %(site)s" #: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:38 #, python-format msgid "Delete site %(site)s" -msgstr "" +msgstr "Elimina el lloc web %(site)s" #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:12 #, python-format msgid "Delete Wiki or Blog %(name)s" -msgstr "" +msgstr "Elimina la Wiki o Blog %(name)s" #: 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 "" +"Aquesta acció eliminarà totes les publicacions, pàgines i comentaris, inclòs " +"l’historial de revisions. . Voleu eliminar aquest wiki o blog de manera " +"permanent?" #: plinth/modules/ikiwiki/views.py:69 #, python-brace-format msgid "Created wiki {name}." -msgstr "" +msgstr "S'ha creat la wiki {name}." #: plinth/modules/ikiwiki/views.py:72 #, python-brace-format msgid "Could not create wiki: {error}" -msgstr "" +msgstr "No s'ha pogut crear la wiki: {error}" #: plinth/modules/ikiwiki/views.py:79 #, python-brace-format msgid "Created blog {name}." -msgstr "" +msgstr "S'ha creat el blog {name}." #: plinth/modules/ikiwiki/views.py:82 #, python-brace-format msgid "Could not create blog: {error}" -msgstr "" +msgstr "No s'ha pogut crear el blog: {error}" #: plinth/modules/ikiwiki/views.py:98 #, python-brace-format msgid "{title} deleted." -msgstr "" +msgstr "S'ha eliminat {title}." #: plinth/modules/ikiwiki/views.py:102 #, python-brace-format msgid "Could not delete {title}: {error}" -msgstr "" +msgstr "No s'ha pogut eliminar {title}: {error}" #: plinth/modules/infinoted/__init__.py:20 msgid "infinoted is a server for Gobby, a collaborative text editor." -msgstr "" +msgstr "infinoted és un servidor per a Gobby, un editor de text col·laboratiu." #: plinth/modules/infinoted/__init__.py:22 #, python-brace-format @@ -3900,6 +3936,10 @@ msgid "" "client and install it. Then start Gobby and select \"Connect to Server\" and " "enter your {box_name}'s domain name." msgstr "" +"Per utilitzar-lo, descarregueu Gobby, el client d’escriptori, i instal·leu-lo. Després inicieu Gobby i " +"seleccioneu \"Connecta’t al servidor\" i introduïu el nom de domini del " +"vostre {box_name}." #: plinth/modules/infinoted/__init__.py:41 msgid "infinoted" @@ -3907,12 +3947,13 @@ msgstr "infinoted" #: plinth/modules/infinoted/manifest.py:10 #: plinth/modules/infinoted/manifest.py:46 +#, fuzzy msgid "Gobby" -msgstr "" +msgstr "Gobby" #: plinth/modules/infinoted/manifest.py:12 msgid "Gobby is a collaborative text editor" -msgstr "" +msgstr "Gobby és un editor de text col·laboratiu" #: plinth/modules/infinoted/manifest.py:15 #, python-brace-format @@ -3920,23 +3961,25 @@ msgid "" "Start Gobby and select \"Connect to Server\" and enter your {box_name}'s " "domain name." msgstr "" +"Inicieu Gobby i seleccioneu \"Connecta’t al servidor\" i introduïu el nom de " +"domini del vostre {box_name}." #: plinth/modules/infinoted/manifest.py:46 msgid "Collaborative editing" -msgstr "" +msgstr "Edició col·laborativa" #: plinth/modules/janus/__init__.py:23 msgid "Janus is a lightweight WebRTC server." -msgstr "" +msgstr "Janus és un servidor WebRTC lleuger." #: plinth/modules/janus/__init__.py:24 msgid "A simple video conference room is included." -msgstr "" +msgstr "S’inclou una sala de videoconferència senzilla." #: plinth/modules/janus/__init__.py:26 #, python-brace-format msgid "Coturn is required to use Janus." -msgstr "" +msgstr "Per utilitzar Janus es requereix Coturn." #: plinth/modules/janus/__init__.py:29 #: plinth/modules/matrixsynapse/__init__.py:38 @@ -3946,34 +3989,42 @@ msgid "" "only be installed if frequent feature updates is enabled in the Software Update app." msgstr "" +"Nota: Aquesta aplicació rep actualitzacions de " +"funcionalitats freqüents. Només es pot instal·lar si les actualitzacions de " +"funcionalitats freqüents estan activades a l’aplicació Actualització de programari." #: plinth/modules/janus/__init__.py:47 msgid "Janus" msgstr "Janus" #: plinth/modules/janus/manifest.py:7 +#, fuzzy msgid "Janus Video Room" -msgstr "" +msgstr "Janus Video Room" #: plinth/modules/janus/manifest.py:16 +#, fuzzy msgid "WebRTC" -msgstr "" +msgstr "WebRTC" #: plinth/modules/janus/manifest.py:16 msgid "Web conference" -msgstr "" +msgstr "Videoconferència" #: plinth/modules/janus/templates/janus_video_room.html:204 #: plinth/modules/jsxc/templates/jsxc_launch.html:117 #: plinth/templates/base.html:272 msgid "JavaScript license information" -msgstr "" +msgstr "Informació de la llicència de JavaScript" #: plinth/modules/jsxc/__init__.py:19 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" +"JSXC és un client web per a XMPP. Normalment s’utilitza amb un servidor XMPP " +"que s’executa localment." #: plinth/modules/jsxc/__init__.py:38 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" @@ -3981,11 +4032,12 @@ msgstr "JSXC" #: plinth/modules/jsxc/manifest.py:16 msgid "Web chat" -msgstr "" +msgstr "Xat web" #: plinth/modules/jsxc/manifest.py:16 plinth/modules/quassel/manifest.py:54 +#, fuzzy msgid "Client" -msgstr "" +msgstr "Client" #: plinth/modules/kiwix/__init__.py:21 msgid "" @@ -3993,6 +4045,10 @@ msgid "" "Wikipedia available without using the internet, but it is potentially " "suitable for all HTML content. Kiwix packages are in the ZIM file format." msgstr "" +"Kiwix és un lector fora de línia per a contingut web. És un programari " +"pensat per fer disponible la Wikipedia sense utilitzar internet, però " +"potencialment és adequat per a tot el contingut HTML. Els paquets de Kiwix " +"estan en format de fitxer ZIM." #: plinth/modules/kiwix/__init__.py:25 msgid "" @@ -4006,6 +4062,16 @@ msgid "" "
  • Magazines: Low-tech Magazine
  • \n" " " msgstr "" +"Kiwix pot allotjar diversos tipus de contingut:\n" +"
      \n" +"
    • Versions fora de línia de llocs web: projectes Wikimedia, " +"Stack Exchange
    • \n" +"
    • Contingut de vídeo: Khan Academy, TED Talks, Crash " +"Course
    • \n" +"
    • Materials educatius: PHET, TED Ed, Vikidia
    • \n" +"
    • eBooks: Project Gutenberg
    • \n" +"
    • Revistes: Low-tech Magazine
    • \n" +"
    " #: plinth/modules/kiwix/__init__.py:33 #: plinth/modules/kiwix/templates/kiwix-add-package.html:14 @@ -4015,10 +4081,14 @@ msgid "" "project or create your own." msgstr "" +"Podeu descarregar paquets de contingut del projecte " +"Kiwix o crear els vostres propis." #: plinth/modules/kiwix/__init__.py:53 msgid "Manage Kiwix content server" -msgstr "" +msgstr "Gestiona el servidor de contingut Kiwix" #: plinth/modules/kiwix/__init__.py:56 plinth/modules/kiwix/manifest.py:8 msgid "Kiwix" @@ -4026,7 +4096,7 @@ msgstr "Kiwix" #: plinth/modules/kiwix/forms.py:23 msgid "Content packages have to be in .zim format" -msgstr "" +msgstr "Els paquets de contingut han d'estar en format .zim" #: plinth/modules/kiwix/forms.py:25 #, python-brace-format @@ -4035,82 +4105,87 @@ msgid "" "{box_name}. If Kiwix fails to add the file, it will be deleted immediately " "to save disk space." msgstr "" +"Els fitxers ZIM pujats s’emmagatzemaran a {kiwix_home}/content al vostre " +"{box_name}. Si Kiwix no aconsegueix afegir el fitxer, s’eliminarà " +"immediatament per estalviar espai al disc." #: plinth/modules/kiwix/manifest.py:24 msgid "Offline reader" -msgstr "" +msgstr "Lector fora de línia" #: plinth/modules/kiwix/manifest.py:25 msgid "Archival" -msgstr "" +msgstr "Arxiu" #: plinth/modules/kiwix/manifest.py:26 #: plinth/modules/shadowsocks/manifest.py:19 #: plinth/modules/shadowsocksserver/manifest.py:18 #: plinth/modules/tor/manifest.py:60 plinth/modules/torproxy/manifest.py:57 msgid "Censorship resistance" -msgstr "" +msgstr "Resistent a la censura" #: plinth/modules/kiwix/manifest.py:27 msgid "Wikipedia" -msgstr "" +msgstr "Viquipèdia" #: plinth/modules/kiwix/templates/kiwix-add-package.html:29 #, python-format msgid "You have %(max_filesize)s of free disk space available." -msgstr "" +msgstr "Teniu %(max_filesize)s d’espai lliure al disc disponible." #: plinth/modules/kiwix/templates/kiwix-add-package.html:42 msgid "Upload ZIM file" -msgstr "" +msgstr "Penja un fitxer ZIM" #: plinth/modules/kiwix/templates/kiwix-delete-package.html:11 #, python-format msgid "Delete content package %(name)s" -msgstr "" +msgstr "Eliminar el paquet de contingut %(name)s" #: plinth/modules/kiwix/templates/kiwix-delete-package.html:17 msgid "" "Delete this package permanently? You may add it back later if you have a " "copy of the ZIM file." msgstr "" +"Eliminar aquest paquet de manera permanent? El podreu afegir de nou més " +"endavant si en teniu una còpia del fitxer ZIM." #: plinth/modules/kiwix/templates/kiwix.html:11 msgid "Manage Content Packages" -msgstr "" +msgstr "Gestiona els paquets de contingut" #: plinth/modules/kiwix/templates/kiwix.html:15 msgid "Add a content package" -msgstr "" +msgstr "Afegeix un paquet de contingut" #: plinth/modules/kiwix/templates/kiwix.html:17 msgid "Add Package" -msgstr "" +msgstr "Afegeix un paquet" #: plinth/modules/kiwix/templates/kiwix.html:24 msgid "No content packages available." -msgstr "" +msgstr "No hi ha paquets de contingut disponibles." #: plinth/modules/kiwix/templates/kiwix.html:37 #, python-format msgid "Delete package %(title)s" -msgstr "" +msgstr "Elimina el paquet %(title)s" #: plinth/modules/kiwix/views.py:49 msgid "Content package added." -msgstr "" +msgstr "Paquet de contingut afegit." #: plinth/modules/kiwix/views.py:54 msgid "Add a new content package" -msgstr "" +msgstr "Afegeix un nou paquet de contingut" #: plinth/modules/kiwix/views.py:76 msgid "Content package already exists." -msgstr "" +msgstr "Encara existeix un paquet de contingut." #: plinth/modules/kiwix/views.py:79 msgid "Failed to add content package." -msgstr "" +msgstr "No s'ha pogut afegir el paquet de contingut." #: plinth/modules/letsencrypt/__init__.py:27 #, python-brace-format @@ -4121,6 +4196,11 @@ msgid "" "domain. It does so by proving itself to be the owner of a domain to Let's " "Encrypt, a certificate authority (CA)." msgstr "" +"Un certificat digital permet als usuaris d’un servei web verificar la " +"identitat del servei i comunicar-se amb ell de manera segura. {box_name} pot " +"obtenir i configurar automàticament certificats digitals per a cada domini " +"disponible. Ho fa demostrant ser el propietari d’un domini a Let's Encrypt, " +"una autoritat de certificació (CA)." #: plinth/modules/letsencrypt/__init__.py:33 msgid "" @@ -4129,69 +4209,76 @@ msgid "" "read and agree with the Let's Encrypt Subscriber Agreement before using this service." msgstr "" +"Let's Encrypt és una autoritat de certificació gratuïta, automatitzada i " +"oberta, gestionada per al benefici del públic per l’Internet Security " +"Research Group (ISRG). Llegiu i accepteu el Contracte d’usuari de Let's Encrypt abans d’utilitzar aquest servei." #: plinth/modules/letsencrypt/__init__.py:60 +#, fuzzy msgid "Let's Encrypt" -msgstr "" +msgstr "Let's Encrypt" #: plinth/modules/letsencrypt/manifest.py:11 msgid "Certificates" -msgstr "" +msgstr "Certificats" #: plinth/modules/letsencrypt/manifest.py:11 +#, fuzzy msgid "HTTPS" -msgstr "" +msgstr "HTTPS" #: plinth/modules/letsencrypt/manifest.py:11 msgid "Web security" -msgstr "" +msgstr "Seguretat Web" #: plinth/modules/letsencrypt/templates/letsencrypt.html:25 msgid "Certificate Status" -msgstr "" +msgstr "Estat dels Certificats" #: plinth/modules/letsencrypt/templates/letsencrypt.html:26 msgid "Website Security" -msgstr "" +msgstr "Seguretat del Lloc Web" #: plinth/modules/letsencrypt/templates/letsencrypt.html:37 #, python-format msgid "Valid, expires on %(expiry_date)s" -msgstr "" +msgstr "Vàlid, expira el %(expiry_date)s" #: plinth/modules/letsencrypt/templates/letsencrypt.html:44 msgid "Revoked" -msgstr "" +msgstr "Revocat" #: plinth/modules/letsencrypt/templates/letsencrypt.html:48 #, python-format msgid "Expired on %(expiry_date)s" -msgstr "" +msgstr "Expirà el %(expiry_date)s" #: plinth/modules/letsencrypt/templates/letsencrypt.html:52 msgid "Invalid test certificate" -msgstr "" +msgstr "Certificat de prova invàlid" #: plinth/modules/letsencrypt/templates/letsencrypt.html:56 #, python-format msgid "Invalid (%(reason)s)" -msgstr "" +msgstr "Invàlid (%(reason)s)" #: plinth/modules/letsencrypt/templates/letsencrypt.html:63 msgid "No certificate" -msgstr "" +msgstr "No hi ha certificat" #: plinth/modules/letsencrypt/templates/letsencrypt.html:80 msgid "Re-obtain" -msgstr "" +msgstr "Torna'l a obtenir" #: plinth/modules/letsencrypt/templates/letsencrypt.html:93 msgid "Revoke" -msgstr "" +msgstr "Revocar" #: plinth/modules/letsencrypt/templates/letsencrypt.html:101 msgid "Obtain" -msgstr "" +msgstr "Obtenir" #: plinth/modules/letsencrypt/templates/letsencrypt.html:112 #, python-format @@ -4199,6 +4286,8 @@ msgid "" "No domains have been configured. Configure " "domains to be able to obtain certificates for them." msgstr "" +"No s’ha configurat cap domini. Configureu els " +"dominis per poder obtenir certificats per a ells." #: plinth/modules/letsencrypt/views.py:40 #, python-brace-format @@ -4206,33 +4295,35 @@ msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" +"Certificat revocat correctament per al domini {domain}. Això pot trigar uns " +"moments a fer efecte." #: plinth/modules/letsencrypt/views.py:46 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}" -msgstr "" +msgstr "No s’ha pogut revocar el certificat per al domini {domain}" #: plinth/modules/letsencrypt/views.py:59 #: plinth/modules/letsencrypt/views.py:77 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" -msgstr "" +msgstr "Certificat obtingut correctament per al domini {domain}" #: plinth/modules/letsencrypt/views.py:64 #: plinth/modules/letsencrypt/views.py:82 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}" -msgstr "" +msgstr "No s’ha pogut obtenir el certificat per al domini {domain}" #: plinth/modules/letsencrypt/views.py:95 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" -msgstr "" +msgstr "Certificat eliminat correctament per al domini {domain}" #: plinth/modules/letsencrypt/views.py:100 #, python-brace-format msgid "Failed to delete certificate for domain {domain}" -msgstr "" +msgstr "No s’ha pogut eliminar el certificat per al domini {domain}" #: plinth/modules/matrixsynapse/__init__.py:26 msgid "" @@ -4243,6 +4334,13 @@ msgid "" "not require phone numbers to work. Users on a given Matrix server can " "converse with users on all other Matrix servers via federation." msgstr "" +"Matrix és un nou " +"ecosistema per a missatgeria instantània i VoIP oberta i federada. Synapse " +"és un servidor que implementa el protocol Matrix. Proporciona grups de xat, " +"trucades d’àudio/vídeo, xifrat de punta a punta, sincronització de múltiples " +"dispositius i no requereix números de telèfon per funcionar. Els usuaris d’" +"un servidor Matrix poden conversar amb usuaris de tots els altres servidors " +"Matrix mitjançant federació." #: plinth/modules/matrixsynapse/__init__.py:34 #, python-brace-format @@ -4250,6 +4348,9 @@ msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" +"Matrix Synapse necessita un servidor STUN/TURN per a trucades d’àudio/vídeo. " +"Instal·leu l’aplicació Coturn o configureu un " +"servidor extern." #: plinth/modules/matrixsynapse/__init__.py:59 msgid "Matrix Synapse" @@ -4260,6 +4361,8 @@ msgid "" "Disabled. This could lead to adversaries registering many spam accounts on " "your server with automated scripts." msgstr "" +"Desactivat. Això podria permetre que adversaris registrin molts comptes de " +"correu brossa al vostre servidor amb scripts automatitzats." #: plinth/modules/matrixsynapse/forms.py:18 msgid "" @@ -4267,10 +4370,14 @@ msgid "" "will be created automatically. Pass this token to your potential new users. " "They will be asked for the token during registration. (recommended)" msgstr "" +"Exigeix que els usuaris que creen un nou compte utilitzin un token de " +"registre. Un token es crearà automàticament. Doneu aquest token als vostres " +"possibles nous usuaris. Se’ls demanarà el token durant el registre. " +"(recomanat)" #: plinth/modules/matrixsynapse/forms.py:27 msgid "Enable Public Registration" -msgstr "" +msgstr "Permet el Registre Públic" #: plinth/modules/matrixsynapse/forms.py:28 msgid "" @@ -4278,10 +4385,13 @@ msgid "" "a new account on your Matrix server. Disable this if you only want existing " "users to be able to use it." msgstr "" +"Activar el registre públic significa que qualsevol persona a Internet pot " +"registrar un nou compte al vostre servidor Matrix. Desactiveu-ho si només " +"voleu que els usuaris existents puguin utilitzar-lo." #: plinth/modules/matrixsynapse/forms.py:33 msgid "Verification method for registration" -msgstr "" +msgstr "Mètode de verificació per al registre" #: plinth/modules/matrixsynapse/forms.py:40 #, python-brace-format @@ -4290,23 +4400,28 @@ msgid "" "server for Matrix Synapse. Disable this if you want to use a different STUN/" "TURN server." msgstr "" +"Configura l’aplicació local coturn com a " +"servidor STUN/TURN per a Matrix Synapse. Desactiveu-ho si voleu utilitzar un " +"servidor STUN/TURN diferent." #: plinth/modules/matrixsynapse/manifest.py:14 +#, fuzzy msgid "Element" -msgstr "" +msgstr "Element" #: plinth/modules/matrixsynapse/manifest.py:48 +#, fuzzy msgid "FluffyChat" -msgstr "" +msgstr "FluffyChat" #: plinth/modules/matrixsynapse/manifest.py:101 #: plinth/modules/quassel/manifest.py:54 msgid "Chat room" -msgstr "" +msgstr "Sala de xat" #: plinth/modules/matrixsynapse/manifest.py:105 msgid "Matrix server" -msgstr "" +msgstr "Servidor de Matrix" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:18 msgid "" @@ -4314,12 +4429,19 @@ msgid "" "servers will be able to reach users on this server using this domain name. " "Matrix user IDs will look like @username:domainname." msgstr "" +"Cal configurar el servei Matrix per a un domini. Els usuaris d’altres " +"servidors Matrix podran contactar amb els usuaris d’aquest servidor " +"utilitzant aquest nom de domini. Els identificadors d’usuari de Matrix " +"tindran aquest aspecte: @username:domainname." #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:31 msgid "" "Warning! Changing the domain name after this step will " "require uninstalling and reinstalling the app which will wipe app's data." msgstr "" +"Avís! Canviar el nom de domini després d’aquest pas " +"requerirà desinstal·lar i reinstal·lar l’aplicació, cosa que esborrarà les " +"dades de l’aplicació." #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 #, python-format @@ -4327,6 +4449,8 @@ msgid "" "No domain(s) are available. Configure at " "least one domain to be able to use Matrix Synapse." msgstr "" +"No hi ha cap domini disponible. Configureu " +"almenys un domini per poder utilitzar Matrix Synapse." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:20 #, fuzzy, python-format @@ -4349,36 +4473,40 @@ msgid "" "New users can be registered from any client if public registration is " "enabled." msgstr "" +"Es poden registrar nous usuaris des de qualsevol client si el registre " +"públic està activat." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:35 msgid "" "New users must use one of the following tokens for verification during " "account registration:" msgstr "" +"Els nous usuaris han d’utilitzar un dels tokens següents per a la " +"verificació durant el registre del compte:" #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:44 msgid "Registration Token" -msgstr "" +msgstr "Token de Registre" #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:45 msgid "Uses Allowed" -msgstr "" +msgstr "Usos permesos" #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:46 msgid "Pending Registrations" -msgstr "" +msgstr "Registres Pendents" #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:47 msgid "Completed Registrations" -msgstr "" +msgstr "Registres Completats" #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:48 msgid "Expiry Time" -msgstr "" +msgstr "Data de Caducitat" #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:57 msgid "Unlimited" -msgstr "" +msgstr "Il·limitat" #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:78 #, fuzzy @@ -4395,6 +4523,12 @@ msgid "" "hosted here. If you face problems with federation, try the federation tester tool." msgstr "" +"Matrix Synapse està configurat per funcionar amb altres servidors Matrix a " +"Internet. Això permet als usuaris de %(box_name)s participar en sales " +"allotjades en altres llocs i als usuaris de Matrix d’altres servidors " +"participar en sales allotjades aquí. Si teniu problemes amb la federació, " +"proveu l’eina de prova de " +"federació." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:99 #, python-format @@ -4403,10 +4537,16 @@ msgid "" "with other Matrix Synapse instances requires a valid TLS certificate. Please " "go to Let's Encrypt to obtain one." msgstr "" +"El nom de domini configurat està utilitzant un certificat autofirmat. La " +"federació amb altres instàncies de Matrix Synapse requereix un certificat " +"TLS vàlid. Si us plau, aneu a Let's Encrypt per obtenir-ne un." #: plinth/modules/matrixsynapse/views.py:140 msgid "Registration configuration cannot be updated when app is disabled." msgstr "" +"La configuració del registre no es pot actualitzar quan l’aplicació està " +"desactivada." #: plinth/modules/mediawiki/__init__.py:21 msgid "" @@ -4415,6 +4555,10 @@ msgid "" "website. You can use MediaWiki to host a wiki-like website, take notes or " "collaborate with friends on projects." msgstr "" +"MediaWiki és el motor de wiki que fa funcionar la Wikipedia i altres " +"projectes de WikiMedia. Un motor de wiki és un programa per crear un lloc " +"web editat de manera col·laborativa. Podeu utilitzar MediaWiki per allotjar " +"un lloc web tipus wiki, prendre notes o col·laborar amb amics en projectes." #: plinth/modules/mediawiki/__init__.py:25 msgid "" @@ -4424,12 +4568,19 @@ msgid "" "from MediaWiki itself by going to the Special:CreateAccount page." msgstr "" +"Aquesta instància de MediaWiki ve amb una contrasenya d’administrador " +"generada aleatòriament. Podeu establir una nova contrasenya a la secció " +"\"Configuració\" i iniciar sessió amb el compte \"admin\". A continuació, " +"podeu crear més comptes d’usuari des de MediaWiki anant a la pàgina Special:CreateAccount." #: plinth/modules/mediawiki/__init__.py:31 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" +"Qualsevol persona amb un enllaç a aquest wiki el pot llegir. Només els " +"usuaris que han iniciat sessió poden fer canvis al contingut." #: plinth/modules/mediawiki/__init__.py:51 #: plinth/modules/mediawiki/manifest.py:6 @@ -4438,7 +4589,7 @@ msgstr "MediaWiki" #: plinth/modules/mediawiki/forms.py:56 msgid "Administrator Password" -msgstr "" +msgstr "Contrasenya d'Administrador" #: plinth/modules/mediawiki/forms.py:57 msgid "" @@ -4447,6 +4598,10 @@ msgid "" "10 characters. Leave this field blank to keep the current " "password." msgstr "" +"Establiu una nova contrasenya per al compte d’administrador de MediaWiki " +"(admin). La contrasenya no pot ser comuna i la longitud mínima requerida és " +"de 10 caràcters. Deixeu aquest camp en blanc per mantenir " +"la contrasenya actual." #: plinth/modules/mediawiki/forms.py:65 msgid "" @@ -4454,94 +4609,108 @@ msgid "" "feeds and emails. Examples: \"myfreedombox.example.org\" or " "\"example.onion\"." msgstr "" +"Utilitzat per MediaWiki per generar URLs que apuntin al wiki, com ara al peu " +"de pàgina, canals i correus electrònics. Exemples: " +"\"myfreedombox.example.org\" o \"example.onion\"." #: plinth/modules/mediawiki/forms.py:71 msgid "Site Name" -msgstr "" +msgstr "Nom del Lloc Web" #: plinth/modules/mediawiki/forms.py:72 msgid "Name of the site as displayed throughout the wiki." -msgstr "" +msgstr "Nom del lloc web tal com es mostrà a tot el wiki." #: plinth/modules/mediawiki/forms.py:76 msgid "Enable public registrations" -msgstr "" +msgstr "Permet els registres públics" #: plinth/modules/mediawiki/forms.py:77 msgid "" "If enabled, anyone on the internet will be able to create an account on your " "MediaWiki instance." msgstr "" +"Si està activat, qualsevol persona a Internet podrà crear un compte a la " +"vostra instància de MediaWiki." #: plinth/modules/mediawiki/forms.py:81 msgid "Enable private mode" -msgstr "" +msgstr "Habilita el mode privat" #: plinth/modules/mediawiki/forms.py:82 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 "" +"Si està activat, l’accés estarà restringit. Només les persones que tinguin " +"comptes podran llegir/escriure al wiki. També es desactivaran els registres " +"públics." #: plinth/modules/mediawiki/forms.py:87 msgid "Default Skin" -msgstr "" +msgstr "Tema per Defecte" #: plinth/modules/mediawiki/forms.py:88 msgid "" "Choose a default skin for your MediaWiki installation. Users have the option " "to select their preferred skin." msgstr "" +"Escull un tema per defecte per a la teva instal·lació de MediaWiki. Els " +"usuaris tenen l'opció d'escollir el tema que prefereixin." #: plinth/modules/mediawiki/forms.py:93 msgid "Default Language" -msgstr "" +msgstr "Llengua per Defecte" #: plinth/modules/mediawiki/forms.py:94 msgid "" "Choose a default language for your MediaWiki installation. Users have the " "option to select their preferred language." msgstr "" +"Tria una llengua per defecte per la teva instal·lació de Media Wiki. Els " +"usuaris tenen l'opció de triar la llengua que prefereixin." #: plinth/modules/mediawiki/views.py:43 msgid "Password updated" -msgstr "" +msgstr "Contrasenya actualitzada" #: plinth/modules/mediawiki/views.py:48 msgid "Password update failed. Please choose a stronger password" msgstr "" +"Ha fallat l'actualització de la Contrasenya. Si us plau, trieu una " +"contrasenya més segura" #: plinth/modules/mediawiki/views.py:57 msgid "Public registrations enabled" -msgstr "" +msgstr "Registres públics activats" #: plinth/modules/mediawiki/views.py:65 msgid "Public registrations disabled" -msgstr "" +msgstr "Registres públics desactivats" #: plinth/modules/mediawiki/views.py:70 msgid "Private mode enabled" -msgstr "" +msgstr "Mode privat activat" #: plinth/modules/mediawiki/views.py:76 msgid "Private mode disabled" -msgstr "" +msgstr "Mode privat desactivat" #: plinth/modules/mediawiki/views.py:84 msgid "Default skin changed" -msgstr "" +msgstr "Tema per defecte modificat" #: plinth/modules/mediawiki/views.py:88 msgid "Domain name updated" -msgstr "" +msgstr "Nom de domini actualitzat" #: plinth/modules/mediawiki/views.py:92 msgid "Site name updated" -msgstr "" +msgstr "Nom del lloc web actualitzat" #: plinth/modules/mediawiki/views.py:96 msgid "Default language changed" -msgstr "" +msgstr "Llengua per defecte modificada" #: plinth/modules/minetest/__init__.py:33 #, python-brace-format @@ -4551,6 +4720,10 @@ msgid "" "(30000). To connect to the server, a Minetest client is needed." msgstr "" +"Minetest és un sandbox multijugador de blocs amb món infinit. Aquest mòdul " +"permet executar el servidor Minetest en aquest {box_name}, al port per " +"defecte (30000). Per connectar-se al servidor, cal un client de Minetest." #: plinth/modules/minetest/__init__.py:56 plinth/modules/minetest/manifest.py:9 msgid "Minetest" @@ -4558,56 +4731,64 @@ msgstr "Minetest" #: plinth/modules/minetest/forms.py:13 msgid "Maximum number of players" -msgstr "" +msgstr "Nombre màxim de jugadors" #: plinth/modules/minetest/forms.py:15 msgid "" "You can change the maximum number of players playing minetest at a single " "instance of time." msgstr "" +"Podeu canviar el nombre màxim de jugadors que poden jugar a Minetest en una " +"sola instància alhora." #: plinth/modules/minetest/forms.py:19 msgid "Enable creative mode" -msgstr "" +msgstr "Habilita el mode creatiu" #: 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 "" +"El mode creatiu canvia les regles del joc per fer-lo més adequat per a un " +"joc creatiu, en lloc del desafiant joc de \"supervivència\"." #: plinth/modules/minetest/forms.py:25 msgid "Enable PVP" -msgstr "" +msgstr "Habilita el PVP" #: plinth/modules/minetest/forms.py:26 msgid "Enabling Player Vs Player will allow players to damage other players." msgstr "" +"Habilitant el Jugador contra Jugador (PVP) permetrà als jugadors fer mal a " +"altres jugadors." #: plinth/modules/minetest/forms.py:30 msgid "Enable damage" -msgstr "" +msgstr "Habilita el dany" #: plinth/modules/minetest/forms.py:31 msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" +"Si es troba inhabilitat, els jugadors no podran morir o rebre dany de cap " +"mena." #: plinth/modules/minetest/manifest.py:49 msgid "Game server" -msgstr "" +msgstr "Servidor de joc" #: plinth/modules/minetest/manifest.py:49 msgid "Block sandbox" -msgstr "" +msgstr "Sandbox de blocs" #: plinth/modules/minetest/manifest.py:49 msgid "Platform" -msgstr "" +msgstr "Plataforma" #: plinth/modules/minetest/templates/minetest.html:17 #: plinth/modules/networks/forms.py:105 plinth/modules/networks/forms.py:145 msgid "Address" -msgstr "" +msgstr "Adreça" #: plinth/modules/minidlna/__init__.py:20 msgid "" @@ -4619,6 +4800,13 @@ msgid "" "gaming systems (such as PS3 and Xbox 360) or applications such as totem and " "Kodi." msgstr "" +"MiniDLNA és un programari de servidor multimèdia senzill, amb l’objectiu de " +"ser completament compatible amb clients DLNA/UPnP-AV. El servei MiniDLNA " +"serveix fitxers multimèdia (música, imatges i vídeo) als clients d’una " +"xarxa. DLNA/UPnP és un protocol sense configuració i és compatible amb " +"qualsevol dispositiu que passi la certificació DLNA, com reproductors " +"multimèdia portàtils, smartphones, televisors i consoles de jocs " +"(com PS3 i Xbox 360) o aplicacions com totem i Kodi." #: plinth/modules/minidlna/__init__.py:45 msgid "MiniDLNA" @@ -4626,49 +4814,62 @@ msgstr "MiniDLNA" #: plinth/modules/minidlna/forms.py:20 msgid "Media Files Directory" -msgstr "" +msgstr "Directori de Fitxers Multimèdia" #: plinth/modules/minidlna/forms.py:21 msgid "" "Directory that MiniDLNA Server will read for content. All sub-directories of " "this will be also scanned for media files." msgstr "" +"MiniDLNA és un programari de servidor multimèdia senzill, amb l’objectiu de " +"ser completament compatible amb clients DLNA/UPnP-AV. El dimoni MiniDLNA " +"serveix fitxers multimèdia (música, imatges i vídeo) als clients d’una " +"xarxa. DLNA/UPnP és un protocol sense configuració i és compatible amb " +"qualsevol dispositiu que passi la certificació DLNA, com reproductors " +"multimèdia portàtils, smartphones, televisors i consoles de jocs " +"(com PS3 i Xbox 360) o aplicacions com totem i Kodi." #: plinth/modules/minidlna/manifest.py:10 +#, fuzzy msgid "vlc" -msgstr "" +msgstr "vlc" #: plinth/modules/minidlna/manifest.py:48 +#, fuzzy msgid "kodi" -msgstr "" +msgstr "kodi" #: plinth/modules/minidlna/manifest.py:81 +#, fuzzy msgid "yaacc" -msgstr "" +msgstr "yaacc" #: plinth/modules/minidlna/manifest.py:91 +#, fuzzy msgid "totem" -msgstr "" +msgstr "totem" #: plinth/modules/minidlna/manifest.py:116 msgid "Media server" -msgstr "" +msgstr "Servidor Multimèdia" #: plinth/modules/minidlna/manifest.py:116 msgid "Television" -msgstr "" +msgstr "Televisió" #: plinth/modules/minidlna/manifest.py:116 +#, fuzzy msgid "UPnP" -msgstr "" +msgstr "UPnP" #: plinth/modules/minidlna/manifest.py:116 +#, fuzzy msgid "DLNA" -msgstr "" +msgstr "DLNA" #: plinth/modules/minidlna/views.py:33 msgid "Updated media directory" -msgstr "" +msgstr "S'ha actualitzat el directori multimèdia" #: plinth/modules/miniflux/__init__.py:18 msgid "" @@ -4678,6 +4879,11 @@ msgid "" "subscribe to your favorite sites and access full article contents within the " "reader itself." msgstr "" +"Miniflux és una eina basada en web que agrega notícies i actualitzacions de " +"blogs de diversos llocs web en un únic format centralitzat i fàcil de " +"llegir. Té una interfície senzilla i es centra en una experiència de lectura " +"sense distraccions. Podeu subscriure-us als vostres llocs favorits i accedir " +"al contingut complet dels articles des del mateix lector." #: plinth/modules/miniflux/__init__.py:23 msgid "" From d99161b4ccfde195338b476c94dc4f517249bccc Mon Sep 17 00:00:00 2001 From: Coucouf Date: Sun, 30 Nov 2025 19:04:10 +0100 Subject: [PATCH 04/25] Translated using Weblate (French) Currently translated at 100.0% (1875 of 1875 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 37 ++++++++++++-------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index cf64def62..2be5f319c 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-25 01:21+0000\n" -"PO-Revision-Date: 2025-10-30 04:24+0000\n" +"PO-Revision-Date: 2025-12-01 11:00+0000\n" "Last-Translator: Coucouf \n" "Language-Team: French \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.14.1-dev\n" +"X-Generator: Weblate 5.15-dev\n" #: plinth/config.py:103 #, python-brace-format @@ -4460,11 +4460,7 @@ msgstr "" "moins un domaine pour pouvoir utiliser Matrix Synapse." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:20 -#, fuzzy, 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." +#, 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 " @@ -4472,8 +4468,9 @@ msgid "" msgstr "" "Votre serveur Matrix utilise le domaine %(domain_name)s. Les " "identifiants utilisateur seront du type @identifiant:%(domain_name)s. Le changement du nom de domaine après l’installation initiale n’est " -"actuellement pas pris en charge." +"em>. Le changement du nom de domaine nécéssite la désinstallation et " +"réinstallation de l’appli ce qui entraînera la suppression de l’ensemble des " +"données de cette appli." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:28 msgid "" @@ -4516,10 +4513,8 @@ msgid "Unlimited" msgstr "Illimité" #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:78 -#, fuzzy -#| msgid "Feed generator" msgid "Federation" -msgstr "Générateur de fils" +msgstr "Fédération" #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:81 #, python-format @@ -4530,6 +4525,12 @@ msgid "" "hosted here. If you face problems with federation, try the federation tester tool." msgstr "" +"Matrix Synapse est configuré pour communiquer avec d’autres serveurs sur " +"Internet. Ceci permet aux utilisateurices de la %(box_name)s de participer à " +"des salons hébergés ailleurs et à des utilisateurices d’autres serveurs de " +"participer aux salons hébergés ici. En cas de problème avec la fédération, " +"vous pouvez utiliser l’outil de " +"test de fédération." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:99 #, python-format @@ -7453,20 +7454,16 @@ msgstr "" "d’actualités." #: plinth/modules/rssbridge/__init__.py:28 -#, fuzzy, python-brace-format -#| msgid "" -#| "You can use RSS-Bridge with Miniflux or Tiny Tiny RSS to follow various websites. When " -#| "adding a feed, enable authentication and use your {box_name} credentials." +#, python-brace-format msgid "" "You can use RSS-Bridge with Miniflux or Nextcloud News to follow various websites. When " "adding a feed, enable authentication and use your {box_name} credentials." msgstr "" "Vous pouvez utiliser RSS-Bridge avec Miniflux " -"ou bien Tiny Tiny RSS pour suivre différents " -"sites Internet. Lors de l’ajout d’un fil, activez l’authentification et " -"utilisez les identifiants de {box_name}." +"ou bien Nextcloud News pour suivre " +"différents sites Internet. Lors de l’ajout d’un fil, activez l’" +"authentification et utilisez les identifiants de {box_name}." #: plinth/modules/rssbridge/__init__.py:49 msgid "Read and subscribe to news feeds" From b2b581309e3847b15a7e29664c39b149262b740b Mon Sep 17 00:00:00 2001 From: OwlGale Date: Tue, 2 Dec 2025 12:50:27 +0100 Subject: [PATCH 05/25] Translated using Weblate (Russian) Currently translated at 100.0% (1875 of 1875 strings) --- plinth/locale/ru/LC_MESSAGES/django.po | 124 ++++++++++++------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 238f8e9aa..30f57e881 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-25 01:21+0000\n" -"PO-Revision-Date: 2025-12-01 11:00+0000\n" +"PO-Revision-Date: 2025-12-02 12:00+0000\n" "Last-Translator: OwlGale \n" "Language-Team: Russian \n" @@ -16,9 +16,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=" -"(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? " -"1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.15-dev\n" #: plinth/config.py:103 @@ -1238,7 +1237,7 @@ msgstr "Библиотека" #: plinth/modules/calibre/manifest.py:21 msgid "Ebook reader" -msgstr "Читалка для электронных книг" +msgstr "Читалка" #: plinth/modules/calibre/templates/calibre-delete-library.html:11 #, python-format @@ -1633,12 +1632,12 @@ msgstr "BitTorrent клиент, написанный на Python/pygtk" #: plinth/modules/deluge/manifest.py:21 #: plinth/modules/transmission/manifest.py:39 msgid "BitTorrent" -msgstr "БитТоррент" +msgstr "BitTorrent" #: plinth/modules/deluge/manifest.py:21 plinth/modules/roundcube/manifest.py:23 #: plinth/modules/transmission/manifest.py:39 msgid "Web client" -msgstr "Веб клиент" +msgstr "Веб-клиент" #: plinth/modules/deluge/manifest.py:21 plinth/modules/syncthing/manifest.py:58 #: plinth/modules/transmission/manifest.py:39 @@ -2466,7 +2465,7 @@ msgstr "FairEmail" #: plinth/modules/email/manifest.py:82 msgid "Email server" -msgstr "Сервер Электронной почты" +msgstr "Почтовый сервер" #: plinth/modules/email/manifest.py:82 msgid "IMAP" @@ -2474,7 +2473,7 @@ msgstr "IMAP" #: plinth/modules/email/manifest.py:82 msgid "Spam control" -msgstr "Контроль спама" +msgstr "Защита от спама" #: plinth/modules/email/templates/email-aliases.html:13 #: plinth/modules/email/templates/email.html:15 @@ -2636,7 +2635,7 @@ msgstr "" #: plinth/modules/ikiwiki/__init__.py:79 #: plinth/modules/tiddlywiki/__init__.py:61 msgid "View and edit wiki applications" -msgstr "Просмотр и редактирование приложений Wiki" +msgstr "Просмотр и редактирование вики приложений" #: plinth/modules/featherwiki/__init__.py:59 #: plinth/modules/featherwiki/manifest.py:9 @@ -2645,7 +2644,7 @@ msgstr "Feather Wiki" #: plinth/modules/featherwiki/forms.py:13 plinth/modules/tiddlywiki/forms.py:13 msgid "Wiki files cannot be named \"index.html\"." -msgstr "Wiki-файлы не могут называться \"index.html\"." +msgstr "Вики файлы не могут называться \"index.html\"." #: plinth/modules/featherwiki/forms.py:20 plinth/modules/tiddlywiki/forms.py:20 msgid "Name of the wiki file, with file extension \".html\"" @@ -2691,7 +2690,7 @@ msgstr "Вики" #: plinth/modules/infinoted/manifest.py:46 #: plinth/modules/tiddlywiki/manifest.py:20 msgid "Note taking" -msgstr "Взятие на заметку" +msgstr "Заметки" #: plinth/modules/featherwiki/manifest.py:18 #: plinth/modules/ikiwiki/manifest.py:15 @@ -2704,13 +2703,13 @@ msgstr "Веб-сайт" #: plinth/modules/featherwiki/manifest.py:18 #: plinth/modules/tiddlywiki/manifest.py:25 msgid "Quine" -msgstr "Quine" +msgstr "Куайн" #: plinth/modules/featherwiki/manifest.py:18 #: plinth/modules/nextcloud/manifest.py:56 #: plinth/modules/tiddlywiki/manifest.py:26 msgid "Non-Debian" -msgstr "Не-Debian" +msgstr "Не Debian" #: plinth/modules/featherwiki/templates/featherwiki_configure.html:12 #: plinth/modules/tiddlywiki/templates/tiddlywiki_configure.html:12 @@ -2782,7 +2781,7 @@ msgstr "Скачать" #: plinth/modules/featherwiki/views.py:20 plinth/modules/tiddlywiki/views.py:20 msgid "A wiki file with the given name already exists." -msgstr "Файл wiki с указанным именем уже существует." +msgstr "Вики файл с указанным именем уже существует." #: plinth/modules/featherwiki/views.py:54 plinth/modules/tiddlywiki/views.py:54 msgid "Wiki created." @@ -2817,7 +2816,7 @@ msgstr "Добавлен вики-файл." #: plinth/modules/featherwiki/views.py:119 #: plinth/modules/tiddlywiki/views.py:120 msgid "Failed to add wiki file." -msgstr "Не удалось добавить файл wiki." +msgstr "Не удалось добавить вики файл." #: plinth/modules/featherwiki/views.py:138 #: plinth/modules/tiddlywiki/views.py:139 @@ -3249,7 +3248,7 @@ msgstr "GNOME" #: plinth/modules/gnome/manifest.py:9 plinth/templates/clients.html:42 msgid "Desktop" -msgstr "Десктоп" +msgstr "Рабочий стол" #: plinth/modules/gnome/manifest.py:10 msgid "Browser" @@ -3261,7 +3260,7 @@ msgstr "Офисный пакет" #: plinth/modules/gnome/manifest.py:12 msgid "Software store" -msgstr "Магазин программного обеспечения" +msgstr "Магазин приложений" #: plinth/modules/gnome/manifest.py:13 msgid "GUI" @@ -3381,7 +3380,7 @@ msgid "" "package." msgstr "" "Существует ряд проектов, которые работают в сторону реализации будущего " -"распределенных веб-сервисов, %(box_name)s стремится объединить их." +"распределенных сервисов, %(box_name)s стремится объединить их." #: plinth/modules/help/templates/help_about.html:83 #, python-format @@ -3394,12 +3393,13 @@ msgid "" "running \"apt source package_name\" in a terminal (using Cockpit or " "SSH)." msgstr "" -"%(box_name)s - это свободное ПО, лицензированное по лицензии GNU Affero " -"General Public License. %(box_name)s репозиторий. Кроме того, исходный код любого " -"пакета Debian может быть получен из Debian Sources site, или путем запуска \"apt source package_name\" в терминале (с использованием Cockpit или SSH)." +"%(box_name)s является свободным программным обеспечением и распространяется " +"по лицензии GNU Affero General Public License. Исходный код доступен онлайн " +"в " +"репозитории %(box_name)s . Кроме того, исходный код пакетов Debian " +"можно получить с сайта Debian " +"Sources или выполнив команду \"apt source название_пакета\" в " +"терминале (с помощью Cockpit или SSH)." #: plinth/modules/help/templates/help_about.html:97 msgid "Learn" @@ -3710,11 +3710,11 @@ msgstr "Home Assistant" #: plinth/modules/homeassistant/manifest.py:62 msgid "Home Automation" -msgstr "Домашняя автоматизация" +msgstr "Умный дом" #: plinth/modules/homeassistant/manifest.py:63 msgid "IoT" -msgstr "IoT" +msgstr "Интернет вещей" #: plinth/modules/homeassistant/manifest.py:64 #: plinth/modules/networks/manifest.py:8 @@ -3735,7 +3735,7 @@ msgstr "Z-Wave" #: plinth/modules/homeassistant/manifest.py:67 msgid "Thread" -msgstr "Тред" +msgstr "Thread" #: plinth/modules/homeassistant/templates/homeassistant.html:17 msgid "" @@ -3786,9 +3786,9 @@ msgid "" "edit existing ones. In the User " "Configuration you can change these permissions or add new users." msgstr "" -"Только пользователи {box_name} группы администраторов могут " -"создавать и управлять блогами и вики, но любой пользователь " -"группы wiki могжет редактировать существующие. На странице администраторов могут " +"создавать и управлять блогами и вики, но любой пользователь " +"группы wiki может редактировать существующие. На странице Конфигурация пользователей вы можете изменить " "разрешения или добавить новых пользователей." @@ -3979,7 +3979,7 @@ msgstr "JSXC" #: plinth/modules/jsxc/manifest.py:16 msgid "Web chat" -msgstr "Веб чат" +msgstr "Веб-чат" #: plinth/modules/jsxc/manifest.py:16 plinth/modules/quassel/manifest.py:54 msgid "Client" @@ -3991,10 +3991,10 @@ msgid "" "Wikipedia available without using the internet, but it is potentially " "suitable for all HTML content. Kiwix packages are in the ZIM file format." msgstr "" -"Kiwix является офлайн-читателкой для веб-контента. Это программа " -"предназначенная для того,чтобы сделать Википедию доступной автономно без " -"Интернета, но оно потенциально подходит для всего HTML-контента. Пакеты " -"Kiwix находятся в формате ZIM." +"Kiwix является офлайн читалкой для веб-контента. Это программа " +"предназначенная для того, чтобы сделать Википедию доступной автономно без " +"Интернета, но потенциально подходит для любого HTML-контента. Пакеты Kiwix " +"представляют собой файлы в формате ZIM." #: plinth/modules/kiwix/__init__.py:25 msgid "" @@ -4055,7 +4055,7 @@ msgstr "" #: plinth/modules/kiwix/manifest.py:24 msgid "Offline reader" -msgstr "Автономный читатель" +msgstr "Оффлайн читалка" #: plinth/modules/kiwix/manifest.py:25 msgid "Archival" @@ -4066,7 +4066,7 @@ msgstr "Архив" #: plinth/modules/shadowsocksserver/manifest.py:18 #: plinth/modules/tor/manifest.py:60 plinth/modules/torproxy/manifest.py:57 msgid "Censorship resistance" -msgstr "Противодействие цензуре" +msgstr "Сопротивление цензуре" #: plinth/modules/kiwix/manifest.py:27 msgid "Wikipedia" @@ -4358,11 +4358,11 @@ msgstr "FluffyChat" #: plinth/modules/matrixsynapse/manifest.py:101 #: plinth/modules/quassel/manifest.py:54 msgid "Chat room" -msgstr "Чат комната" +msgstr "Чат" #: plinth/modules/matrixsynapse/manifest.py:105 msgid "Matrix server" -msgstr "Matrix сервер" +msgstr "Cервер Matrix" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:18 msgid "" @@ -4514,7 +4514,7 @@ msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -"Кто угодно, имея ссылку на wiki, может читать её. Только зарегистрированные " +"Кто угодно, имея ссылку на вики, может читать её. Только зарегистрированные " "пользователи могут вносить изменения." #: plinth/modules/mediawiki/__init__.py:51 @@ -4544,7 +4544,7 @@ msgid "" "feeds and emails. Examples: \"myfreedombox.example.org\" or " "\"example.onion\"." msgstr "" -"Использовалось MediaWiki для создания ссылок на wiki страницы, например " +"Использовалось MediaWiki для создания ссылок на вики страницы, например " "внизу веб-страниц, в RSS-потоках или в электронных письмах. Например: " "\"myfreedombox.example.org\" или \"example.onion\"." @@ -4711,7 +4711,7 @@ msgstr "Игровой сервер" #: plinth/modules/minetest/manifest.py:49 msgid "Block sandbox" -msgstr "Блокировать песочницу" +msgstr "Песочница" #: plinth/modules/minetest/manifest.py:49 msgid "Platform" @@ -4774,7 +4774,7 @@ msgstr "totem" #: plinth/modules/minidlna/manifest.py:116 msgid "Media server" -msgstr "Медиа сервер" +msgstr "Медиасервер" #: plinth/modules/minidlna/manifest.py:116 msgid "Television" @@ -4879,7 +4879,7 @@ msgstr "RSS Охранник" #: plinth/modules/miniflux/manifest.py:138 msgid "Feed reader" -msgstr "Устройство для чтения фидов" +msgstr "Ленты новостей" #: plinth/modules/miniflux/manifest.py:138 msgid "News aggregation" @@ -7250,10 +7250,10 @@ msgid "" "from an email client, including MIME support, address book, folder " "manipulation, message searching and spell checking." msgstr "" -"Roundcube webmail это основанный на браузере многоязычный IMAP клиент с " -"пользовательским интерфейсом. Это предоставляет полную функциональность, " -"которую вы ожидаете от почтового клиента, включая поддержку MIME, адресную " -"книгу, управление папками, поиск сообщений и проверку орфографии." +"Веб-почта Roundcube это браузерный многоязычный IMAP клиент с " +"пользовательским интерфейсом. Он предоставляет полную функциональность, " +"которую вы ожидаете от почтового клиента, включая поддержку MIME, адресной " +"книги, управления папками, поиска сообщений и проверки орфографии." #: plinth/modules/roundcube/__init__.py:24 msgid "" @@ -7305,7 +7305,7 @@ msgstr "" #: plinth/modules/roundcube/manifest.py:23 msgid "Email" -msgstr "Email" +msgstr "Электронная почта" #: plinth/modules/rssbridge/__init__.py:21 msgid "" @@ -7355,7 +7355,7 @@ msgstr "Разрешите использовать это приложение #: plinth/modules/rssbridge/manifest.py:16 msgid "Feed generator" -msgstr "Генератор питания" +msgstr "Генератор лент новостей" #: plinth/modules/rssbridge/manifest.py:16 msgid "News" @@ -7436,11 +7436,11 @@ msgstr "Сетевой диск" #: plinth/modules/samba/manifest.py:84 msgid "Media storage" -msgstr "Хранение носителей" +msgstr "Хранилище медиафайлов" #: plinth/modules/samba/manifest.py:85 msgid "Backup storage" -msgstr "Резервное хранение" +msgstr "Резервное хранилище" #: plinth/modules/samba/templates/samba.html:20 msgid "Shares" @@ -7581,7 +7581,7 @@ msgstr "Строгий" #: plinth/modules/searx/manifest.py:17 msgid "Web search" -msgstr "Веб поиск" +msgstr "Веб-поиск" #: plinth/modules/searx/manifest.py:17 msgid "Metasearch Engine" @@ -7736,7 +7736,7 @@ msgstr "" #: plinth/modules/shaarli/__init__.py:36 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" -msgstr "Shаarli" +msgstr "Shaarli" #: plinth/modules/shaarli/manifest.py:12 msgid "Shaarlier" @@ -7866,7 +7866,7 @@ msgstr "Метод шифрования. Клиенты должны испол #: plinth/modules/shadowsocksserver/manifest.py:20 msgid "Exit point" -msgstr "Место выхода" +msgstr "Точка выхода" #: plinth/modules/sharing/__init__.py:17 #, python-brace-format @@ -7927,7 +7927,7 @@ msgstr "" #: plinth/modules/sharing/manifest.py:19 plinth/modules/zoph/manifest.py:26 msgid "Web sharing" -msgstr "Совместное использование веб-страниц" +msgstr "Обмен в Интернете" #: plinth/modules/sharing/templates/sharing.html:18 #: plinth/modules/sharing/templates/sharing.html:21 @@ -8264,7 +8264,7 @@ msgstr "Коннектор Thunderbird + SOGo" #: plinth/modules/sogo/manifest.py:71 msgid "Webmail" -msgstr "Webmail" +msgstr "Веб-почта" #: plinth/modules/sogo/manifest.py:74 msgid "Address book" @@ -8753,7 +8753,7 @@ msgstr "Цифровой сад" #: plinth/modules/tiddlywiki/manifest.py:24 msgid "Zettelkasten" -msgstr "Шкафы для застройки" +msgstr "Цеттелькастен" #: plinth/modules/tiddlywiki/templates/tiddlywiki_delete.html:18 msgid "" @@ -8921,15 +8921,15 @@ msgstr "Orbot: Прокси с Tor" #: plinth/modules/tor/manifest.py:57 msgid "Onion services" -msgstr "Луковые сервисы" +msgstr "Onion-сервисы" #: plinth/modules/tor/manifest.py:58 msgid "Relay" -msgstr "Ретранслятор" +msgstr "Сетевой узел" #: plinth/modules/tor/manifest.py:59 plinth/modules/torproxy/manifest.py:56 msgid "Anonymity network" -msgstr "Сеть анонимности" +msgstr "Анонимная сеть" #: plinth/modules/tor/templates/tor.html:23 msgid "Onion Service" From 0419eb02cff10636ccb1dc2f84ed7a533082b5ba Mon Sep 17 00:00:00 2001 From: Coucouf Date: Mon, 1 Dec 2025 21:11:37 +0100 Subject: [PATCH 06/25] Translated using Weblate (French) Currently translated at 100.0% (1875 of 1875 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 2be5f319c..6e11e88ef 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-11-25 01:21+0000\n" -"PO-Revision-Date: 2025-12-01 11:00+0000\n" +"PO-Revision-Date: 2025-12-02 12:00+0000\n" "Last-Translator: Coucouf \n" "Language-Team: French \n" @@ -7462,8 +7462,8 @@ msgid "" msgstr "" "Vous pouvez utiliser RSS-Bridge avec Miniflux " "ou bien Nextcloud News pour suivre " -"différents sites Internet. Lors de l’ajout d’un fil, activez l’" -"authentification et utilisez les identifiants de {box_name}." +"différents sites Internet. Lors de l’ajout d’un fil, activez " +"l’authentification et utilisez vos identifiants {box_name}." #: plinth/modules/rssbridge/__init__.py:49 msgid "Read and subscribe to news feeds" From 00a69108ddaee501882caf4bbf0ea98d8c5e658b Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 26 Nov 2025 10:23:41 -0800 Subject: [PATCH 07/25] ui: Implement a toggle menu for setting dark mode - Add a toggle menu for selecting the color scheme. JS code largely taken from Bootstrap documentation and slightly customized. - Use local storage to store the setting for dark/light/auto. Default to auto which means browser level preference is picked up (which could be system level preference). Tests: - Appearance of the toggle menu is consistent. Check box is shown on the currently selected value. - Deleting the local storage value reverts the preference to browser set value. - Menu is collapsed at smaller screen sizes. Appearance and functionality as expected. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- debian/copyright | 5 ++ plinth/templates/base.html | 5 ++ plinth/templates/theme-menu.html | 46 ++++++++++++ static/themes/default/css/main.css | 4 ++ static/themes/default/js/color-modes.js | 96 +++++++++++++++++++++++++ 5 files changed, 156 insertions(+) create mode 100644 plinth/templates/theme-menu.html create mode 100644 static/themes/default/js/color-modes.js diff --git a/debian/copyright b/debian/copyright index 2d583c133..8e37e5817 100644 --- a/debian/copyright +++ b/debian/copyright @@ -38,6 +38,11 @@ Copyright: Marie Van den Broeck (https://thenounproject.com/marie49/) Comment: https://thenounproject.com/icon/162372/ License: CC-BY-SA-3.0 +Files: static/themes/default/js/color-modes.js +Copyright: 2011-2025 The Bootstrap Authors +Comment: https://getbootstrap.com/docs/5.3/customize/color-modes/ +License: CC-BY-3.0 + Files: plinth/modules/bepasty/static/icons/bepasty.svg Copyright: (c) 2014 by the Bepasty Team, see the AUTHORS file. Comment: https://github.com/bepasty/bepasty-server/blob/master/src/bepasty/static/app/bepasty.svg diff --git a/plinth/templates/base.html b/plinth/templates/base.html index 2a074b5a8..b727f68fb 100644 --- a/plinth/templates/base.html +++ b/plinth/templates/base.html @@ -58,6 +58,9 @@ {% endif %} + + @@ -148,6 +151,8 @@ {% include "notifications-dropdown.html" %} + {% include "theme-menu.html" %} + {% include "help-menu.html" %} diff --git a/static/themes/default/css/main.css b/static/themes/default/css/main.css index b8bb67ff6..d5e8adc5c 100644 --- a/static/themes/default/css/main.css +++ b/static/themes/default/css/main.css @@ -522,6 +522,10 @@ footer { border-bottom: var(--freedombox-navbar-color) 3px solid; } +.main-header .dropdown-menu .active .fa-check { + display: block !important; +} + /* Breadcrumbs */ .breadcrumb-item { --bs-breadcrumb-divider: ">"; diff --git a/static/themes/default/js/color-modes.js b/static/themes/default/js/color-modes.js new file mode 100644 index 000000000..efef6dbf3 --- /dev/null +++ b/static/themes/default/js/color-modes.js @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: CC-BY-3.0 +/* + This file is part of FreedomBox. Color mode toggler for Bootstrap's docs + (https://getbootstrap.com/). Copyright 2011-2025 The Bootstrap Authors. + + @licstart The following is the entire license notice for the + JavaScript code in this page. + + Licensed under the Creative Commons Attribution 3.0 Unported License. + + @licend The above is the entire license notice + for the JavaScript code in this page. +*/ + +(() => { + 'use strict'; + + const getStoredTheme = () => localStorage.getItem('theme'); + const setStoredTheme = theme => localStorage.setItem('theme', theme); + + const getBrowserTheme = () => { + return window.matchMedia('(prefers-color-scheme: dark)') + .matches ? 'dark' : 'light'; + }; + + const getPreferredTheme = () => { + const storedTheme = getStoredTheme(); + if (storedTheme) { + return storedTheme; + } + + return getBrowserTheme(); + }; + + const setTheme = (theme) => { + if (theme === 'auto') { + theme = getBrowserTheme(); + } + document.documentElement.setAttribute('data-bs-theme', theme); + }; + + setTheme(getPreferredTheme()); + + const showActiveTheme = (theme, focus = false) => { + const themeSwitcher = document.querySelector('#id_theme_menu_link'); + + if (!themeSwitcher) { + return; + } + + const themeSwitcherText = document.querySelector('#id_toggle_theme_text'); + const activeThemeIcon = document.querySelector('#id_active_theme_icon'); + const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`); + const iconOfActiveBtn = btnToActive.dataset.bsIconValue; + + document.querySelectorAll('[data-bs-theme-value]').forEach(element => { + element.classList.remove('active'); + element.setAttribute('aria-pressed', 'false'); + const iconOfBtn = element.dataset.bsIconValue; + if (activeThemeIcon.classList.contains(iconOfBtn)) { + activeThemeIcon.classList.remove(iconOfBtn); + } + }); + + btnToActive.classList.add('active'); + btnToActive.setAttribute('aria-pressed', 'true'); + activeThemeIcon.classList.add(iconOfActiveBtn); + const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})`; + themeSwitcher.setAttribute('title', themeSwitcherLabel); + + if (focus) { + themeSwitcher.focus(); + }; + }; + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { + const storedTheme = getStoredTheme(); + if (storedTheme !== 'light' && storedTheme !== 'dark') { + setTheme(getPreferredTheme()); + } + }); + + window.addEventListener('DOMContentLoaded', () => { + showActiveTheme(getPreferredTheme()); + + document.querySelectorAll('[data-bs-theme-value]') + .forEach(toggle => { + toggle.addEventListener('click', () => { + const theme = toggle.getAttribute('data-bs-theme-value'); + setStoredTheme(theme); + setTheme(theme); + showActiveTheme(theme, true); + }); + }); + }); +})(); From 6c930a9f24be938e9cd3ee29b0bd0daaa0b07f3a Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sat, 29 Nov 2025 10:20:09 +0530 Subject: [PATCH 08/25] upgrades: Use bootstrap spinner button instead of custom styling - This simplifies the implementation and gets it ready for dark/light mode. Tests: - In the upgrades main view, set is_busy = True and disable setting refresh_page_sec. Load the upgrades app and notice that the 'Updating...' button is showing proper styling in light anddark modes. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../templates/upgrades_configure.html | 8 +++---- static/themes/default/css/main.css | 22 ------------------- 2 files changed, 4 insertions(+), 26 deletions(-) diff --git a/plinth/modules/upgrades/templates/upgrades_configure.html b/plinth/modules/upgrades/templates/upgrades_configure.html index 3609c8dfd..2c705ba86 100644 --- a/plinth/modules/upgrades/templates/upgrades_configure.html +++ b/plinth/modules/upgrades/templates/upgrades_configure.html @@ -104,10 +104,10 @@

    {% trans "Manual Update" %}

    {% if is_busy %}
    -
    {% else %} diff --git a/static/themes/default/css/main.css b/static/themes/default/css/main.css index d5e8adc5c..446f67d0f 100644 --- a/static/themes/default/css/main.css +++ b/static/themes/default/css/main.css @@ -228,28 +228,6 @@ body { vertical-align: middle; } -.running-status-parent { - display: inline-block; -} - -.running-status { - border-radius: 50%; - border: 1px solid black; - width: 0.5rem; - height: 0.5rem; - display: inline-block; -} - -.running-status.loading { - border: 0.25rem solid var(--neutral-light-color); - border-top: 0.25rem solid var(--progress-color); - border-radius: 50%; - width: 1rem; - height: 1rem; - display: inline-block; - animation: spin 1s linear infinite; -} - @keyframes spin { 0% { transform: rotate(0deg); From b166404b0ac452b0ae7dca710e2e50293b510898 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sat, 29 Nov 2025 10:22:28 +0530 Subject: [PATCH 09/25] ui: Use default button style for tag buttons - In the app header as well as tag search bar. - De-emphasize the tag buttons in app header so that users won't see them as sections of the page. - Add a bullet Unicode character between the tags in app header to separate them properly with new de-emphasized styling. - Fix vertical alignment of text between tag buttons in app header and the close button in tags in tag search bar. Tests: - In the app header, styling has been de-emphasized and tags now look more like simple text. They are a separated with a bullet Unicode character. Vertical alignment of bullets is accurate. - In the tag search bar, tags continue to look like buttons but more like default buttons. Vertical alignment of close button is accurate. - In both areas tags look properly in dark and light color themes. - In mobile view when there are a lot of tags, tags flow into second line. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/templates/app-header.html | 5 +++-- plinth/templates/tags.html | 6 +++--- static/themes/default/css/main.css | 9 +++++++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/plinth/templates/app-header.html b/plinth/templates/app-header.html index efed5c201..e10945a86 100644 --- a/plinth/templates/app-header.html +++ b/plinth/templates/app-header.html @@ -43,10 +43,11 @@ {% if app_info.tags %} -
    +
    {% for tag in app_info.tags %} + {% if not forloop.first %}•{% endif %} + class="btn btn-default rounded-pill tag"> {% trans tag %} {% endfor %} diff --git a/plinth/templates/tags.html b/plinth/templates/tags.html index 1dd96dfc7..215c416f8 100644 --- a/plinth/templates/tags.html +++ b/plinth/templates/tags.html @@ -8,12 +8,12 @@