Commit 2a2e78f8 authored by Pierre-antoine Comby's avatar Pierre-antoine Comby

Merge branch 'frontend_translation' into 'master'

Frontend translation

See merge request !3
parents 4879af3f 6c62f121
Pipeline #1441 passed with stage
in 2 minutes and 48 seconds
......@@ -3,12 +3,10 @@ source =
activity
member
note
theme
omit =
activity/tests/*.py
activity/migrations/*.py
member/tests/*.py
member/migrations/*.py
note/tests/*.py
note/migrations/*.py
theme/tests/*.py
\ No newline at end of file
note/migrations/*.py
\ No newline at end of file
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-16 13:45+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \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"
#: apps.py:11 models.py:61
msgid "activity"
msgstr "activité"
#: models.py:12 models.py:29
msgid "name"
msgstr "nom"
#: models.py:16
msgid "can invite"
msgstr "peut inviter"
#: models.py:19
msgid "guest entry fee"
msgstr "cotisation de l'entrée invité"
#: models.py:23
msgid "activity type"
msgstr "type d'activité"
#: models.py:24
msgid "activity types"
msgstr "types d'activité"
#: models.py:33
msgid "description"
msgstr "description"
#: models.py:39
msgid "type"
msgstr "type"
#: models.py:45
msgid "organizer"
msgstr "organisateur"
#: models.py:51
msgid "attendees club"
msgstr ""
#: models.py:54
msgid "start date"
msgstr "date de début"
#: models.py:57
msgid "end date"
msgstr "date de fin"
#: models.py:62
msgid "activities"
msgstr "activités"
#: models.py:88
msgid "guest"
msgstr "invité"
#: models.py:89
msgid "guests"
msgstr "invités"
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-16 15:21+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \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"
#: apps.py:11
msgid "member"
msgstr "adhérent"
#: models.py:24
msgid "phone number"
msgstr "numéro de téléphone"
#: models.py:30
msgid "section"
msgstr "section"
#: models.py:31
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
#: models.py:37
msgid "address"
msgstr "adresse"
#: models.py:43
msgid "paid"
msgstr "payé"
#: models.py:48 models.py:49
msgid "user profile"
msgstr "profil utilisateur"
#: models.py:57 models.py:102
msgid "name"
msgstr "nom"
#: models.py:62
msgid "email"
msgstr "courriel"
#: models.py:67
msgid "membership fee"
msgstr "cotisation pour adhérer"
#: models.py:71
msgid "membership duration"
msgstr "durée de l'adhésion"
#: models.py:72
msgid "The longest time a membership can last (NULL = infinite)."
msgstr "La durée maximale d'une adhésion (NULL = infinie)."
#: models.py:77
msgid "membership start"
msgstr "début de l'adhésion"
#: models.py:78
msgid "How long after January 1st the members can renew their membership."
msgstr ""
#: models.py:83
msgid "membership end"
msgstr "fin de l'adhésion"
#: models.py:84
msgid ""
"How long the membership can last after January 1st of the next year after "
"members can renew their membership."
msgstr ""
#: models.py:90
msgid "club"
msgstr "club"
#: models.py:91
msgid "clubs"
msgstr "clubs"
#: models.py:108
msgid "role"
msgstr "rôle"
#: models.py:109
msgid "roles"
msgstr "rôles"
#: models.py:126
msgid "membership starts on"
msgstr "l'adhésion commence le"
#: models.py:129
msgid "membership ends on"
msgstr "l'adhésion finie le"
#: models.py:133
msgid "fee"
msgstr "cotisation"
#: models.py:137
msgid "membership"
msgstr "adhésion"
#: models.py:138
msgid "memberships"
msgstr "adhésions"
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-24 22:37+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \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"
#: admin.py:112 models/transactions.py:46
msgid "source"
msgstr "source"
#: admin.py:120 admin.py:148 models/transactions.py:25
#: models/transactions.py:52
msgid "destination"
msgstr "destination"
#: apps.py:15 models/notes.py:47
msgid "note"
msgstr "note"
#: models/notes.py:24
msgid "account balance"
msgstr "solde du compte"
#: models/notes.py:25
msgid "in centimes, money credited for this instance"
msgstr "en centimes, argent crédité pour cette instance"
#: models/notes.py:29
msgid "active"
msgstr "actif"
#: models/notes.py:32
msgid ""
"Designates whether this note should be treated as active. Unselect this "
"instead of deleting notes."
msgstr ""
"Indique si la note est active. Désactiver cela plutôt que supprimer la note."
#: models/notes.py:37
msgid "display image"
msgstr "image affichée"
#: models/notes.py:42 models/transactions.py:55
msgid "created at"
msgstr "créée le"
#: models/notes.py:48
msgid "notes"
msgstr "notes"
#: models/notes.py:56
msgid "Note"
msgstr "Note"
#: models/notes.py:66 models/notes.py:88
msgid "This alias is already taken."
msgstr "Cet alias est déjà pris."
#: models/notes.py:103
msgid "user"
msgstr "utilisateur"
#: models/notes.py:107
msgid "one's note"
msgstr "note d'un utilisateur"
#: models/notes.py:108
msgid "users note"
msgstr "notes des utilisateurs"
#: models/notes.py:114
#, python-format
msgid "%(user)s's note"
msgstr "Note de %(user)s"
#: models/notes.py:125
msgid "club"
msgstr "club"
#: models/notes.py:129
msgid "club note"
msgstr "note d'un club"
#: models/notes.py:130
msgid "clubs notes"
msgstr "notes des clubs"
#: models/notes.py:136
#, python-format
msgid "Note for %(club)s club"
msgstr "Note du club %(club)s"
#: models/notes.py:149 models/transactions.py:32 models/transactions.py:66
msgid "type"
msgstr "type"
#: models/notes.py:155
msgid "special note"
msgstr "note spéciale"
#: models/notes.py:156
msgid "special notes"
msgstr "notes spéciales"
#: models/notes.py:167 models/transactions.py:18
msgid "name"
msgstr "nom"
#: models/notes.py:173
msgid "Invalid alias"
msgstr "Alias invalide"
#: models/notes.py:189
msgid "alias"
msgstr "alias"
#: models/notes.py:190
msgid "aliases"
msgstr "alias"
#: models/notes.py:218
msgid "Alias too long."
msgstr "L'alias est trop long."
#: models/notes.py:221
msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà."
#: models/transactions.py:28 models/transactions.py:63
msgid "amount"
msgstr "montant"
#: models/transactions.py:29
msgid "in centimes"
msgstr "en centimes"
#: models/transactions.py:37
msgid "transaction template"
msgstr "modèle de transaction"
#: models/transactions.py:38
msgid "transaction templates"
msgstr "modèles de transaction"
#: models/transactions.py:59
msgid "quantity"
msgstr "quantité"
#: models/transactions.py:70
msgid "reason"
msgstr "raison"
#: models/transactions.py:74
msgid "valid"
msgstr "valide"
#: models/transactions.py:79
msgid "transaction"
msgstr "transaction"
#: models/transactions.py:80
msgid "transactions"
msgstr "transactions"
#: models/transactions.py:116
msgid "membership transaction"
msgstr "transaction d'adhésion"
#: models/transactions.py:117
msgid "membership transactions"
msgstr "transactions d'adhésion"
#: templates/note/transaction_form.html:10
msgid "Home"
msgstr "Accueil"
#: templates/note/transaction_form.html:53
msgid "Transfer"
msgstr "Virement"
#: views.py:26
msgid "Transfer money from your account to one or others"
msgstr "Transfert d'argent de ton compte vers un ou plusieurs autres"
This diff is collapsed.
......@@ -10,7 +10,7 @@ from django.utils.translation import gettext_lazy as _
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_DIR = os.path.dirname(os.path.realpath(__file__))
APPS_DIR = os.path.realpath(os.path.join(BASE_DIR,"apps"))
APPS_DIR = os.path.realpath(os.path.join(BASE_DIR, "apps"))
sys.path.append(APPS_DIR)
# Quick-start development settings - unsuitable for production
......@@ -76,7 +76,7 @@ ROOT_URLCONF = 'note_kfet.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
......@@ -127,7 +127,7 @@ AUTHENTICATION_BACKENDS = (
'guardian.backends.ObjectPermissionBackend',
)
ANONYMOUS_USER_NAME = None # Disable guardian anonymous user
ANONYMOUS_USER_NAME = None # Disable guardian anonymous user
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'
......@@ -149,6 +149,8 @@ USE_L10N = True
USE_TZ = True
LOCALE_PATHS = [os.path.join(BASE_DIR, "locale")]
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
......@@ -158,7 +160,7 @@ USE_TZ = True
# Example: "/var/www/example.com/static/"
STATIC_ROOT = os.path.realpath(__file__)
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')]
os.path.join(BASE_DIR, 'static')]
CRISPY_TEMPLATE_PACK = 'bootstrap4'
DJANGO_TABLES2_TEMPLATE = 'django_tables2/bootstrap4.html'
......
......@@ -14,9 +14,8 @@ urlpatterns = [
path('note/', include('note.urls')),
# Include Django Contrib and Core routers
# admin/login/ is redirected to the non-admin login page
path('i18n/', include('django.conf.urls.i18n')),
path('accounts/',include('member.urls')),
path('accounts/', include('member.urls')),
path('accounts/', include('django.contrib.auth.urls')),
path('admin/doc/', include('django.contrib.admindocs.urls')),
path('admin/', admin.site.urls),
......
/* Footer en bas */
html {
position: relative;
min-height: 100%;
}
body {
margin-bottom: 70px; /* Margin bottom by footer height */
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
height: 60px; /* Set the fixed height of the footer here */
line-height: 60px; /* Vertically center the text there */
background-color: #f5f5f5;
}
/* Affichage des accords dans les interlignes */
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/static/favicon/mstile-150x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>
This diff is collapsed.
{
"name": "",
"short_name": "",
"icons": [
{
"src": "/static/favicon/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/static/favicon/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}
This diff is collapsed.
{% extends "base.html" %}
{% load static %}
{% load i18n static %}
{% block content %}
<h3>Compte n° {{ object.pk }}</h3>
<img src="{{ object.note.display_image.url }}" alt=""/>
<dl class="row">
<dt class="col-6 col-md-3">{% trans 'name'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.name }}</dd>
<dt class="col-6 col-md-3">{% trans 'first name'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.first_name }}</dd>
<dt class="col-6 col-md-3">{% trans 'username'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.username }}</dd>
<dt class="col-6 col-md-3">Aliases</dt>
<dd class="col-6 col-md-3">{{ object.user.note.aliases_set.all }}</dd>
<dt class="col-6 col-md-3">{% trans 'section'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.section }}</dd>
<dt class="col-6 col-md-3">{% trans 'address'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.address }}</dd>
<dt class="col-6 col-md-3">{% trans 'balance'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.note.balance }}</dd>
</dl>
<h5>Compte n° {{object.pk}}</h5>
<table>
<tr>
<td> <img src="{{ object.note.display_image.url }}" alt="" /> </td>
</tr>
<tr><th> Nom</th><td>{{ object.user.name }}</td></tr>
<tr><th>Prénom </th><td>{{object.user.first_name}}</td></tr>
<tr><th>Pseudo</th><td> {{object.user.username}}</td></tr>
<tr><th> Aliases</th><td>{{object.user.note.aliases_set.all }}</td></tr>
<tr><th>Pseudo</th><td> {{object.user.username}}</td></tr>
<tr><th>Section</th><td> {{object.section}}</td></tr>
<tr><th>Adresse</th><td> {{object.address}}</td></tr>
<tr><th>Solde</th><td> {{object.user.note.balance}}</td></tr>
</table>
<a href="{% url "password_change" %}">{% trans 'Change password' %}</a>
{% endblock %}
......@@ -4,12 +4,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'index' %}">{% trans 'Home' %}</a>
</div>
{% endblock %}
{% block content %}
<p>{% trans "Thanks for spending some quality time with the Web site today." %}</p>
<p><a href="{% url 'index' %}">{% trans 'Log in again' %}</a></p>
......
......@@ -2,16 +2,24 @@
{% comment %}
SPDX-License-Identifier: GPL-2.0-or-later
{% endcomment %}
{% load i18n crispy_forms_tags %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block title %}{% trans "Log in" %}{% endblock %}
{% block contenttitle %}<h1>{% trans "Log in" %}</h1>{% endblock %}
{% block content %}
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form | crispy }}
<button type="submit">Login</button>
</form>
{% if user.is_authenticated %}
<p class="errornote">
{% blocktrans trimmed %}
You are authenticated as {{ username }}, but are not authorized to
access this page. Would you like to login to a different account?
{% endblocktrans %}
</p>
{% endif %}
<form action="{{ app_path }}" method="post" id="login-form">{% csrf_token %}
{{ form | crispy }}
<input type="submit" value="{% trans 'Log in' %}" class="btn btn-primary">
<a href="{% url 'password_reset' %}" class="badge badge-light">{% trans 'Forgotten your password or username?' %}</a>
</form>
{% endblock %}
......@@ -4,8 +4,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'index' %}">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password change' %}
</div>
{% block content %}
<p>{% trans 'Your password was changed.' %}</p>
{% endblock %}
......@@ -2,10 +2,12 @@
{% comment %}
SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% load i18n crispy_forms_tags %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'index' %}">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password change' %}
</div>
{% endblock %}
{% block content %}
<form method="post">{% csrf_token %}
<p>{% trans "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." %}</p>
{{ form | crispy }}
<input class="btn btn-primary" type="submit" value="{% trans 'Change my password' %}">
</form>
{% endblock %}
\ No newline at end of file
......@@ -4,8 +4,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'index' %}">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}
</div>
{% block content %}
<p>{% trans "Your password has been set. You may go ahead and log in now." %}</p>
<p>
<a href="{{ login_url }}" class="btn btn-success">{% trans 'Log in' %}</a>
</p>
{% endblock %}
......@@ -2,10 +2,16 @@
{% comment %}
SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% load i18n crispy_forms_tags %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'index' %}">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset confirmation' %}
</div>
{% block content %}
{% if validlink %}
<p>{% trans "Please enter your new password twice so we can verify you typed it in correctly." %}</p>
<form method="post">{% csrf_token %}
{{ form | crispy }}
<input class="btn btn-primary" type="submit" value="{% trans 'Change my password' %}">
</form>
{% else %}
<p>{% trans "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %}</p>
{% endif %}
{% endblock %}
......@@ -4,8 +4,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'index' %}">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}
</div>
{% block content %}
<p>{% trans "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly." %}</p>
<p>{% trans "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder." %}</p>
{% endblock %}
{% load i18n %}{% autoescape off %}
{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}
{% trans "Please go to the following page and choose a new password:" %}
{% block reset_link %}
{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
{% endblock %}
{% trans "Thanks for using our site!" %}
{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
{% endautoescape %}
......@@ -2,10 +2,12 @@
{% comment %}
SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% load i18n crispy_forms_tags %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'index' %}">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}
</div>
{% block content %}
<p>{% trans "Forgotten your password? Enter your email address below, and we'll email instructions for setting a new one." %}</p>
<form method="post">{% csrf_token %}
{{ form | crispy }}
<input class="btn btn-primary" type="submit" value="{% trans 'Reset my password' %}">
</form>
{% endblock %}
......@@ -28,7 +28,7 @@ deps =
pyflakes
pylint
commands =
flake8 activity member note
flake8 app/activity app/member app/note
pylint .
[flake8]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment