langcoach 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1117 @@
1
+ {
2
+ "extName": {
3
+ "message": "LangCoach",
4
+ "description": "Extension name"
5
+ },
6
+ "extDescription": {
7
+ "message": "Séries, plan quotidien et révision à répétition espacée pour Little Language Lessons (Google Labs). Non affilié à Google.",
8
+ "description": "Extension description (max 132 chars)"
9
+ },
10
+ "toastSaved": {
11
+ "message": "✓ $COUNT$ mots enregistrés dans LangCoach",
12
+ "placeholders": {
13
+ "count": {
14
+ "content": "$1"
15
+ }
16
+ }
17
+ },
18
+ "toastAlready": {
19
+ "message": "Déjà dans votre paquet"
20
+ },
21
+ "toastUndo": {
22
+ "message": "Annuler"
23
+ },
24
+ "toastOpen": {
25
+ "message": "Ouvrir"
26
+ },
27
+ "toastRemoved": {
28
+ "message": "Supprimé"
29
+ },
30
+ "toastSaveN": {
31
+ "message": "Enregistrer $COUNT$ mots",
32
+ "placeholders": {
33
+ "count": {
34
+ "content": "$1"
35
+ }
36
+ }
37
+ },
38
+ "toastSavedManual": {
39
+ "message": "✓ Enregistré dans LangCoach"
40
+ },
41
+ "toastXp": {
42
+ "message": "+$XP$ XP",
43
+ "placeholders": {
44
+ "xp": {
45
+ "content": "$1"
46
+ }
47
+ }
48
+ },
49
+ "menuSave": {
50
+ "message": "Enregistrer dans LangCoach"
51
+ },
52
+ "tabToday": {
53
+ "message": "Aujourd’hui"
54
+ },
55
+ "tabReview": {
56
+ "message": "Révision"
57
+ },
58
+ "tabPlan": {
59
+ "message": "Plan"
60
+ },
61
+ "tabProgress": {
62
+ "message": "Progrès"
63
+ },
64
+ "tabSettings": {
65
+ "message": "Paramètres"
66
+ },
67
+ "loading": {
68
+ "message": "Chargement..."
69
+ },
70
+ "onboardTitle": {
71
+ "message": "Configurez votre coach linguistique"
72
+ },
73
+ "onboardSubtitle": {
74
+ "message": "Personnalisez votre plan hebdomadaire et votre paquet de révision."
75
+ },
76
+ "fieldTargetLang": {
77
+ "message": "Langue étudiée"
78
+ },
79
+ "fieldNativeLang": {
80
+ "message": "Ma langue maternelle"
81
+ },
82
+ "fieldLevel": {
83
+ "message": "Niveau actuel"
84
+ },
85
+ "levelUnsure": {
86
+ "message": "Pas sûr (commencer en A2)"
87
+ },
88
+ "fieldGoal": {
89
+ "message": "Objectif principal"
90
+ },
91
+ "goalTravel": {
92
+ "message": "Voyage"
93
+ },
94
+ "goalWork": {
95
+ "message": "Travail"
96
+ },
97
+ "goalStudy": {
98
+ "message": "Études"
99
+ },
100
+ "goalMoving": {
101
+ "message": "S’installer à l’étranger"
102
+ },
103
+ "goalFamily": {
104
+ "message": "Famille et amis"
105
+ },
106
+ "goalFun": {
107
+ "message": "Loisirs et culture"
108
+ },
109
+ "fieldMinutes": {
110
+ "message": "Minutes par jour"
111
+ },
112
+ "fieldDays": {
113
+ "message": "Jours par semaine"
114
+ },
115
+ "fieldCamera": {
116
+ "message": "J’ai une caméra (inclure Word Cam)"
117
+ },
118
+ "btnStartPlan": {
119
+ "message": "Créer mon plan"
120
+ },
121
+ "todayHeading": {
122
+ "message": "Tâches du jour"
123
+ },
124
+ "todayRingLabel": {
125
+ "message": "Objectif quotidien"
126
+ },
127
+ "todayStreak": {
128
+ "message": "Jours de série"
129
+ },
130
+ "todayThemeLabel": {
131
+ "message": "Thème suggéré pour Tiny Lesson"
132
+ },
133
+ "btnCopy": {
134
+ "message": "Copier"
135
+ },
136
+ "btnCopied": {
137
+ "message": "Copié"
138
+ },
139
+ "btnNextTheme": {
140
+ "message": "Autre idée"
141
+ },
142
+ "btnOpenLll": {
143
+ "message": "Ouvrir"
144
+ },
145
+ "taskTinyLesson": {
146
+ "message": "Tiny Lesson"
147
+ },
148
+ "taskSlangHang": {
149
+ "message": "Slang Hang"
150
+ },
151
+ "taskWordCam": {
152
+ "message": "Word Cam"
153
+ },
154
+ "taskReview": {
155
+ "message": "Révision de cartes"
156
+ },
157
+ "taskQuiz": {
158
+ "message": "Quiz hebdomadaire"
159
+ },
160
+ "taskStatusDone": {
161
+ "message": "Fait"
162
+ },
163
+ "taskStatusTodo": {
164
+ "message": "À faire"
165
+ },
166
+ "minutesShort": {
167
+ "message": "$MIN$ min",
168
+ "placeholders": {
169
+ "min": {
170
+ "content": "$1"
171
+ }
172
+ }
173
+ },
174
+ "todayNoTasks": {
175
+ "message": "Aucune tâche prévue aujourd’hui. Faites une leçon ou une révision pour maintenir votre série !"
176
+ },
177
+ "lastCaptureHeading": {
178
+ "message": "Dernière leçon capturée"
179
+ },
180
+ "grammarHeading": {
181
+ "message": "Notes de grammaire récentes"
182
+ },
183
+ "reviewHeading": {
184
+ "message": "Révision à répétition espacée"
185
+ },
186
+ "reviewDueBadge": {
187
+ "message": "$COUNT$ à revoir",
188
+ "placeholders": {
189
+ "count": {
190
+ "content": "$1"
191
+ }
192
+ }
193
+ },
194
+ "reviewEmptyTitle": {
195
+ "message": "Tout est à jour pour le moment !"
196
+ },
197
+ "reviewEmptyBody": {
198
+ "message": "Faites une leçon sur Little Language Lessons pour ajouter de nouveaux mots."
199
+ },
200
+ "btnShowAnswer": {
201
+ "message": "Afficher la réponse"
202
+ },
203
+ "btnListen": {
204
+ "message": "Écouter"
205
+ },
206
+ "rateAgain": {
207
+ "message": "À revoir"
208
+ },
209
+ "rateHard": {
210
+ "message": "Difficile"
211
+ },
212
+ "rateGood": {
213
+ "message": "Bien"
214
+ },
215
+ "rateEasy": {
216
+ "message": "Facile"
217
+ },
218
+ "btnEditCard": {
219
+ "message": "Modifier la traduction"
220
+ },
221
+ "btnSaveCard": {
222
+ "message": "Enregistrer"
223
+ },
224
+ "placeholderTranslation": {
225
+ "message": "Ajouter une traduction..."
226
+ },
227
+ "btnFinishReview": {
228
+ "message": "Terminer la session"
229
+ },
230
+ "planHeading": {
231
+ "message": "Plan hebdomadaire"
232
+ },
233
+ "planTheme": {
234
+ "message": "Thème"
235
+ },
236
+ "planEmpty": {
237
+ "message": "Aucun plan pour cette semaine."
238
+ },
239
+ "progressHeading": {
240
+ "message": "Vos progrès"
241
+ },
242
+ "statStreak": {
243
+ "message": "Série de jours"
244
+ },
245
+ "statTotalXp": {
246
+ "message": "XP total"
247
+ },
248
+ "statLevel": {
249
+ "message": "Niveau"
250
+ },
251
+ "statWordsLearned": {
252
+ "message": "Mots appris"
253
+ },
254
+ "statDueCount": {
255
+ "message": "Cartes à revoir"
256
+ },
257
+ "statWeeklyGoal": {
258
+ "message": "Jours d’étude hebdomadaires"
259
+ },
260
+ "achievementsHeading": {
261
+ "message": "Succès"
262
+ },
263
+ "ach_first_lesson": {
264
+ "message": "Premier pas (1 leçon)"
265
+ },
266
+ "ach_streak_3": {
267
+ "message": "Série de 3 jours"
268
+ },
269
+ "ach_streak_7": {
270
+ "message": "Série de 7 jours"
271
+ },
272
+ "ach_streak_30": {
273
+ "message": "Série de 30 jours"
274
+ },
275
+ "ach_cards_50": {
276
+ "message": "50 mots collectés"
277
+ },
278
+ "ach_cards_100": {
279
+ "message": "100 mots collectés"
280
+ },
281
+ "ach_cards_500": {
282
+ "message": "500 mots collectés"
283
+ },
284
+ "ach_reviews_100": {
285
+ "message": "100 révisions de cartes"
286
+ },
287
+ "settingsHeading": {
288
+ "message": "Paramètres"
289
+ },
290
+ "settingsProfileSection": {
291
+ "message": "Profil d’apprentissage"
292
+ },
293
+ "btnSaveProfile": {
294
+ "message": "Enregistrer le profil"
295
+ },
296
+ "settingsPrefsSection": {
297
+ "message": "Préférences"
298
+ },
299
+ "fieldAutoSave": {
300
+ "message": "Enregistrer automatiquement les leçons sur Little Language Lessons"
301
+ },
302
+ "fieldReminder": {
303
+ "message": "Heure du rappel quotidien"
304
+ },
305
+ "reminderOff": {
306
+ "message": "Désactivé"
307
+ },
308
+ "fieldUiLang": {
309
+ "message": "Langue de l’interface"
310
+ },
311
+ "uiLangAuto": {
312
+ "message": "Automatique (navigateur)"
313
+ },
314
+ "settingsDataSection": {
315
+ "message": "Vos données"
316
+ },
317
+ "btnExport": {
318
+ "message": "Exporter la sauvegarde JSON"
319
+ },
320
+ "btnImport": {
321
+ "message": "Importer une sauvegarde JSON"
322
+ },
323
+ "btnReset": {
324
+ "message": "Réinitialiser toutes les données"
325
+ },
326
+ "btnResetConfirm1": {
327
+ "message": "Cliquez à nouveau pour confirmer"
328
+ },
329
+ "btnResetConfirm2": {
330
+ "message": "Confirmer la suppression définitive"
331
+ },
332
+ "settingsAboutSection": {
333
+ "message": "À propos de LangCoach"
334
+ },
335
+ "aboutDisclaimer": {
336
+ "message": "LangCoach est un projet open source indépendant et n’est ni affilié, ni approuvé, ni parrainé par Google."
337
+ },
338
+ "aboutGithub": {
339
+ "message": "Dépôt GitHub"
340
+ },
341
+ "aboutSupport": {
342
+ "message": "Soutenir le projet"
343
+ },
344
+ "reminderTitle": {
345
+ "message": "C’est l’heure de pratiquer votre langue !"
346
+ },
347
+ "reminderBody": {
348
+ "message": "Votre leçon de 5 minutes sur LangCoach vous attend pour garder votre série."
349
+ },
350
+ "btnFillTheme": {
351
+ "message": "Remplir"
352
+ },
353
+ "btnFilled": {
354
+ "message": "Rempli !"
355
+ },
356
+ "tabModeList": {
357
+ "message": "Liste"
358
+ },
359
+ "tabModeCards": {
360
+ "message": "Cartes"
361
+ },
362
+ "searchPlaceholder": {
363
+ "message": "Rechercher un mot ou traduction..."
364
+ },
365
+ "statusLearned": {
366
+ "message": "Appris"
367
+ },
368
+ "statusNew": {
369
+ "message": "Nouveau"
370
+ },
371
+ "btnCancel": {
372
+ "message": "Annuler"
373
+ },
374
+ "noTranslation": {
375
+ "message": "Pas de traduction (modifier)"
376
+ },
377
+ "themeCopiedPaste": {
378
+ "message": "Copié — collez-le dans le champ"
379
+ },
380
+ "loadErrorBody": {
381
+ "message": "LangCoach n'a pas pu charger vos données : $MSG$",
382
+ "placeholders": {
383
+ "msg": {
384
+ "content": "$1"
385
+ }
386
+ }
387
+ },
388
+ "btnRetry": {
389
+ "message": "Réessayer"
390
+ },
391
+ "corruptTitle": {
392
+ "message": "Vos données enregistrées sont endommagées"
393
+ },
394
+ "corruptBody": {
395
+ "message": "LangCoach n'a pas pu lire vos données enregistrées. Rien n'a été supprimé : vous pouvez importer une sauvegarde ou réinitialiser pour repartir de zéro."
396
+ },
397
+ "corruptPreserved": {
398
+ "message": "Une copie des données endommagées a été conservée dans le stockage du navigateur sous la clé : $KEY$",
399
+ "placeholders": {
400
+ "key": {
401
+ "content": "$1"
402
+ }
403
+ }
404
+ },
405
+ "importReplaceWarning": {
406
+ "message": "L'importation remplace tout votre paquet actuel. Une sauvegarde des données actuelles est conservée."
407
+ },
408
+ "importCounts": {
409
+ "message": "Paquet actuel : $CURRENT$ cartes · Fichier : $FILE$ cartes",
410
+ "placeholders": {
411
+ "current": {
412
+ "content": "$1"
413
+ },
414
+ "file": {
415
+ "content": "$2"
416
+ }
417
+ }
418
+ },
419
+ "btnImportReplace": {
420
+ "message": "Remplacer"
421
+ },
422
+ "exportCardsSection": {
423
+ "message": "Exporter les cartes"
424
+ },
425
+ "exportCardsHint": {
426
+ "message": "Emportez vos cartes dans d’autres applis. Le calendrier de révision n’est pas exporté ; les cartes y repartent de zéro."
427
+ },
428
+ "btnExportAnki": {
429
+ "message": "Anki"
430
+ },
431
+ "btnExportQuizlet": {
432
+ "message": "Quizlet"
433
+ },
434
+ "btnExportCsv": {
435
+ "message": "CSV"
436
+ },
437
+ "exportCardsDone": {
438
+ "message": "$COUNT$ cartes exportées vers $FILE$.",
439
+ "placeholders": {
440
+ "count": {
441
+ "content": "$1"
442
+ },
443
+ "file": {
444
+ "content": "$2"
445
+ }
446
+ }
447
+ },
448
+ "exportCardsNone": {
449
+ "message": "Aucune carte à exporter pour le moment."
450
+ },
451
+ "importDone": {
452
+ "message": "$CARDS$ cartes importées depuis $LESSONS$ leçons.",
453
+ "placeholders": {
454
+ "cards": {
455
+ "content": "$1"
456
+ },
457
+ "lessons": {
458
+ "content": "$2"
459
+ }
460
+ }
461
+ },
462
+ "importFailed": {
463
+ "message": "Échec de l'importation : $MSG$",
464
+ "placeholders": {
465
+ "msg": {
466
+ "content": "$1"
467
+ }
468
+ }
469
+ },
470
+ "actionFailed": {
471
+ "message": "Une erreur s'est produite : $MSG$",
472
+ "placeholders": {
473
+ "msg": {
474
+ "content": "$1"
475
+ }
476
+ }
477
+ },
478
+ "nativeBannerTitle": {
479
+ "message": "Sens dans ta langue"
480
+ },
481
+ "nativeDownloadBtn": {
482
+ "message": "Télécharger les traductions (une fois, sur l’appareil)"
483
+ },
484
+ "nativeDownloadBody": {
485
+ "message": "$COUNT$ mots peuvent aussi s’afficher en $LANG$. Chrome les traduit sur cet appareil ; rien n’est envoyé.",
486
+ "placeholders": {
487
+ "count": {
488
+ "content": "$1"
489
+ },
490
+ "lang": {
491
+ "content": "$2"
492
+ }
493
+ }
494
+ },
495
+ "nativeDownloading": {
496
+ "message": "Téléchargement des traductions… $PERCENT$ %",
497
+ "placeholders": {
498
+ "percent": {
499
+ "content": "$1"
500
+ }
501
+ }
502
+ },
503
+ "nativeDownloadingWait": {
504
+ "message": "Chrome télécharge les traductions. Elles apparaîtront ici une fois prêtes."
505
+ },
506
+ "nativeTranslating": {
507
+ "message": "Traduction de $COUNT$ mots en $LANG$…",
508
+ "placeholders": {
509
+ "count": {
510
+ "content": "$1"
511
+ },
512
+ "lang": {
513
+ "content": "$2"
514
+ }
515
+ }
516
+ },
517
+ "nativeUnavailable": {
518
+ "message": "Ton navigateur ne peut pas encore traduire $SOURCE$→$TARGET$ sur l’appareil ; affichage en anglais.",
519
+ "placeholders": {
520
+ "source": {
521
+ "content": "$1"
522
+ },
523
+ "target": {
524
+ "content": "$2"
525
+ }
526
+ }
527
+ },
528
+ "fieldShowNativeOnPage": {
529
+ "message": "Afficher ma langue sur la page"
530
+ },
531
+ "nativeDownloadFailed": {
532
+ "message": "Le téléchargement n’a pas abouti — réessaie"
533
+ },
534
+ "nativeDismiss": {
535
+ "message": "Masquer"
536
+ },
537
+ "tabPractice": {
538
+ "message": "Pratique"
539
+ },
540
+ "pxCtaTitle": {
541
+ "message": "S'entraîner maintenant"
542
+ },
543
+ "pxCtaDue": {
544
+ "message": "$COUNT$ mots vous attendent · environ 3 minutes",
545
+ "placeholders": {
546
+ "count": {
547
+ "content": "$1"
548
+ }
549
+ }
550
+ },
551
+ "pxCtaBody": {
552
+ "message": "Une partie rapide et amusante avec vos mots"
553
+ },
554
+ "pxStartTitle": {
555
+ "message": "Prêt à vous entraîner ?"
556
+ },
557
+ "pxStatDue": {
558
+ "message": "à revoir"
559
+ },
560
+ "pxStatWords": {
561
+ "message": "mots dans votre paquet"
562
+ },
563
+ "pxStartBody": {
564
+ "message": "$COUNT$ petits exercices avec les mots que vous avez collectés. Les erreurs reviennent une fois à la fin pour bien les retenir.",
565
+ "placeholders": {
566
+ "count": {
567
+ "content": "$1"
568
+ }
569
+ }
570
+ },
571
+ "pxKindsLabel": {
572
+ "message": "Types d'exercices"
573
+ },
574
+ "pxKindMeaning": {
575
+ "message": "Sens"
576
+ },
577
+ "pxKindListen": {
578
+ "message": "Écoute"
579
+ },
580
+ "pxKindMatch": {
581
+ "message": "Associer"
582
+ },
583
+ "pxKindType": {
584
+ "message": "Écrire"
585
+ },
586
+ "pxKindBlank": {
587
+ "message": "Texte à trous"
588
+ },
589
+ "pxStart": {
590
+ "message": "Commencer"
591
+ },
592
+ "pxEmptyTitle": {
593
+ "message": "Commençons par collecter quelques mots"
594
+ },
595
+ "pxEmptyBody": {
596
+ "message": "Faites une Tiny Lesson pour collecter au moins $COUNT$ mots, puis revenez les pratiquer ici.",
597
+ "placeholders": {
598
+ "count": {
599
+ "content": "$1"
600
+ }
601
+ }
602
+ },
603
+ "pxEmptyCta": {
604
+ "message": "Ouvrir Tiny Lesson"
605
+ },
606
+ "pxAskMeaning": {
607
+ "message": "Qu'est-ce que ça veut dire ?"
608
+ },
609
+ "pxAskReverse": {
610
+ "message": "Choisissez le bon mot"
611
+ },
612
+ "pxAskListen": {
613
+ "message": "Qu'entendez-vous ?"
614
+ },
615
+ "pxAskBlank": {
616
+ "message": "Complétez la phrase"
617
+ },
618
+ "pxBlankGap": {
619
+ "message": "trou"
620
+ },
621
+ "pxAskMatch": {
622
+ "message": "Associez les paires"
623
+ },
624
+ "pxMatchWords": {
625
+ "message": "Mots"
626
+ },
627
+ "pxMatchMeanings": {
628
+ "message": "Sens"
629
+ },
630
+ "pxAskType": {
631
+ "message": "Écrivez-le dans la langue apprise"
632
+ },
633
+ "pxTypePlaceholder": {
634
+ "message": "Tapez votre réponse"
635
+ },
636
+ "pxCheck": {
637
+ "message": "Vérifier"
638
+ },
639
+ "pxContinue": {
640
+ "message": "Continuer"
641
+ },
642
+ "pxPraise1": {
643
+ "message": "Bien joué !"
644
+ },
645
+ "pxPraise2": {
646
+ "message": "Super !"
647
+ },
648
+ "pxPraise3": {
649
+ "message": "C'est ça !"
650
+ },
651
+ "pxWrongTitle": {
652
+ "message": "Pas tout à fait"
653
+ },
654
+ "pxCorrectAnswer": {
655
+ "message": "Bonne réponse :"
656
+ },
657
+ "pxAlmostTitle": {
658
+ "message": "Presque !"
659
+ },
660
+ "pxAlmostBody": {
661
+ "message": "Attention à l'orthographe :"
662
+ },
663
+ "pxMatchAlmost": {
664
+ "message": "Tout est associé, avec quelques erreurs"
665
+ },
666
+ "pxRetry": {
667
+ "message": "Encore un essai"
668
+ },
669
+ "pxCombo": {
670
+ "message": "$COUNT$ d'affilée",
671
+ "placeholders": {
672
+ "count": {
673
+ "content": "$1"
674
+ }
675
+ }
676
+ },
677
+ "pxQuit": {
678
+ "message": "Quitter (rien n'est enregistré)"
679
+ },
680
+ "pxProgress": {
681
+ "message": "Progression de la session"
682
+ },
683
+ "pxEndTitle": {
684
+ "message": "Session terminée !"
685
+ },
686
+ "pxEndPerfect": {
687
+ "message": "Session parfaite !"
688
+ },
689
+ "pxEndXp": {
690
+ "message": "XP gagnés"
691
+ },
692
+ "pxEndAccuracy": {
693
+ "message": "Précision"
694
+ },
695
+ "pxEndWords": {
696
+ "message": "Mots renforcés"
697
+ },
698
+ "pxGoalLine": {
699
+ "message": "$XP$ / $GOAL$ XP aujourd'hui",
700
+ "placeholders": {
701
+ "xp": {
702
+ "content": "$1"
703
+ },
704
+ "goal": {
705
+ "content": "$2"
706
+ }
707
+ }
708
+ },
709
+ "pxSaveFailed": {
710
+ "message": "Impossible d'enregistrer la session : $ERROR$",
711
+ "placeholders": {
712
+ "error": {
713
+ "content": "$1"
714
+ }
715
+ }
716
+ },
717
+ "pxAgain": {
718
+ "message": "Recommencer"
719
+ },
720
+ "pxDone": {
721
+ "message": "Terminé"
722
+ },
723
+ "pxLeaveUnsaved": {
724
+ "message": "Tes résultats ne sont pas encore enregistrés. Appuie de nouveau pour quitter sans enregistrer, ou touche Réessayer."
725
+ },
726
+ "fieldSoundEffects": {
727
+ "message": "Effets sonores pendant la pratique"
728
+ },
729
+ "pxPerfectBonus": {
730
+ "message": "+$XP$ XP de bonus sans faute",
731
+ "placeholders": {
732
+ "xp": {
733
+ "content": "$1"
734
+ }
735
+ }
736
+ },
737
+ "level1": {
738
+ "message": "Nouveau venu"
739
+ },
740
+ "level2": {
741
+ "message": "Explorateur"
742
+ },
743
+ "level3": {
744
+ "message": "Apprenti"
745
+ },
746
+ "level4": {
747
+ "message": "Locuteur"
748
+ },
749
+ "level5": {
750
+ "message": "Causeur"
751
+ },
752
+ "level6": {
753
+ "message": "Conteur"
754
+ },
755
+ "level7": {
756
+ "message": "Ami fluide"
757
+ },
758
+ "level8": {
759
+ "message": "Polyglotte"
760
+ },
761
+ "level9": {
762
+ "message": "Maître"
763
+ },
764
+ "level10": {
765
+ "message": "Légende"
766
+ },
767
+ "ach_perfect_session": {
768
+ "message": "Séance parfaite"
769
+ },
770
+ "ach_xp_100_day": {
771
+ "message": "100 XP en une journée"
772
+ },
773
+ "ach_sessions_10": {
774
+ "message": "10 séances d'entraînement"
775
+ },
776
+ "ach_first_match": {
777
+ "message": "Premier jeu d'association"
778
+ },
779
+ "tabWords": {
780
+ "message": "Mots"
781
+ },
782
+ "wordsHeading": {
783
+ "message": "Tes mots"
784
+ },
785
+ "wordsModeLabel": {
786
+ "message": "Affichage des mots"
787
+ },
788
+ "wordsFilterLabel": {
789
+ "message": "Filtrer les mots"
790
+ },
791
+ "wordsFilterAll": {
792
+ "message": "Tous"
793
+ },
794
+ "wordsFilterDue": {
795
+ "message": "À revoir"
796
+ },
797
+ "wordsFilterNew": {
798
+ "message": "Nouveaux"
799
+ },
800
+ "wordsFilterWeak": {
801
+ "message": "Fragiles"
802
+ },
803
+ "wordsFilterFavorites": {
804
+ "message": "Favoris"
805
+ },
806
+ "wordsFilterMastered": {
807
+ "message": "Maîtrisés"
808
+ },
809
+ "wordsOtherGroup": {
810
+ "message": "Autres mots"
811
+ },
812
+ "wordsNoMatch": {
813
+ "message": "Aucun mot ne correspond. Essaie une autre recherche ou un autre filtre."
814
+ },
815
+ "wordsEmptyTitle": {
816
+ "message": "Pas encore de mots"
817
+ },
818
+ "wordsShowMore": {
819
+ "message": "Afficher plus ($COUNT$ restants)",
820
+ "placeholders": {
821
+ "count": {
822
+ "content": "$1"
823
+ }
824
+ }
825
+ },
826
+ "wordsFavorite": {
827
+ "message": "Favori : $TERM$",
828
+ "placeholders": {
829
+ "term": {
830
+ "content": "$1"
831
+ }
832
+ }
833
+ },
834
+ "wordsFavoriteAdded": {
835
+ "message": "$TERM$ ajouté aux favoris",
836
+ "placeholders": {
837
+ "term": {
838
+ "content": "$1"
839
+ }
840
+ }
841
+ },
842
+ "wordsFavoriteRemoved": {
843
+ "message": "$TERM$ retiré des favoris",
844
+ "placeholders": {
845
+ "term": {
846
+ "content": "$1"
847
+ }
848
+ }
849
+ },
850
+ "wordsListenTo": {
851
+ "message": "Écouter : $TERM$",
852
+ "placeholders": {
853
+ "term": {
854
+ "content": "$1"
855
+ }
856
+ }
857
+ },
858
+ "wordsKnowThis": {
859
+ "message": "Je connais"
860
+ },
861
+ "wordsKnowThisLabel": {
862
+ "message": "Je connais : $TERM$",
863
+ "placeholders": {
864
+ "term": {
865
+ "content": "$1"
866
+ }
867
+ }
868
+ },
869
+ "wordsKnown": {
870
+ "message": "Connu"
871
+ },
872
+ "wordsKnownXp": {
873
+ "message": "Connu · +$XP$ XP",
874
+ "placeholders": {
875
+ "xp": {
876
+ "content": "$1"
877
+ }
878
+ }
879
+ },
880
+ "wordsKnownStatus": {
881
+ "message": "$TERM$ marqué comme connu, +$XP$ XP",
882
+ "placeholders": {
883
+ "term": {
884
+ "content": "$1"
885
+ },
886
+ "xp": {
887
+ "content": "$2"
888
+ }
889
+ }
890
+ },
891
+ "wordsEditNative": {
892
+ "message": "Dans ma langue"
893
+ },
894
+ "wordsEditEnglish": {
895
+ "message": "Sens (leçon)"
896
+ },
897
+ "wordsEditLabel": {
898
+ "message": "Modifier les sens de $TERM$",
899
+ "placeholders": {
900
+ "term": {
901
+ "content": "$1"
902
+ }
903
+ }
904
+ },
905
+ "placeholderNative": {
906
+ "message": "Sens dans ta langue"
907
+ },
908
+ "strengthLabel": {
909
+ "message": "Force $VALUE$ sur $MAX$",
910
+ "placeholders": {
911
+ "value": {
912
+ "content": "$1"
913
+ },
914
+ "max": {
915
+ "content": "$2"
916
+ }
917
+ }
918
+ },
919
+ "todayGoalMet": {
920
+ "message": "Objectif du jour atteint !"
921
+ },
922
+ "streakFreezesLabel": {
923
+ "message": "Gels de série : $COUNT$ (protègent un jour manqué)",
924
+ "placeholders": {
925
+ "count": {
926
+ "content": "$1"
927
+ }
928
+ }
929
+ },
930
+ "bannerFreezeUsed": {
931
+ "message": "Un gel de série a sauvé ta série le $DATE$.",
932
+ "placeholders": {
933
+ "date": {
934
+ "content": "$1"
935
+ }
936
+ }
937
+ },
938
+ "bannerFreezeEarned": {
939
+ "message": "7 jours d'affilée ! Tu as gagné un gel de série."
940
+ },
941
+ "bannerDismiss": {
942
+ "message": "Fermer"
943
+ },
944
+ "practiceTheseWords": {
945
+ "message": "Entraîne-toi sur ces $COUNT$ nouveaux mots",
946
+ "placeholders": {
947
+ "count": {
948
+ "content": "$1"
949
+ }
950
+ }
951
+ },
952
+ "practiceTheseBody": {
953
+ "message": "Tout frais de ta dernière leçon : ancre-les maintenant."
954
+ },
955
+ "scenariosHeading": {
956
+ "message": "Lance une leçon"
957
+ },
958
+ "scenariosBody": {
959
+ "message": "Choisis une situation : LangCoach ouvre Tiny Lesson, la remplit et clique sur Générer pour toi."
960
+ },
961
+ "scenariosMore": {
962
+ "message": "Autres idées"
963
+ },
964
+ "scenarioStart": {
965
+ "message": "Lancer"
966
+ },
967
+ "scenarioStarting": {
968
+ "message": "Lancement…"
969
+ },
970
+ "scenarioStartLabel": {
971
+ "message": "Lancer Tiny Lesson : $THEME$",
972
+ "placeholders": {
973
+ "theme": {
974
+ "content": "$1"
975
+ }
976
+ }
977
+ },
978
+ "scenarioCopyLabel": {
979
+ "message": "Copier : $THEME$",
980
+ "placeholders": {
981
+ "theme": {
982
+ "content": "$1"
983
+ }
984
+ }
985
+ },
986
+ "scenarioOpenTiny": {
987
+ "message": "Ouvrir Tiny Lesson"
988
+ },
989
+ "scenarioStarted": {
990
+ "message": "Ta leçon est en cours de création dans l'onglet Tiny Lesson."
991
+ },
992
+ "scenarioHintSplash": {
993
+ "message": "Tiny Lesson affiche d'abord son écran d'accueil. Clique sur Commencer (et accepte l'avis), puis réessaie."
994
+ },
995
+ "scenarioHintLanguage": {
996
+ "message": "Impossible de choisir ta langue sur la page. Choisis-la là-bas puis relance, ou copie le thème."
997
+ },
998
+ "scenarioHintGenerate": {
999
+ "message": "Le thème est rempli, mais Générer n'était pas prêt. Clique sur Générer sur la page."
1000
+ },
1001
+ "scenarioHintGeneric": {
1002
+ "message": "Impossible de lancer automatiquement. Copie le thème et colle-le dans Tiny Lesson."
1003
+ },
1004
+ "todayTasksHeading": {
1005
+ "message": "Programme du jour"
1006
+ },
1007
+ "levelToNext": {
1008
+ "message": "$XP$ XP avant $NEXT$",
1009
+ "placeholders": {
1010
+ "xp": {
1011
+ "content": "$1"
1012
+ },
1013
+ "next": {
1014
+ "content": "$2"
1015
+ }
1016
+ }
1017
+ },
1018
+ "levelMax": {
1019
+ "message": "Niveau maximal atteint. Légendaire !"
1020
+ },
1021
+ "levelProgressLabel": {
1022
+ "message": "Progression vers le niveau suivant : $PCT$ %",
1023
+ "placeholders": {
1024
+ "pct": {
1025
+ "content": "$1"
1026
+ }
1027
+ }
1028
+ },
1029
+ "weekChartHeading": {
1030
+ "message": "Cette semaine"
1031
+ },
1032
+ "weekChartLabel": {
1033
+ "message": "XP des 7 derniers jours : $TOTAL$ au total, objectif quotidien $GOAL$",
1034
+ "placeholders": {
1035
+ "total": {
1036
+ "content": "$1"
1037
+ },
1038
+ "goal": {
1039
+ "content": "$2"
1040
+ }
1041
+ }
1042
+ },
1043
+ "statFreezes": {
1044
+ "message": "Gels de série"
1045
+ },
1046
+ "achUnlocked": {
1047
+ "message": "débloqué"
1048
+ },
1049
+ "achLocked": {
1050
+ "message": "verrouillé"
1051
+ },
1052
+ "goalPickerLabel": {
1053
+ "message": "Objectif quotidien"
1054
+ },
1055
+ "goalCasual": {
1056
+ "message": "Détente"
1057
+ },
1058
+ "goalRegular": {
1059
+ "message": "Régulier"
1060
+ },
1061
+ "goalSerious": {
1062
+ "message": "Sérieux"
1063
+ },
1064
+ "goalIntense": {
1065
+ "message": "Intense"
1066
+ },
1067
+ "goalXpPerDay": {
1068
+ "message": "$XP$ XP par jour",
1069
+ "placeholders": {
1070
+ "xp": {
1071
+ "content": "$1"
1072
+ }
1073
+ }
1074
+ },
1075
+ "toastForwarded": {
1076
+ "message": "envoyé à ton agent"
1077
+ },
1078
+ "bridgeSection": {
1079
+ "message": "Ton agent IA"
1080
+ },
1081
+ "bridgeHint": {
1082
+ "message": "LangCoach envoie aussi chaque leçon faite ici à l'agent IA de cet ordinateur (le serveur MCP langcoach), pour qu'il s'en souvienne, planifie et t'interroge. Il ne parle qu'à ton propre ordinateur ; rien n'en sort."
1083
+ },
1084
+ "bridgeConnected": {
1085
+ "message": "Connecté à ton agent"
1086
+ },
1087
+ "bridgeWaiting": {
1088
+ "message": "En attente de ton agent (lance-le pour recevoir tes leçons)"
1089
+ },
1090
+ "bridgeOff": {
1091
+ "message": "Désactivé"
1092
+ },
1093
+ "fieldBridge": {
1094
+ "message": "Envoyer mes leçons à mon agent IA"
1095
+ },
1096
+ "bridgeLearnMore": {
1097
+ "message": "Comment le connecter"
1098
+ },
1099
+ "bridgePending": {
1100
+ "message": "$COUNT$ leçons en attente d'envoi",
1101
+ "placeholders": {
1102
+ "count": {
1103
+ "content": "$1",
1104
+ "example": "3"
1105
+ }
1106
+ }
1107
+ },
1108
+ "bridgeNotPaired": {
1109
+ "message": "Non appairé : installe l'extension depuis ton agent pour la connecter"
1110
+ },
1111
+ "bridgeUnverified": {
1112
+ "message": "Serveur non vérifié : un programme de cet ordinateur a répondu sans prouver qu'il est ton agent LangCoach, donc rien n'a été envoyé"
1113
+ },
1114
+ "bridgeHowToPair": {
1115
+ "message": "Comment appairer"
1116
+ }
1117
+ }