1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-04-26 08:32:38 +00:00

permission, fixture, translation (fr), bug fixes

This commit is contained in:
quark 2025-04-24 20:50:32 +02:00
parent 6d6583bfe6
commit a2b42c5329
4 changed files with 585 additions and 698 deletions

View File

@ -0,0 +1,100 @@
[
{
"model": "food.allergen",
"pk": 1,
"fields": {
"name": "Lait"
}
},
{
"model": "food.allergen",
"pk": 2,
"fields": {
"name": "Oeufs"
}
},
{
"model": "food.allergen",
"pk": 3,
"fields": {
"name": "Gluten"
}
},
{
"model": "food.allergen",
"pk": 4,
"fields": {
"name": "Fruits à coques"
}
},
{
"model": "food.allergen",
"pk": 5,
"fields": {
"name": "Arachides"
}
},
{
"model": "food.allergen",
"pk": 6,
"fields": {
"name": "Sésame"
}
},
{
"model": "food.allergen",
"pk": 7,
"fields": {
"name": "Soja"
}
},
{
"model": "food.allergen",
"pk": 8,
"fields": {
"name": "Céléri"
}
},
{
"model": "food.allergen",
"pk": 9,
"fields": {
"name": "Lupin"
}
},
{
"model": "food.allergen",
"pk": 10,
"fields": {
"name": "Moutarde"
}
},
{
"model": "food.allergen",
"pk": 11,
"fields": {
"name": "Sulfites"
}
},
{
"model": "food.allergen",
"pk": 12,
"fields": {
"name": "Crustacés"
}
},
{
"model": "food.allergen",
"pk": 13,
"fields": {
"name": "Mollusques"
}
},
{
"model": "food.allergen",
"pk": 14,
"fields": {
"name": "Poissons"
}
}
]

View File

@ -73,7 +73,13 @@ class FoodListView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin, Li
PermissionBackend.filter_queryset(self.request, Food, 'view')) PermissionBackend.filter_queryset(self.request, Food, 'view'))
# table served # table served
served_table = self.get_queryset().order_by('-pk').filter( served_table = self.get_queryset().order_by('-pk').filter(
end_of_life='', is_ready=True) end_of_life='', is_ready=True).filter(
Q(polymorphic_ctype__model='basicfood',
basicfood__date_type='DLC',
expiry_date__lte=timezone.now(),)
| Q(polymorphic_ctype__model='transformedfood',
expiry_date__lte=timezone.now(),
))
# tables club # tables club
bureau_role_pk = 4 bureau_role_pk = 4
clubs = Club.objects.filter(membership__in=Membership.objects.filter( clubs = Club.objects.filter(membership__in=Membership.objects.filter(
@ -354,7 +360,7 @@ class FoodDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
value) for field, value in fields.items()] value) for field, value in fields.items()]
context["meals"] = self.object.transformed_ingredient_inv.all() context["meals"] = self.object.transformed_ingredient_inv.all()
context["update"] = PermissionBackend.check_perm(self.request, "food.change_food") context["update"] = PermissionBackend.check_perm(self.request, "food.change_food")
context["add_ingredient"] = self.object.end_of_life = '' and PermissionBackend.check_perm(self.request, "food.change_transformedfood") context["add_ingredient"] = (self.object.end_of_life == '' and PermissionBackend.check_perm(self.request, "food.change_transformedfood"))
return context return context
def get(self, *args, **kwargs): def get(self, *args, **kwargs):

View File

