You've already forked snikket-web-portal
Compare commits
1 Commits
fix/use-en
...
feature/wt
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1ecb4ce80 |
19
Dockerfile
19
Dockerfile
@@ -6,7 +6,8 @@ RUN set -eu; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
python3 python3-pip python3-setuptools python3-wheel \
|
||||
libpython3-dev \
|
||||
make build-essential;
|
||||
make build-essential \
|
||||
netcat;
|
||||
|
||||
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
||||
COPY build-requirements.txt /opt/snikket-web-portal/build-requirements.txt
|
||||
@@ -16,8 +17,7 @@ COPY babel.cfg /opt/snikket-web-portal/babel.cfg
|
||||
|
||||
WORKDIR /opt/snikket-web-portal
|
||||
|
||||
RUN set -eu; \
|
||||
pip3 install -r requirements.txt; \
|
||||
RUN pip3 install -r requirements.txt; \
|
||||
pip3 install -r build-requirements.txt; \
|
||||
make;
|
||||
|
||||
@@ -33,22 +33,21 @@ ENV SNIKKET_WEB_PYENV=/etc/snikket-web-portal/env.py
|
||||
|
||||
ENV SNIKKET_WEB_PROSODY_ENDPOINT=http://127.0.0.1:5280/
|
||||
|
||||
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
||||
|
||||
WORKDIR /opt/snikket-web-portal
|
||||
HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765}
|
||||
|
||||
RUN set -eu; \
|
||||
export DEBIAN_FRONTEND=noninteractive ; \
|
||||
apt-get update ; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
python3 python3-pip python3-setuptools python3-wheel build-essential libpython3-dev netcat; \
|
||||
pip3 install -r requirements.txt; \
|
||||
apt-get remove -y --autoremove build-essential libpython3-dev; \
|
||||
python3 python3-pip python3-setuptools python3-wheel; \
|
||||
apt-get clean ; rm -rf /var/lib/apt/lists; \
|
||||
pip3 install hypercorn; \
|
||||
rm -rf /root/.cache;
|
||||
|
||||
HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765}
|
||||
WORKDIR /opt/snikket-web-portal
|
||||
|
||||
COPY requirements.txt /opt/snikket-web-portal/requirements.txt
|
||||
RUN pip3 install -r requirements.txt; rm -rf /root/.cache;
|
||||
|
||||
COPY --from=build /opt/snikket-web-portal/snikket_web/ /opt/snikket-web-portal/snikket_web
|
||||
COPY babel.cfg /opt/snikket-web-portal/babel.cfg
|
||||
|
||||
@@ -5,5 +5,5 @@ hsluv~=0.0.2
|
||||
flask-babel~=1.0
|
||||
email-validator~=1.1
|
||||
environ-config~=20.0
|
||||
wtforms~=2.3
|
||||
wtforms~=3.0
|
||||
typing-extensions
|
||||
|
||||
@@ -145,19 +145,14 @@ class AppConfig:
|
||||
site_name = environ.var("")
|
||||
avatar_cache_ttl = environ.var(1800, converter=int)
|
||||
languages = environ.var([
|
||||
# Keep `en` as the first language, because it is used as a fallback
|
||||
# if the language negotiation cannot find another match. It is more
|
||||
# likely that users are able to read english (or find a suitable
|
||||
# online translator) than, for instance, danish.
|
||||
"en",
|
||||
"da",
|
||||
"de",
|
||||
"en",
|
||||
"fr",
|
||||
"id",
|
||||
"it",
|
||||
"pl",
|
||||
"sv",
|
||||
"zh_Hans_CN",
|
||||
], converter=autosplit)
|
||||
apple_store_url = environ.var(
|
||||
"https://apps.apple.com/us/app/snikket/id1545164189",
|
||||
|
||||
@@ -10,7 +10,6 @@ import aiohttp
|
||||
import quart.flask_patch
|
||||
|
||||
import wtforms
|
||||
import wtforms.fields.html5
|
||||
|
||||
from quart import (
|
||||
Blueprint,
|
||||
|
||||
@@ -32,7 +32,7 @@ bp = quart.Blueprint("main", __name__)
|
||||
|
||||
|
||||
class LoginForm(BaseForm):
|
||||
address = wtforms.TextField(
|
||||
address = wtforms.StringField(
|
||||
_l("Address"),
|
||||
validators=[wtforms.validators.InputRequired()],
|
||||
)
|
||||
|
||||
@@ -28,12 +28,12 @@
|
||||
</div>
|
||||
<div class="f-ebox">
|
||||
{{ form.password.label }}
|
||||
{{ form.password(autocomplete="new-password") }}
|
||||
{{ form.password }}
|
||||
<p class="field-desc weak">{% trans %}Enter a secure password that you do not use anywhere else.{% endtrans %}</p>
|
||||
</div>
|
||||
<div class="f-ebox">
|
||||
{{ form.password_confirm.label }}
|
||||
{{ form.password_confirm(autocomplete="new-password") }}
|
||||
{{ form.password_confirm }}
|
||||
</div>
|
||||
<div class="f-bbox">
|
||||
{%- call form_button("done", form.action_register, class="primary") -%}{%- endcall -%}
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
{%- call render_errors(form) %}{% endcall -%}
|
||||
<div class="f-ebox">
|
||||
{{ form.password.label }}
|
||||
{{ form.password(autocomplete="new-password") }}
|
||||
{{ form.password }}
|
||||
</div>
|
||||
<div class="f-ebox">
|
||||
{{ form.password_confirm.label }}
|
||||
{{ form.password_confirm(autocomplete="new-password") }}
|
||||
{{ form.password_confirm }}
|
||||
</div>
|
||||
<div class="f-bbox">
|
||||
{%- call form_button("passwd", form.action_reset, class="primary") -%}{%- endcall -%}
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
{%- endcall -%}
|
||||
<div class="f-ebox">
|
||||
{{ form.current_password.label(class="required") }}
|
||||
{{ form.current_password(class=("has-error" if form.current_password.name in form.errors else ""), autocomplete="current-password") }}
|
||||
{{ form.current_password(class=("has-error" if form.current_password.name in form.errors else "")) }}
|
||||
</div>
|
||||
<div class="f-ebox">
|
||||
{{ form.new_password.label(class="required") }}
|
||||
{{ form.new_password(autocomplete="new-password") }}
|
||||
{{ form.new_password }}
|
||||
</div>
|
||||
<div class="f-ebox">
|
||||
{{ form.new_password_confirm.label(class="required") }}
|
||||
{{ form.new_password_confirm(class=("has-error" if form.new_password_confirm.name in form.errors else ""), autocomplete="new-password") }}
|
||||
{{ form.new_password_confirm(class=("has-error" if form.new_password_confirm.name in form.errors else "")) }}
|
||||
</div>
|
||||
<div class="box warning">
|
||||
<header>{% trans %}Warning{% endtrans %}</header>
|
||||
|
||||
Binary file not shown.
@@ -6,18 +6,18 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: translations@snikket.org\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-01-17 17:27+0100\n"
|
||||
"PO-Revision-Date: 2022-04-11 13:00+0000\n"
|
||||
"Last-Translator: David Baraniak <admin@chipmnk.dev>\n"
|
||||
"Language-Team: French <http://i18n.sotecware.net/projects/snikket/web-portal/"
|
||||
"fr/>\n"
|
||||
"PO-Revision-Date: 2021-06-19 15:01+0000\n"
|
||||
"Last-Translator: Link Mauve <linkmauve@linkmauve.fr>\n"
|
||||
"Language-Team: French <https://i18n.sotecware.net/projects/snikket/web-"
|
||||
"portal/fr/>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"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.8.1\n"
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: snikket_web/admin.py:68 snikket_web/templates/admin_delete_user.html:10
|
||||
@@ -221,8 +221,6 @@ msgid ""
|
||||
"The account data you tried to import is too large to upload. Please contact "
|
||||
"your Snikket operator."
|
||||
msgstr ""
|
||||
"Les données du compte que vous avez essayé d'importer sont trop volumineuses "
|
||||
"pour être téléchargées. Veuillez contacter votre opérateur Snikket."
|
||||
|
||||
#: snikket_web/invite.py:112
|
||||
msgid "Username"
|
||||
@@ -263,11 +261,11 @@ msgstr "Changer de mot de passe"
|
||||
|
||||
#: snikket_web/invite.py:244
|
||||
msgid "Account data file"
|
||||
msgstr "Fichier de données du compte"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:248
|
||||
msgid "Import data"
|
||||
msgstr "Importer les données"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/invite.py:269
|
||||
#, python-format
|
||||
@@ -275,9 +273,6 @@ msgid ""
|
||||
"The account data you tried to import is in an unknown format. Please upload "
|
||||
"an XML file in XEP-0227 format (provided format: %(mimetype)s)."
|
||||
msgstr ""
|
||||
"Les données du compte que vous avez essayé d'importer sont dans un format "
|
||||
"inconnu. Veuillez télécharger un fichier XML au format XEP-0227 (format "
|
||||
"fourni : %(mimetype)s)."
|
||||
|
||||
#: snikket_web/invite.py:289 snikket_web/templates/unauth.html:18
|
||||
#: snikket_web/user.py:178
|
||||
@@ -346,11 +341,11 @@ msgstr "Mettre à jour le profil"
|
||||
|
||||
#: snikket_web/user.py:82
|
||||
msgid "Account data"
|
||||
msgstr "Données du compte"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/user.py:86
|
||||
msgid "Upload"
|
||||
msgstr "Télécharger"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/user.py:111
|
||||
msgid "Incorrect password."
|
||||
@@ -374,11 +369,11 @@ msgstr "Profil mis à jour"
|
||||
|
||||
#: snikket_web/user.py:184
|
||||
msgid "Export"
|
||||
msgstr "Exporter"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/user.py:202
|
||||
msgid "You currently have no account data to export."
|
||||
msgstr "Vous n'avez actuellement aucune donnée de compte à exporter."
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/_footer.html:4
|
||||
#, python-format
|
||||
@@ -1019,7 +1014,7 @@ msgstr "Statut du serveur Snikket"
|
||||
|
||||
#: snikket_web/templates/admin_system.html:71
|
||||
msgid "Storage used by shared files"
|
||||
msgstr "Stockage utilisé par les fichiers partagés"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/admin_system.html:79
|
||||
msgid "Connected devices"
|
||||
@@ -1319,22 +1314,22 @@ msgid ""
|
||||
"You can now safely close this page, or log in to the web portal to <a href="
|
||||
"\"%(login_url)s\">manage your account</a>."
|
||||
msgstr ""
|
||||
"Vous pouvez maintenant fermer cette page en toute sécurité, ou vous "
|
||||
"connecter au portail web pour <a href=\"%(login_url)s\">gérer votre "
|
||||
"compte</a>."
|
||||
|
||||
#: snikket_web/templates/invite_success.html:21
|
||||
#, fuzzy
|
||||
#| msgid "Operation successful"
|
||||
msgid "Import successful"
|
||||
msgstr "Importation réussie"
|
||||
msgstr "Opération réussie"
|
||||
|
||||
#: snikket_web/templates/invite_success.html:22
|
||||
msgid "Congratulations! Your account data has been successfully imported."
|
||||
msgstr ""
|
||||
"Félicitations ! Les données de votre compte ont été importées avec succès."
|
||||
|
||||
#: snikket_web/templates/invite_success.html:26
|
||||
#, fuzzy
|
||||
#| msgid "Using the Snikket app"
|
||||
msgid "Moving to Snikket?"
|
||||
msgstr "Nouveau utilisateur Snikket ?"
|
||||
msgstr "En utilisant l’application Snikket"
|
||||
|
||||
#: snikket_web/templates/invite_success.html:27
|
||||
msgid ""
|
||||
@@ -1343,15 +1338,10 @@ msgid ""
|
||||
"information, etc.) from your previous account. When you have exported the "
|
||||
"data from your previous account, upload it using the form below."
|
||||
msgstr ""
|
||||
"Si vous passez d'une autre instance de Snikket ou d'un autre service "
|
||||
"compatible XMPP, vous pouvez éventuellement importer les données (contacts, "
|
||||
"informations de profil, etc.) de votre ancien compte. Lorsque vous avez "
|
||||
"exporté les données de votre ancien compte, téléchargez-les en utilisant le "
|
||||
"formulaire ci-dessous."
|
||||
|
||||
#: snikket_web/templates/invite_success.html:30
|
||||
msgid "Upload account data"
|
||||
msgstr "Télécharger les données du compte"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:6
|
||||
#, python-format
|
||||
@@ -1406,9 +1396,10 @@ msgstr "Télécharger sur l’App Store"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:32
|
||||
msgid "Get it on F-Droid"
|
||||
msgstr "Obtenez-le sur F-Droid"
|
||||
msgstr ""
|
||||
|
||||
#: snikket_web/templates/invite_view.html:35
|
||||
#, fuzzy
|
||||
msgid "Send to mobile device"
|
||||
msgstr "Envoyer vers l'appareil"
|
||||
|
||||
@@ -1487,14 +1478,10 @@ msgid ""
|
||||
"After downloading Snikket from the App Store, you have to return to this "
|
||||
"invite link and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
"Après avoir téléchargé Snikket depuis l'App Store, vous devez revenir à ce "
|
||||
"lien d'invitation et cliquer sur \"Ouvrir l'application\" pour continuer."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:101
|
||||
msgid "First download Snikket from the App Store using the button below:"
|
||||
msgstr ""
|
||||
"Téléchargez d'abord Snikket depuis l'App Store en utilisant le bouton ci-"
|
||||
"dessous :"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:103
|
||||
#: snikket_web/templates/invite_view.html:131
|
||||
@@ -1502,9 +1489,6 @@ msgid ""
|
||||
"After the installation is complete, you can return to this page and tap the "
|
||||
"\"Open the app\" button to continue with the setup:"
|
||||
msgstr ""
|
||||
"Une fois l'installation terminée, vous pouvez revenir à cette page et "
|
||||
"appuyer sur le bouton \"Ouvrir l'application\" pour poursuivre la "
|
||||
"configuration :"
|
||||
|
||||
#: snikket_web/templates/invite_view.html:121
|
||||
#: snikket_web/templates/invite_view.html:130
|
||||
@@ -1516,13 +1500,10 @@ msgid ""
|
||||
"After installing Snikket via F-Droid, you have to return to this invite link "
|
||||
"and tap on \"Open the app\" to proceed."
|
||||
msgstr ""
|
||||
"Après avoir installé Snikket via F-Droid, vous devez revenir à ce lien "
|
||||
"d'invitation et appuyer sur \"Ouvrir l'application\" pour continuer."
|
||||
|
||||
#: snikket_web/templates/invite_view.html:129
|
||||
msgid "First install Snikket from F-Droid using the button below:"
|
||||
msgstr ""
|
||||
"Installez d'abord Snikket depuis F-Droid en utilisant le bouton ci-dessous :"
|
||||
|
||||
#: snikket_web/templates/library.j2:18
|
||||
msgid "Copy link"
|
||||
@@ -1589,8 +1570,10 @@ msgstr "Éditer votre profil"
|
||||
|
||||
#: snikket_web/templates/user_home.html:33
|
||||
#: snikket_web/templates/user_manage_data.html:4
|
||||
#, fuzzy
|
||||
#| msgid "Manage users"
|
||||
msgid "Manage your data"
|
||||
msgstr "Gérer vos données"
|
||||
msgstr "Gérer les utilisateurs"
|
||||
|
||||
#: snikket_web/templates/user_home.html:39
|
||||
msgid "Your Snikket"
|
||||
@@ -1618,16 +1601,16 @@ msgstr ""
|
||||
"autres appareils connectés."
|
||||
|
||||
#: snikket_web/templates/user_manage_data.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Your account"
|
||||
msgid "Export account"
|
||||
msgstr "Exportation du compte"
|
||||
msgstr "Votre compte"
|
||||
|
||||
#: snikket_web/templates/user_manage_data.html:9
|
||||
msgid ""
|
||||
"Download your account data as a file for backup purposes or to move your "
|
||||
"account to another service."
|
||||
msgstr ""
|
||||
"Téléchargez les données de votre compte sous forme d'un fichier à des fins "
|
||||
"de sauvegarde ou pour transférer votre compte vers un autre service."
|
||||
|
||||
#: snikket_web/templates/user_passwd.html:5
|
||||
msgid "Change your password"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -59,7 +59,7 @@ _ACCESS_MODEL_CHOICES = [
|
||||
|
||||
|
||||
class ProfileForm(BaseForm):
|
||||
nickname = wtforms.TextField(
|
||||
nickname = wtforms.StringField(
|
||||
_l("Display name"),
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user