@ -3312,14 +3312,13 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"transformedfood" "qrcode"
], ],
"query": "{}", "query": "{}",
"type": "view", "type": "view",
"mask": 3, "mask": 2,
"field": "",
"permanent": false, "permanent": false,
"description": "Voir tout les plats" "description": "Voir n'importe quel QR-code"
} }
}, },
{ {
@ -3328,14 +3327,13 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"transformedfood" "allergen"
], ],
"query": "{\"owner\": [\"club\"]}", "query": "{}",
"type": "view", "type": "view",
"mask": 3, "mask": 1,
"field": "",
"permanent": false, "permanent": false,
"description": "Voir tout les plats de son club" "description": "Voir n'importe quel allergène"
} }
}, },
{ {
@ -3344,14 +3342,13 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"transformedfood" "food"
], ],
"query": "{\"is_ready\": true}", "query": "{}",
"type": "view", "type": "view",
"mask": 1, "mask": 2,
"field": "",
"permanent": false, "permanent": false,
"description": "Voir les plats préparés actifs servis" "description": "Voir n'importe quelle bouffe"
} }
}, },
{ {
@ -3364,10 +3361,9 @@
], ],
"query": "{}", "query": "{}",
"type": "add", "type": "add",
"mask": 3, "mask": 2,
"field": "",
"permanent": false, "permanent": false,
"description": "Initialiser un QR code de traçabilité" "description": "Ajouter n'importe quel QR-code"
} }
}, },
{ {
@ -3376,14 +3372,13 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"basicfood" "food"
], ],
"query": "{\"owner\": [\"club\"]}", "query": "{}",
"type": "add", "type": "add",
"mask": 3, "mask": 2,
"field": "",
"permanent": false, "permanent": false,
"description": "Créer un nouvel ingrédient pour son club" "description": "Ajouter n'importe quelle bouffe"
} }
}, },
{ {
@ -3392,14 +3387,13 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"basicfood" "food"
], ],
"query": "{}", "query": "{}",
"type": "add", "type": "change",
"mask": 3, "mask": 2,
"field": "",
"permanent": false, "permanent": false,
"description": "Créer un nouvel ingrédient" "description": "Modifier n'importe quelle bouffe"
} }
}, },
{ {
@ -3408,14 +3402,13 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"basicfood" "qrcode"
], ],
"query": "{}", "query": "{\"food_container__owner\": [\"club\"]}",
"type": "view", "type": "view",
"mask": 3, "mask": 2,
"field": "",
"permanent": false, "permanent": false,
"description": "Voir toute la bouffe" "description": "Voir un QR-code lié à son club"
} }
}, },
{ {
@ -3424,14 +3417,13 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"basicfood" "food"
], ],
"query": "{\"is_ready\": true}", "query": "{\"owner\": [\"club\"]}",
"type": "view", "type": "view",
"mask": 3, "mask": 2,
"field": "",
"permanent": false, "permanent": false,
"description": "Voir toute la bouffe active" "description": "Voir la bouffe de son club"
} }
}, },
{ {
@ -3440,14 +3432,13 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"basicfood" "qrcode"
], ],
"query": "{\"is_ready\": true, \"owner\": [\"club\"]}", "query": "{\"food_container__owner\": [\"club\"]}",
"type": "view", "type": "add",
"mask": 3, "mask": 2,
"field": "",
"permanent": false, "permanent": false,
"description": "Voir la bouffe active de son club" "description": "Ajouter un QR-code pour son club"
} }
}, },
{ {
@ -3456,14 +3447,13 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"basicfood" "food"
], ],
"query": "{}", "query": "{\"owner\": [\"club\"]}",
"type": "change", "type": "add",
"mask": 3, "mask": 2,
"field": "",
"permanent": false, "permanent": false,
"description": "Modifier de la bouffe" "description": "Ajouter de la bouffe appartenant à son club"
} }
}, },
{ {
@ -3472,270 +3462,28 @@
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"basicfood" "food"
], ],
"query": "{\"is_ready\": true}", "query": "{\"owner\": [\"club\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 2,
"field": "allergens",
"permanent": false, "permanent": false,
"description": "Modifier les allergènes de la bouffe existante" "description": "Modifier la bouffe appartenant à son club"
} }
}, },
{ {
"model": "permission.permission", "model": "permission.permission",
"pk": 222, "pk": 222,
"fields": {
"model": [
"food",
"basicfood"
],
"query": "{\"is_ready\": true, \"owner\": [\"club\"]}",
"type": "change",
"mask": 3,
"field": "allergens",
"permanent": false,
"description": "Modifier les allergènes de la bouffe appartenant à son club"
}
},
{
"model": "permission.permission",
"pk": 223,
"fields": {
"model": [
"food",
"transformedfood"
],
"query": "{}",
"type": "add",
"mask": 3,
"field": "",
"permanent": false,
"description": "Créer un plat"
}
},
{
"model": "permission.permission",
"pk": 224,
"fields": {
"model": [
"food",
"transformedfood"
],
"query": "{\"owner\": [\"club\"]}",
"type": "add",
"mask": 3,
"field": "",
"permanent": false,
"description": "Créer un plat pour son club"
}
},
{
"model": "permission.permission",
"pk": 225,
"fields": {
"model": [
"food",
"transformedfood"
],
"query": "{}",
"type": "change",
"mask": 3,
"field": "",
"permanent": false,
"description": "Modifier tout les plats"
}
},
{
"model": "permission.permission",
"pk": 226,
"fields": {
"model": [
"food",
"transformedfood"
],
"query": "{\"is_ready\": true}",
"type": "change",
"mask": 3,
"field": "end_of_life",
"permanent": false,
"description": "Indiquer si un plat a été mangé"
}
},
{
"model": "permission.permission",
"pk": 227,
"fields": {
"model": [
"food",
"transformedfood"
],
"query": "{\"is_ready\": true, \"owner\": [\"club\"]}",
"type": "change",
"mask": 3,
"field": "is_ready",
"permanent": false,
"description": "Indiquer si un plat de son club est prêt"
}
},
{
"model": "permission.permission",
"pk": 228,
"fields": {
"model": [
"food",
"transformedfood"
],
"query": "{\"is_ready\": true}",
"type": "change",
"mask": 3,
"field": "is_ready",
"permanent": false,
"description": "Archiver un plat"
}
},
{
"model": "permission.permission",
"pk": 229,
"fields": {
"model": [
"food",
"basicfood"
],
"query": "{\"is_ready\": true}",
"type": "change",
"mask": 3,
"field": "is_ready",
"permanent": false,
"description": "Archiver de la bouffe"
}
},
{
"model": "permission.permission",
"pk": 231,
"fields": {
"model": [
"food",
"qrcode"
],
"query": "{}",
"type": "view",
"mask": 3,
"field": "",
"permanent": false,
"description": "Voir tous les QR codes"
}
},
{
"model": "permission.permission",
"pk": 232,
"fields": {
"model": [
"food",
"qrcode"
],
"query": "{\"food_container__is_ready\": true}",
"type": "view",
"mask": 3,
"field": "",
"permanent": false,
"description": "Voir tous les QR codes actifs"
}
},
{
"model": "permission.permission",
"pk": 233,
"fields": {
"model": [
"food",
"qrcode"
],
"query": "{\"food_container__owner\": [\"club\"], \"food_container__is_ready\": true}",
"type": "view",
"mask": 3,
"field": "",
"permanent": false,
"description": "Voir tous les QR codes actifs de son club"
}
},
{
"model": "permission.permission",
"pk" : 234,
"fields": {
"model": [
"food",
"transformedfood"
],
"query": "{\"owner\": [\"club\"]}",
"type": "change",
"mask": 3,
"field": "ingredients",
"permanent": false,
"description": "Changer les ingrédients d'un plat actif de son club"
}
},
{
"model": "permission.permission",
"pk": 235,
"fields": { "fields": {
"model": [ "model": [
"food", "food",
"food" "food"
], ],
"query": "{}", "query": "{\"end_of_life\": \"\"}",
"type": "view", "type": "view",
"mask": 3, "mask": 1,
"field": "",
"permanent": false, "permanent": false,
"description": "Voir bouffe" "description": "Voir la bouffe servie"
}
},
{
"model": "permission.permission",
"pk": 236,
"fields": {
"model": [
"food",
"food"
],
"query": "[]",
"type": "view",
"mask": 3,
"field": "",
"permanent": false,
"description": "Voir bouffe active"
}
},
{
"model": "permission.permission",
"pk": 237,
"fields": {
"model": [
"food",
"food"
],
"query": "{\"owner\": [\"club\"]}",
"type": "view",
"mask": 3,
"field": "",
"permanent": false,
"description": "Voir bouffe active de son club"
}
},
{
"model": "permission.permission",
"pk": 238,
"fields": {
"model": [
"food",
"food"
],
"query": "{}",
"type": "change",
"mask": 3,
"field": "",
"permanent": false,
"description": "Modifier bouffe"
} }
}, },
{ {
@ -4343,7 +4091,8 @@
158, 158,
159, 159,
160, 160,
213 212,
222
] ]
} }
}, },
@ -4384,16 +4133,11 @@
50, 50,
141, 141,
169, 169,
212, 217,
214, 218,
215,
219, 219,
222, 220,
224, 221,
227,
233,
234,
237,
247, 247,
258, 258,
259 259
@ -4574,20 +4318,7 @@
166, 166,
167, 167,
168, 168,
182, 182
212,
214,
215,
218,
221,
224,
226,
227,
228,
229,
232,
234,
236
] ]
} }
}, },
@ -4795,8 +4526,7 @@
168, 168,
176, 176,
177, 177,
197, 197
211
] ]
} }
}, },
@ -4824,15 +4554,11 @@
"permissions": [ "permissions": [
137, 137,
211, 211,
212,
213,
214, 214,
216, 215,
217, 216
220,
223,
225,
231,
235,
238
] ]
} }
}, },

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 11:16+0100\n" "POT-Creation-Date: 2025-04-24 18:22+0200\n"
"PO-Revision-Date: 2022-04-11 22:05+0200\n" "PO-Revision-Date: 2022-04-11 22:05+0200\n"
"Last-Translator: bleizi <bleizi@crans.org>\n" "Last-Translator: bleizi <bleizi@crans.org>\n"
"Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n" "Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n"
@ -25,7 +25,7 @@ msgid "This opener already exists"
msgstr "Cette amitié existe déjà" msgstr "Cette amitié existe déjà"
#: apps/activity/apps.py:10 apps/activity/models.py:129 #: apps/activity/apps.py:10 apps/activity/models.py:129
#: apps/activity/models.py:169 apps/activity/models.py:328 #: apps/activity/models.py:169 apps/activity/models.py:329
msgid "activity" msgid "activity"
msgstr "activité" msgstr "activité"
@ -37,29 +37,29 @@ msgstr "La note du club est inactive."
msgid "The end date must be after the start date." msgid "The end date must be after the start date."
msgstr "La date de fin doit être après celle de début." msgstr "La date de fin doit être après celle de début."
#: apps/activity/forms.py:83 apps/activity/models.py:276 #: apps/activity/forms.py:83 apps/activity/models.py:277
msgid "You can't invite someone once the activity is started." msgid "You can't invite someone once the activity is started."
msgstr "" msgstr ""
"Vous ne pouvez pas inviter quelqu'un une fois que l'activité a démarré." "Vous ne pouvez pas inviter quelqu'un une fois que l'activité a démarré."
#: apps/activity/forms.py:86 apps/activity/models.py:279 #: apps/activity/forms.py:86 apps/activity/models.py:280
msgid "This activity is not validated yet." msgid "This activity is not validated yet."
msgstr "Cette activité n'est pas encore validée." msgstr "Cette activité n'est pas encore validée."
#: apps/activity/forms.py:96 apps/activity/models.py:287 #: apps/activity/forms.py:96 apps/activity/models.py:288
msgid "This person has been already invited 5 times this year." msgid "This person has been already invited 5 times this year."
msgstr "Cette personne a déjà été invitée 5 fois cette année." msgstr "Cette personne a déjà été invitée 5 fois cette année."
#: apps/activity/forms.py:100 apps/activity/models.py:291 #: apps/activity/forms.py:100 apps/activity/models.py:292
msgid "This person is already invited." msgid "This person is already invited."
msgstr "Cette personne est déjà invitée." msgstr "Cette personne est déjà invitée."
#: apps/activity/forms.py:104 apps/activity/models.py:295 #: apps/activity/forms.py:104 apps/activity/models.py:296
msgid "You can't invite more than 3 people to this activity." msgid "You can't invite more than 3 people to this activity."
msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité." msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
#: apps/activity/models.py:28 apps/activity/models.py:63 apps/food/models.py:42 #: apps/activity/models.py:28 apps/activity/models.py:63 apps/food/models.py:18
#: apps/food/models.py:56 apps/member/models.py:203 #: apps/food/models.py:35 apps/member/models.py:203
#: apps/member/templates/member/includes/club_info.html:4 #: apps/member/templates/member/includes/club_info.html:4
#: apps/member/templates/member/includes/profile_info.html:4 #: apps/member/templates/member/includes/profile_info.html:4
#: apps/note/models/notes.py:263 apps/note/models/transactions.py:26 #: apps/note/models/notes.py:263 apps/note/models/transactions.py:26
@ -121,7 +121,7 @@ msgid "type"
msgstr "type" msgstr "type"
#: apps/activity/models.py:91 apps/logs/models.py:22 apps/member/models.py:325 #: apps/activity/models.py:91 apps/logs/models.py:22 apps/member/models.py:325
#: apps/note/models/notes.py:148 apps/treasury/models.py:293 #: apps/note/models/notes.py:148 apps/treasury/models.py:294
#: apps/wei/models.py:171 apps/wei/templates/wei/attribute_bus_1A.html:13 #: apps/wei/models.py:171 apps/wei/templates/wei/attribute_bus_1A.html:13
#: apps/wei/templates/wei/survey.html:15 #: apps/wei/templates/wei/survey.html:15
msgid "user" msgid "user"
@ -205,21 +205,21 @@ msgstr "Entrée de la note {note} pour l'activité « {activity} »"
msgid "Already entered on " msgid "Already entered on "
msgstr "Déjà rentré·e le " msgstr "Déjà rentré·e le "
#: apps/activity/models.py:204 apps/activity/tables.py:58 #: apps/activity/models.py:205 apps/activity/tables.py:58
msgid "{:%Y-%m-%d %H:%M:%S}" msgid "{:%Y-%m-%d %H:%M:%S}"
msgstr "{:%d/%m/%Y %H:%M:%S}" msgstr "{:%d/%m/%Y %H:%M:%S}"
#: apps/activity/models.py:212 #: apps/activity/models.py:213
msgid "The balance is negative." msgid "The balance is negative."
msgstr "La note est en négatif." msgstr "La note est en négatif."
#: apps/activity/models.py:242 #: apps/activity/models.py:243
#: apps/treasury/templates/treasury/sogecredit_detail.html:14 #: apps/treasury/templates/treasury/sogecredit_detail.html:14
#: apps/wei/templates/wei/attribute_bus_1A.html:16 #: apps/wei/templates/wei/attribute_bus_1A.html:16
msgid "last name" msgid "last name"
msgstr "nom de famille" msgstr "nom de famille"
#: apps/activity/models.py:247 #: apps/activity/models.py:248
#: apps/member/templates/member/includes/profile_info.html:4 #: apps/member/templates/member/includes/profile_info.html:4
#: apps/registration/templates/registration/future_profile_detail.html:16 #: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/treasury/templates/treasury/sogecredit_detail.html:17 #: apps/treasury/templates/treasury/sogecredit_detail.html:17
@ -228,36 +228,36 @@ msgstr "nom de famille"
msgid "first name" msgid "first name"
msgstr "prénom" msgstr "prénom"
#: apps/activity/models.py:252 #: apps/activity/models.py:253
msgid "school" msgid "school"
msgstr "école" msgstr "école"
#: apps/activity/models.py:259 #: apps/activity/models.py:260
msgid "inviter" msgid "inviter"
msgstr "hôte" msgstr "hôte"
#: apps/activity/models.py:263 #: apps/activity/models.py:264
msgid "guest" msgid "guest"
msgstr "invité·e" msgstr "invité·e"
#: apps/activity/models.py:264 #: apps/activity/models.py:265
msgid "guests" msgid "guests"
msgstr "invité·e·s" msgstr "invité·e·s"
#: apps/activity/models.py:317 #: apps/activity/models.py:318
msgid "Invitation" msgid "Invitation"
msgstr "Invitation" msgstr "Invitation"
#: apps/activity/models.py:335 apps/activity/models.py:339 #: apps/activity/models.py:336 apps/activity/models.py:340
msgid "Opener" msgid "Opener"
msgstr "Ouvreur⋅se" msgstr "Ouvreur⋅se"
#: apps/activity/models.py:340 #: apps/activity/models.py:341
#: apps/activity/templates/activity/activity_detail.html:16 #: apps/activity/templates/activity/activity_detail.html:16
msgid "Openers" msgid "Openers"
msgstr "Ouvreur⋅ses" msgstr "Ouvreur⋅ses"
#: apps/activity/models.py:344 #: apps/activity/models.py:345
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
#| msgid "Entry for {note} to the activity {activity}" #| msgid "Entry for {note} to the activity {activity}"
msgid "{opener} is opener of activity {acivity}" msgid "{opener} is opener of activity {acivity}"
@ -285,7 +285,7 @@ msgstr "Entré·e le "
msgid "remove" msgid "remove"
msgstr "supprimer" msgstr "supprimer"
#: apps/activity/tables.py:84 apps/note/forms.py:69 apps/treasury/models.py:208 #: apps/activity/tables.py:84 apps/note/forms.py:69 apps/treasury/models.py:209
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
@ -382,10 +382,8 @@ msgid "Entry done!"
msgstr "Entrée effectuée !" msgstr "Entrée effectuée !"
#: apps/activity/templates/activity/activity_form.html:16 #: apps/activity/templates/activity/activity_form.html:16
#: apps/food/templates/food/add_ingredient_form.html:16 #: apps/food/templates/food/food_update.html:17
#: apps/food/templates/food/basicfood_form.html:16 #: apps/food/templates/food/qrcode.html:18
#: apps/food/templates/food/create_qrcode_form.html:20
#: apps/food/templates/food/transformedfood_form.html:16
#: apps/member/templates/member/add_members.html:46 #: apps/member/templates/member/add_members.html:46
#: apps/member/templates/member/club_form.html:16 #: apps/member/templates/member/club_form.html:16
#: apps/note/templates/note/transactiontemplate_form.html:18 #: apps/note/templates/note/transactiontemplate_form.html:18
@ -493,257 +491,277 @@ msgstr "Entrées pour l'activité « {} »"
msgid "API" msgid "API"
msgstr "API" msgstr "API"
#: apps/food/apps.py:11 apps/food/models.py:105 #: apps/food/apps.py:11
msgid "food" msgid "food"
msgstr "bouffe" msgstr "bouffe"
#: apps/food/forms.py:32
msgid "Fully used"
msgstr "Entièrement utilisé"
#: apps/food/forms.py:50 #: apps/food/forms.py:50
msgid "Pasta METRO 5kg" msgid "Pasta METRO 5kg"
msgstr "Pâtes METRO 5kg" msgstr "Pâtes METRO 5kg"
#: apps/food/forms.py:100 #: apps/food/forms.py:54 apps/food/forms.py:82
msgid "Specific order given to GCKs"
msgstr ""
#: apps/food/forms.py:78
msgid "Lasagna" msgid "Lasagna"
msgstr "Lasagnes" msgstr "Lasagnes"
#: apps/food/models.py:18 #: apps/food/forms.py:117
msgid "QR-code number" msgid "Shelf life (in hours)"
msgstr "numéro de QR-code" msgstr "Durée de vie (en heure)"
#: apps/food/models.py:26 #: apps/food/forms.py:139
msgid "food container" msgid "Fully used"
msgstr "récipient" msgstr "Entièrement utilisé"
#: apps/food/models.py:30 #: apps/food/models.py:23
msgid "QR-code"
msgstr "QR-code"
#: apps/food/models.py:31
msgid "QR-codes"
msgstr "QR-codes"
#: apps/food/models.py:34
#, python-brace-format
msgid "QR-code number {qr_code_number}"
msgstr "numéro du QR-code {qr_code_number}"
#: apps/food/models.py:47
msgid "Allergen" msgid "Allergen"
msgstr "Allergène" msgstr "Allergène"
#: apps/food/models.py:48 apps/food/templates/food/basicfood_detail.html:17 #: apps/food/models.py:24
#: apps/food/templates/food/transformedfood_detail.html:20
msgid "Allergens" msgid "Allergens"
msgstr "Allergènes" msgstr "Allergènes"
#: apps/food/models.py:64 #: apps/food/models.py:43
msgid "owner" msgid "owner"
msgstr "propriétaire" msgstr "propriétaire"
#: apps/food/models.py:70 #: apps/food/models.py:49
msgid "allergen" msgid "allergens"
msgstr "allergène" msgstr "allergènes"
#: apps/food/models.py:74 #: apps/food/models.py:53
msgid "expiry date" msgid "expiry date"
msgstr "date de péremption" msgstr "date de péremption"
#: apps/food/models.py:80 #: apps/food/models.py:59
msgid "was eaten" msgid "end of life"
msgstr "a été mangé" msgstr "fin de vie"
#: apps/food/models.py:89 #: apps/food/models.py:64
msgid "is ready" msgid "is ready"
msgstr "est prêt" msgstr "est prêt"
#: apps/food/models.py:94 #: apps/food/models.py:70
msgid "is active" msgid "order"
msgstr "est en cours" msgstr "consigne"
#: apps/food/models.py:106 #: apps/food/models.py:107 apps/food/views.py:32
msgid "foods" #: note_kfet/templates/base.html:72
msgstr "bouffes" msgid "Food"
msgstr "Bouffe"
#: apps/food/models.py:122 #: apps/food/models.py:108
msgid "Foods"
msgstr "Bouffes"
#: apps/food/models.py:117
msgid "arrival date" msgid "arrival date"
msgstr "date d'arrivée" msgstr "date d'arrivée"
#: apps/food/models.py:152 #: apps/food/models.py:169
msgid "Basic food" msgid "Basic food"
msgstr "Aliment basique" msgstr "Aliment basique"
#: apps/food/models.py:153 #: apps/food/models.py:170
msgid "Basic foods" msgid "Basic foods"
msgstr "Aliments basiques" msgstr "Aliments basiques"
#: apps/food/models.py:161 #: apps/food/models.py:182
msgid "creation date" msgid "creation date"
msgstr "date de création" msgstr "date de création"
#: apps/food/models.py:169 #: apps/food/models.py:188
msgid "transformed ingredient"
msgstr "ingrédients tranformées"
#: apps/food/models.py:174
msgid "shelf life" msgid "shelf life"
msgstr "durée de vie" msgstr "durée de vie"
#: apps/food/models.py:225 apps/food/views.py:375 #: apps/food/models.py:196
msgid "transformed ingredient"
msgstr "ingrédients tranformées"
#: apps/food/models.py:258
msgid "Transformed food" msgid "Transformed food"
msgstr "Aliment transformé" msgstr "Aliment transformé"
#: apps/food/models.py:226 #: apps/food/models.py:259
msgid "Transformed foods" msgid "Transformed foods"
msgstr "Aliments transformés" msgstr "Aliments transformés"
#: apps/food/templates/food/basicfood_detail.html:14 #: apps/food/models.py:271
#: apps/food/templates/food/create_qrcode_form.html:31 msgid "qr code number"
#: apps/food/templates/food/qrcode_detail.html:15 msgstr "numéro de QR-code"
#: apps/food/templates/food/transformedfood_detail.html:14
msgid "Owner"
msgstr "Propriétaire"
#: apps/food/templates/food/basicfood_detail.html:15 #: apps/food/models.py:278
#: apps/food/templates/food/create_qrcode_form.html:34 msgid "food container"
msgid "Arrival date" msgstr "récipient"
msgstr "Date d'arrivée"
#: apps/food/templates/food/basicfood_detail.html:16 #: apps/food/models.py:282
#: apps/food/templates/food/create_qrcode_form.html:37 msgid "QR-code"
#: apps/food/templates/food/qrcode_detail.html:16 msgstr "QR-code"
#: apps/food/templates/food/transformedfood_detail.html:19
msgid "Expiry date"
msgstr "Date de péremption"
#: apps/food/templates/food/basicfood_detail.html:24 #: apps/food/models.py:283
#: apps/food/templates/food/transformedfood_detail.html:36 msgid "QR-codes"
msgid "Active" msgstr "QR-codes"
msgstr "Actif"
#: apps/food/templates/food/basicfood_detail.html:25 #: apps/food/models.py:286
#: apps/food/templates/food/transformedfood_detail.html:37 msgid "QR-code number"
msgid "Eaten" msgstr "numéro de QR-code"
msgstr "Mangé"
#: apps/food/templates/food/basicfood_detail.html:28 #: apps/food/templates/food/food_detail.html:19
#: apps/food/templates/food/qrcode_detail.html:20 msgid "Contained in"
#: apps/food/templates/food/qrcode_detail.html:24 msgstr "Contenu dans"
#: apps/food/templates/food/transformedfood_detail.html:41
#: apps/food/templates/food/food_detail.html:26
msgid "Contain"
msgstr "Contient"
#: apps/food/templates/food/food_detail.html:35
msgid "Update" msgid "Update"
msgstr "Modifier" msgstr "Modifier"
#: apps/food/templates/food/basicfood_detail.html:32 #: apps/food/templates/food/food_detail.html:40
#: apps/food/templates/food/qrcode_detail.html:34
#: apps/food/templates/food/transformedfood_detail.html:46
msgid "Add to a meal" msgid "Add to a meal"
msgstr "Ajouter à un plat" msgstr "Ajouter à un plat"
#: apps/food/templates/food/create_qrcode_form.html:15 #: apps/food/templates/food/food_detail.html:44
msgid "New basic food" msgid "Return to the food list"
msgstr "Nouvel aliment basique" msgstr "Retour à la liste de nourriture"
#: apps/food/templates/food/create_qrcode_form.html:23 #: apps/food/templates/food/food_list.html:14
msgid "Copy constructor"
msgstr "Constructeur de copie"
#: apps/food/templates/food/create_qrcode_form.html:28
#: apps/food/templates/food/qrcode_detail.html:14
#: apps/note/templates/note/transaction_form.html:132
#: apps/treasury/models.py:60
msgid "Name"
msgstr "Nom"
#: apps/food/templates/food/qrcode_detail.html:10
msgid "number"
msgstr "numéro"
#: apps/food/templates/food/qrcode_detail.html:29
msgid "View details"
msgstr "Voir plus"
#: apps/food/templates/food/transformedfood_detail.html:16
#: apps/food/templates/food/transformedfood_detail.html:35
msgid "Ready"
msgstr "Prêt"
#: apps/food/templates/food/transformedfood_detail.html:18
msgid "Creation date"
msgstr "Date de création"
#: apps/food/templates/food/transformedfood_detail.html:27
msgid "Ingredients"
msgstr "Ingrédients"
#: apps/food/templates/food/transformedfood_detail.html:34
msgid "Shelf life"
msgstr "Durée de vie"
#: apps/food/templates/food/transformedfood_list.html:11
msgid "Meal served" msgid "Meal served"
msgstr "Plat servis" msgstr "Plat servis"
#: apps/food/templates/food/transformedfood_list.html:16 #: apps/food/templates/food/food_list.html:19
msgid "New meal" msgid "New meal"
msgstr "Nouveau plat" msgstr "Nouveau plat"
#: apps/food/templates/food/transformedfood_list.html:25 #: apps/food/templates/food/food_list.html:28
msgid "There is no meal served." msgid "There is no meal served."
msgstr "Il n'y a pas de plat servi." msgstr "Il n'y a pas de plat servi."
#: apps/food/templates/food/transformedfood_list.html:33 #: apps/food/templates/food/food_list.html:35
msgid "Open" msgid "Free food"
msgstr "Open" msgstr "Open"
#: apps/food/templates/food/transformedfood_list.html:40 #: apps/food/templates/food/food_list.html:42
msgid "There is no free meal." msgid "There is no free food."
msgstr "Il n'y a pas de plat en open" msgstr "Il n'y a pas de bouffe en open"
#: apps/food/templates/food/transformedfood_list.html:48 #: apps/food/templates/food/food_list.html:50
msgid "All meals" msgid "Food of your clubs"
msgstr "Tout les plats" msgstr "Bouffe de tes clubs"
#: apps/food/templates/food/transformedfood_list.html:55 #: apps/food/templates/food/food_list.html:56
msgid "There is no meal." msgid "Food of club"
msgstr "Il n'y a pas de plat" msgstr "Bouffe du club"
#: apps/food/views.py:28 #: apps/food/templates/food/food_list.html:63
msgid "Add the ingredient" msgid "Yours club has not food yet."
msgstr "Ajouter un ingrédient" msgstr "Ton club n'a pas de bouffe pour l'instant"
#: apps/food/views.py:42 #: apps/food/templates/food/qrcode.html:22
msgid "The product is already prepared" msgid "Copy constructor"
msgstr "Le produit est déjà prêt" msgstr "Constructeur de copie"
#: apps/food/views.py:70 #: apps/food/templates/food/qrcode.html:23
msgid "Update an aliment" msgid "New food"
msgstr "Modifier un aliment" msgstr "Nouvel aliment"
#: apps/food/views.py:97 #: apps/food/templates/food/qrcode.html:29
msgid "Details of:" #: apps/note/templates/note/transaction_form.html:132
msgstr "Détails de:" #: apps/treasury/models.py:61
msgid "Name"
msgstr "Nom"
#: apps/food/views.py:121 #: apps/food/templates/food/qrcode.html:32
msgid "Add a new basic food with QRCode" msgid "Owner"
msgstr "Ajouter un nouvel ingrédient avec un QR-code" msgstr "Propriétaire"
#: apps/food/views.py:194 #: apps/food/templates/food/qrcode.html:35
msgid "Expiry date"
msgstr "Date de péremption"
#: apps/food/utils.py:6
msgid "second"
msgstr "seconde"
#: apps/food/utils.py:6
msgid "seconds"
msgstr "secondes"
#: apps/food/utils.py:7
msgid "minute"
msgstr "minute"
#: apps/food/utils.py:7
msgid "minutes"
msgstr "minutes"
#: apps/food/utils.py:8
msgid "hour"
msgstr "heure"
#: apps/food/utils.py:8
msgid "hours"
msgstr "heures"
#: apps/food/utils.py:9
msgid "day"
msgstr "jour"
#: apps/food/utils.py:9 apps/member/templates/member/includes/club_info.html:27
msgid "days"
msgstr "jours"
#: apps/food/utils.py:10
msgid "week"
msgstr "semaine"
#: apps/food/utils.py:10
msgid "weeks"
msgstr "semaines"
#: apps/food/utils.py:53
msgid "and"
msgstr "et"
#: apps/food/views.py:116
msgid "Add a new QRCode" msgid "Add a new QRCode"
msgstr "Ajouter un nouveau QR-code" msgstr "Ajouter un nouveau QR-code"
#: apps/food/views.py:245 #: apps/food/views.py:165
msgid "QRCode" msgid "Add an aliment"
msgstr "QR-code" msgstr "Ajouter un nouvel aliment"
#: apps/food/views.py:281 #: apps/food/views.py:224
msgid "Add a new meal" msgid "Add a meal"
msgstr "Ajouter un nouveau plat" msgstr "Ajouter un plat"
#: apps/food/views.py:347 #: apps/food/views.py:251
msgid "Update a meal" msgid "Add the ingredient:"
msgstr "Modifier le plat" msgstr "Ajouter l'ingrédient"
#: apps/food/views.py:275
#, python-brace-format
msgid "Food fully used in : {meal.name}"
msgstr "Aliment entièrement utilisé dans : {meal.name}"
#: apps/food/views.py:294
msgid "Update an aliment"
msgstr "Modifier un aliment"
#: apps/food/views.py:342
msgid "Details of:"
msgstr "Détails de :"
#: apps/food/views.py:352 apps/treasury/tables.py:149
msgid "Yes"
msgstr "Oui"
#: apps/food/views.py:354 apps/member/models.py:99 apps/treasury/tables.py:149
msgid "No"
msgstr "Non"
#: apps/logs/apps.py:11 #: apps/logs/apps.py:11
msgid "Logs" msgid "Logs"
@ -1044,10 +1062,6 @@ msgstr "payé⋅e"
msgid "Tells if the user receive a salary." msgid "Tells if the user receive a salary."
msgstr "Indique si l'utilisateur⋅rice perçoit un salaire." msgstr "Indique si l'utilisateur⋅rice perçoit un salaire."
#: apps/member/models.py:99 apps/treasury/tables.py:149
msgid "No"
msgstr "Non"
#: apps/member/models.py:100 #: apps/member/models.py:100
msgid "Yes (receive them in french)" msgid "Yes (receive them in french)"
msgstr "Oui (les recevoir en français)" msgstr "Oui (les recevoir en français)"
@ -1357,10 +1371,6 @@ msgstr "Il n'y a pas d'adhésion trouvée avec cette entrée."
msgid "Club Parent" msgid "Club Parent"
msgstr "Club parent" msgstr "Club parent"
#: apps/member/templates/member/includes/club_info.html:27
msgid "days"
msgstr "jours"
#: apps/member/templates/member/includes/club_info.html:31 #: apps/member/templates/member/includes/club_info.html:31
#: apps/wei/templates/wei/base.html:40 #: apps/wei/templates/wei/base.html:40
msgid "membership fee" msgid "membership fee"
@ -1456,11 +1466,11 @@ msgstr "Introspection :"
msgid "Show my applications" msgid "Show my applications"
msgstr "Voir mes applications" msgstr "Voir mes applications"
#: apps/member/templates/member/picture_update.html:38 #: apps/member/templates/member/picture_update.html:40
msgid "Nevermind" msgid "Nevermind"
msgstr "Annuler" msgstr "Annuler"
#: apps/member/templates/member/picture_update.html:39 #: apps/member/templates/member/picture_update.html:41
msgid "Crop and upload" msgid "Crop and upload"
msgstr "Recadrer et envoyer" msgstr "Recadrer et envoyer"
@ -1899,7 +1909,7 @@ msgstr "Ce champ est requis."
msgid "membership transaction" msgid "membership transaction"
msgstr "transaction d'adhésion" msgstr "transaction d'adhésion"
#: apps/note/models/transactions.py:381 apps/treasury/models.py:300 #: apps/note/models/transactions.py:381 apps/treasury/models.py:301
msgid "membership transactions" msgid "membership transactions"
msgstr "transactions d'adhésion" msgstr "transactions d'adhésion"
@ -2512,7 +2522,7 @@ msgstr "Invalider l'inscription"
msgid "Treasury" msgid "Treasury"
msgstr "Trésorerie" msgstr "Trésorerie"
#: apps/treasury/forms.py:26 apps/treasury/models.py:112 #: apps/treasury/forms.py:26 apps/treasury/models.py:113
#: apps/treasury/templates/treasury/invoice_form.html:22 #: apps/treasury/templates/treasury/invoice_form.html:22
msgid "This invoice is locked and can no longer be edited." msgid "This invoice is locked and can no longer be edited."
msgstr "Cette facture est verrouillée et ne peut plus être éditée." msgstr "Cette facture est verrouillée et ne peut plus être éditée."
@ -2525,7 +2535,7 @@ msgstr "La remise est déjà fermée."
msgid "You can't change the type of the remittance." msgid "You can't change the type of the remittance."
msgstr "Vous ne pouvez pas changer le type de la remise." msgstr "Vous ne pouvez pas changer le type de la remise."
#: apps/treasury/forms.py:125 apps/treasury/models.py:275 #: apps/treasury/forms.py:125 apps/treasury/models.py:276
#: apps/treasury/tables.py:99 apps/treasury/tables.py:108 #: apps/treasury/tables.py:99 apps/treasury/tables.py:108
#: apps/treasury/templates/treasury/invoice_list.html:16 #: apps/treasury/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16 #: apps/treasury/templates/treasury/remittance_list.html:16
@ -2541,139 +2551,139 @@ msgstr "Pas de remise associée"
msgid "Invoice identifier" msgid "Invoice identifier"
msgstr "Numéro de facture" msgstr "Numéro de facture"
#: apps/treasury/models.py:42 apps/wrapped/models.py:28 #: apps/treasury/models.py:43 apps/wrapped/models.py:28
#: apps/wrapped/models.py:29 #: apps/wrapped/models.py:29
msgid "BDE" msgid "BDE"
msgstr "BDE" msgstr "BDE"
#: apps/treasury/models.py:46 #: apps/treasury/models.py:47
msgid "Quotation" msgid "Quotation"
msgstr "Devis" msgstr "Devis"
#: apps/treasury/models.py:51 #: apps/treasury/models.py:52
msgid "Object" msgid "Object"
msgstr "Objet" msgstr "Objet"
#: apps/treasury/models.py:55 #: apps/treasury/models.py:56
msgid "Description" msgid "Description"
msgstr "Description" msgstr "Description"
#: apps/treasury/models.py:64 #: apps/treasury/models.py:65
msgid "Address" msgid "Address"
msgstr "Adresse" msgstr "Adresse"
#: apps/treasury/models.py:69 apps/treasury/models.py:202 #: apps/treasury/models.py:70 apps/treasury/models.py:203
msgid "Date" msgid "Date"
msgstr "Date" msgstr "Date"
#: apps/treasury/models.py:75 #: apps/treasury/models.py:76
msgid "Payment date" msgid "Payment date"
msgstr "Date de paiement" msgstr "Date de paiement"
#: apps/treasury/models.py:79 #: apps/treasury/models.py:80
msgid "Acquitted" msgid "Acquitted"
msgstr "Acquittée" msgstr "Acquittée"
#: apps/treasury/models.py:84 #: apps/treasury/models.py:85
msgid "Locked" msgid "Locked"
msgstr "Verrouillée" msgstr "Verrouillée"
#: apps/treasury/models.py:85 #: apps/treasury/models.py:86
msgid "An invoice can't be edited when it is locked." msgid "An invoice can't be edited when it is locked."
msgstr "Une facture ne peut plus être modifiée si elle est verrouillée." msgstr "Une facture ne peut plus être modifiée si elle est verrouillée."
#: apps/treasury/models.py:91 #: apps/treasury/models.py:92
msgid "tex source" msgid "tex source"
msgstr "fichier TeX source" msgstr "fichier TeX source"
#: apps/treasury/models.py:95 apps/treasury/models.py:140 #: apps/treasury/models.py:96 apps/treasury/models.py:141
msgid "invoice" msgid "invoice"
msgstr "facture" msgstr "facture"
#: apps/treasury/models.py:96 #: apps/treasury/models.py:97
msgid "invoices" msgid "invoices"
msgstr "factures" msgstr "factures"
#: apps/treasury/models.py:99 #: apps/treasury/models.py:100
#, python-brace-format #, python-brace-format
msgid "Invoice #{id}" msgid "Invoice #{id}"
msgstr "Facture n°{id}" msgstr "Facture n°{id}"
#: apps/treasury/models.py:145 #: apps/treasury/models.py:146
msgid "Designation" msgid "Designation"
msgstr "Désignation" msgstr "Désignation"
#: apps/treasury/models.py:151 #: apps/treasury/models.py:152
msgid "Quantity" msgid "Quantity"
msgstr "Quantité" msgstr "Quantité"
#: apps/treasury/models.py:156 #: apps/treasury/models.py:157
msgid "Unit price" msgid "Unit price"
msgstr "Prix unitaire" msgstr "Prix unitaire"
#: apps/treasury/models.py:160 #: apps/treasury/models.py:161
msgid "product" msgid "product"
msgstr "produit" msgstr "produit"
#: apps/treasury/models.py:161 #: apps/treasury/models.py:162
msgid "products" msgid "products"
msgstr "produits" msgstr "produits"
#: apps/treasury/models.py:189 #: apps/treasury/models.py:190
msgid "remittance type" msgid "remittance type"
msgstr "type de remise" msgstr "type de remise"
#: apps/treasury/models.py:190 #: apps/treasury/models.py:191
msgid "remittance types" msgid "remittance types"
msgstr "types de remises" msgstr "types de remises"
#: apps/treasury/models.py:213 #: apps/treasury/models.py:214
msgid "Comment" msgid "Comment"
msgstr "Commentaire" msgstr "Commentaire"
#: apps/treasury/models.py:218 #: apps/treasury/models.py:219
msgid "Closed" msgid "Closed"
msgstr "Fermée" msgstr "Fermée"
#: apps/treasury/models.py:222 #: apps/treasury/models.py:223
msgid "remittance" msgid "remittance"
msgstr "remise" msgstr "remise"
#: apps/treasury/models.py:223 #: apps/treasury/models.py:224
msgid "remittances" msgid "remittances"
msgstr "remises" msgstr "remises"
#: apps/treasury/models.py:226 #: apps/treasury/models.py:227
msgid "Remittance #{:d}: {}" msgid "Remittance #{:d}: {}"
msgstr "Remise n°{:d} : {}" msgstr "Remise n°{:d} : {}"
#: apps/treasury/models.py:279 #: apps/treasury/models.py:280
msgid "special transaction proxy" msgid "special transaction proxy"
msgstr "proxy de transaction spéciale" msgstr "proxy de transaction spéciale"
#: apps/treasury/models.py:280 #: apps/treasury/models.py:281
msgid "special transaction proxies" msgid "special transaction proxies"
msgstr "proxys de transactions spéciales" msgstr "proxys de transactions spéciales"
#: apps/treasury/models.py:306 #: apps/treasury/models.py:307
msgid "credit transaction" msgid "credit transaction"
msgstr "transaction de crédit" msgstr "transaction de crédit"
#: apps/treasury/models.py:311 #: apps/treasury/models.py:312
#: apps/treasury/templates/treasury/sogecredit_detail.html:10 #: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale" msgid "Credit from the Société générale"
msgstr "Crédit de la Société générale" msgstr "Crédit de la Société générale"
#: apps/treasury/models.py:312 #: apps/treasury/models.py:313
msgid "Credits from the Société générale" msgid "Credits from the Société générale"
msgstr "Crédits de la Société générale" msgstr "Crédits de la Société générale"
#: apps/treasury/models.py:315 #: apps/treasury/models.py:316
#, python-brace-format #, python-brace-format
msgid "Soge credit for {user}" msgid "Soge credit for {user}"
msgstr "Crédit de la société générale pour l'utilisateur·rice {user}" msgstr "Crédit de la société générale pour l'utilisateur·rice {user}"
#: apps/treasury/models.py:445 #: apps/treasury/models.py:446
msgid "" msgid ""
"This user doesn't have enough money to pay the memberships with its note. " "This user doesn't have enough money to pay the memberships with its note. "
"Please ask her/him to credit the note before invalidating this credit." "Please ask her/him to credit the note before invalidating this credit."
@ -2702,10 +2712,6 @@ msgstr "Nombre de transactions"
msgid "View" msgid "View"
msgstr "Voir" msgstr "Voir"
#: apps/treasury/tables.py:149
msgid "Yes"
msgstr "Oui"
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:10 #: apps/treasury/templates/treasury/invoice_confirm_delete.html:10
#: apps/treasury/views.py:174 #: apps/treasury/views.py:174
msgid "Delete invoice" msgid "Delete invoice"
@ -3812,10 +3818,6 @@ msgstr ""
msgid "Reset" msgid "Reset"
msgstr "Réinitialiser" msgstr "Réinitialiser"
#: note_kfet/templates/base.html:72
msgid "Food"
msgstr "Bouffe"
#: note_kfet/templates/base.html:84 #: note_kfet/templates/base.html:84
msgid "Users" msgid "Users"
msgstr "Utilisateur·rices" msgstr "Utilisateur·rices"
@ -4125,6 +4127,67 @@ msgstr ""
"d'adhésion. Vous devez également valider votre adresse email en suivant le " "d'adhésion. Vous devez également valider votre adresse email en suivant le "
"lien que vous avez reçu." "lien que vous avez reçu."
#, python-brace-format
#~ msgid "QR-code number {qr_code_number}"
#~ msgstr "numéro du QR-code {qr_code_number}"
#~ msgid "was eaten"
#~ msgstr "a été mangé"
#~ msgid "is active"
#~ msgstr "est en cours"
#~ msgid "foods"
#~ msgstr "bouffes"
#~ msgid "Arrival date"
#~ msgstr "Date d'arrivée"
#~ msgid "Active"
#~ msgstr "Actif"
#~ msgid "Eaten"
#~ msgstr "Mangé"
#~ msgid "number"
#~ msgstr "numéro"
#~ msgid "View details"
#~ msgstr "Voir plus"
#~ msgid "Ready"
#~ msgstr "Prêt"
#~ msgid "Creation date"
#~ msgstr "Date de création"
#~ msgid "Ingredients"
#~ msgstr "Ingrédients"
#~ msgid "Open"
#~ msgstr "Open"
#~ msgid "All meals"
#~ msgstr "Tout les plats"
#~ msgid "There is no meal."
#~ msgstr "Il n'y a pas de plat"
#~ msgid "The product is already prepared"
#~ msgstr "Le produit est déjà prêt"
#~ msgid "Add a new basic food with QRCode"
#~ msgstr "Ajouter un nouvel ingrédient avec un QR-code"
#~ msgid "QRCode"
#~ msgstr "QR-code"
#~ msgid "Add a new meal"
#~ msgstr "Ajouter un nouveau plat"
#~ msgid "Update a meal"
#~ msgstr "Modifier le plat"
#, fuzzy #, fuzzy
#~| msgid "invalidate" #~| msgid "invalidate"
#~ msgid "Enter a valid color." #~ msgid "Enter a valid color."
@ -4180,11 +4243,6 @@ msgstr ""
#~ msgid "Enter a number." #~ msgid "Enter a number."
#~ msgstr "numéro de téléphone" #~ msgstr "numéro de téléphone"
#, fuzzy
#~| msgid "add"
#~ msgid "and"
#~ msgstr "ajouter"
#, fuzzy, python-format #, fuzzy, python-format
#~| msgid "A template with this name already exist" #~| msgid "A template with this name already exist"
#~ msgid "%(model_name)s with this %(field_labels)s already exists." #~ msgid "%(model_name)s with this %(field_labels)s already exists."
@ -4446,9 +4504,6 @@ msgstr ""
#~ msgid "Free" #~ msgid "Free"
#~ msgstr "Open" #~ msgstr "Open"
#~ msgid "Add a new aliment"
#~ msgstr "Ajouter un nouvel aliment"
#, fuzzy #, fuzzy
#~| msgid "Transformed food" #~| msgid "Transformed food"
#~ msgid "New transformed food" #~ msgid "New transformed food"