From 68383f2dd90a424d40a7c00a26cbbe50ed69ae57 Mon Sep 17 00:00:00 2001 From: William Jordan-Cooley Date: Wed, 16 Oct 2024 14:24:16 -0400 Subject: [PATCH] copy for grammar tags --- assets/l10n/intl_en.arb | 129 +++++++- lib/pangea/utils/get_grammar_copy.dart | 285 ++++++++++++++++++ .../analytics_summary/analytics_popup.dart | 10 +- 3 files changed, 422 insertions(+), 2 deletions(-) create mode 100644 lib/pangea/utils/get_grammar_copy.dart diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 282acab40..d471f0992 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -4237,5 +4237,132 @@ "l2SupportNa": "Not Available", "l2SupportAlpha": "Alpha", "l2SupportBeta": "Beta", - "l2SupportFull": "Full" + "l2SupportFull": "Full", + "grammarCopySCONJ": "Subordinating Conjunction", + "grammarCopyNUM": "Number", + "grammarCopyVERB": "Verb", + "grammarCopyAFFIX": "Affix", + "grammarCopyPARTpos": "Particle", + "grammarCopyADJ": "Adjective", + "grammarCopyCCONJ": "Coordinating Conjunction", + "grammarCopyPUNCT": "Punctuation", + "grammarCopyADV": "Adverb", + "grammarCopyAUX": "Auxiliary", + "grammarCopySPACE": "Space", + "grammarCopySYM": "Symbol", + "grammarCopyDET": "Determiner", + "grammarCopyPRON": "Pronoun", + "grammarCopyADP": "Adposition", + "grammarCopyPROPN": "Proper Noun", + "grammarCopyNOUN": "Noun", + "grammarCopyINTJ": "Interjection", + "grammarCopyX": "Other", + "grammarCopyFem": "Feminine", + "grammarCopy2": "Second Person", + "grammarCopyImp": "Imperative", + "grammarCopyQest": "Question", + "grammarCopyPerf": "Perfect", + "grammarCopyAccNom": "Accusative, Nominative", + "grammarCopyObl": "Oblique Case", + "grammarCopyAct": "Active", + "grammarCopyTense_unknown": "Tense Unknown", + "grammarCopyBrck": "Bracket", + "grammarCopyAspect_unknown": "Aspect Unknown", + "grammarCopyArt": "Article", + "grammarCopySing": "Singular", + "grammarCopyMood_unknown": "Mood Unknown", + "grammarCopyMasc": "Masculine", + "grammarCopyMod": "Modal", + "grammarCopyAdverbial": "Adverbial", + "grammarCopyPeri": "Periphrastic", + "grammarCopyDigit": "Digit", + "grammarCopyNot_proper": "Not Proper", + "grammarCopyCard": "Cardinal", + "grammarCopyProp": "Proper", + "grammarCopyDash": "Dash", + "grammarCopyYes": "Yes", + "grammarCopySemi": "Semicolon", + "grammarCopyComm": "Comma", + "grammarCopyCnd": "Conditional", + "grammarCopyIntRel": "Interrogative, Relative", + "grammarCopyAcc": "Accusative", + "grammarCopyVoice_unknown": "Voice Unknown", + "grammarCopyPartTag": "Partitive", + "grammarCopyInt": "Interrogative", + "grammarCopyPast": "Past", + "grammarCopySup": "Superlative", + "grammarCopyColo": "Colon", + "grammarCopy3": "Third Person", + "grammarCopyPlur": "Plural", + "grammarCopyNpr": "Proper Noun", + "grammarCopyInterrogative": "Interrogative", + "grammarCopyInfm": "Informal", + "grammarCopyTim": "Time", + "grammarCopyPerson_unknown": "Person Unknown", + "grammarCopyNeg": "Negative", + "grammarCopyTot": "Total", + "grammarCopyCase_unknown": "Case Unknown", + "grammarCopyAdnomial": "Adnominal", + "grammarCopyProg": "Progressive", + "grammarCopySub": "Subjunctive", + "grammarCopyComplementive": "Complementive", + "grammarCopyNom": "Nominative", + "grammarCopyFut": "Future", + "grammarCopyDat": "Dative", + "grammarCopyPres": "Present", + "grammarCopyNeut": "Neuter", + "grammarCopyRel": "Relative", + "grammarCopyFinal_ending": "Final Ending", + "grammarCopyDem": "Demonstrative", + "grammarCopyPre": "Preposition", + "grammarCopyFin": "Finite", + "grammarCopyGender_unknown": "Gender Unknown", + "grammarCopyPos": "Positive", + "grammarCopyQuot": "Quotation", + "grammarCopyGer": "Gerund", + "grammarCopyPass": "Passive", + "grammarCopyGen": "Genitive", + "grammarCopyNumber_unknown": "Number Unknown", + "grammarCopyPrs": "Present", + "grammarCopyDef": "Definite", + "grammarCopyOrd": "Ordinal", + "grammarCopyIns": "Instrumental", + "grammarCopyAccDat": "Accusative, Dative", + "grammarCopyInf": "Infinitive", + "grammarCopyLong": "Long", + "grammarCopyInd": "Indicative", + "grammarCopyCmp": "Comparative", + "grammarCopyRelative_case": "Relative Case", + "grammarCopyExcl": "Exclamative", + "grammarCopy1": "First Person", + "grammarCopyIni": "Initial", + "grammarCopyForm_unknown": "Form Unknown", + "grammarCopyPerson": "Person", + "grammarCopyForeign": "Foreign", + "grammarCopyVoice": "Voice", + "grammarCopyVerbType": "Verb Type", + "grammarCopyPoss": "Possessive", + "grammarCopyPrepCase": "Prepositional Case", + "grammarCopyNumType": "Numeral Type", + "grammarCopyNounType": "Noun Type", + "grammarCopyReflex": "Reflexive", + "grammarCopyPronType": "Pronoun Type", + "grammarCopyPunctSide": "Punctuation Side", + "grammarCopyVerbForm": "Verb Form", + "grammarCopyGender": "Gender", + "grammarCopyMood": "Mood", + "grammarCopyAspect": "Aspect", + "grammarCopyPunctType": "Punctuation Type", + "grammarCopyTense": "Tense", + "grammarCopyDegree": "Degree", + "grammarCopyPolite": "Politeness", + "grammarCopyAdvType": "Adverb Type", + "grammarCopyNumber": "Number", + "grammarCopyConjType": "Conjunction Type", + "grammarCopyPolarity": "Polarity", + "grammarCopyNumberPsor": "Possessor's Number", + "grammarCopyCase": "Case", + "grammarCopyDefinite": "Definiteness", + "grammarCopyNumForm": "Numeral Form", + "grammarCopyUnknown": "Unknown" } \ No newline at end of file diff --git a/lib/pangea/utils/get_grammar_copy.dart b/lib/pangea/utils/get_grammar_copy.dart new file mode 100644 index 000000000..69b06b177 --- /dev/null +++ b/lib/pangea/utils/get_grammar_copy.dart @@ -0,0 +1,285 @@ +import 'dart:developer'; + +import 'package:fluffychat/pangea/utils/error_handler.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; + +String getGrammarCopy(String tag, BuildContext context) { + switch (tag) { + case 'SCONJ': + return L10n.of(context)!.grammarCopySCONJ; + case 'NUM': + return L10n.of(context)!.grammarCopyNUM; + case 'VERB': + return L10n.of(context)!.grammarCopyVERB; + case 'AFFIX': + return L10n.of(context)!.grammarCopyAFFIX; + case 'PART': + return L10n.of(context)!.grammarCopyPARTpos; + case 'ADJ': + return L10n.of(context)!.grammarCopyADJ; + case 'CCONJ': + return L10n.of(context)!.grammarCopyCCONJ; + case 'PUNCT': + return L10n.of(context)!.grammarCopyPUNCT; + case 'ADV': + return L10n.of(context)!.grammarCopyADV; + case 'AUX': + return L10n.of(context)!.grammarCopyAUX; + case 'SPACE': + return L10n.of(context)!.grammarCopySPACE; + case 'SYM': + return L10n.of(context)!.grammarCopySYM; + case 'DET': + return L10n.of(context)!.grammarCopyDET; + case 'PRON': + return L10n.of(context)!.grammarCopyPRON; + case 'ADP': + return L10n.of(context)!.grammarCopyADP; + case 'PROPN': + return L10n.of(context)!.grammarCopyPROPN; + case 'NOUN': + return L10n.of(context)!.grammarCopyNOUN; + case 'INTJ': + return L10n.of(context)!.grammarCopyINTJ; + case 'X': + return L10n.of(context)!.grammarCopyX; + case 'Fem': + return L10n.of(context)!.grammarCopyFem; + case '2': + return L10n.of(context)!.grammarCopy2; + case 'Imp': + return L10n.of(context)!.grammarCopyImp; + case 'Qest': + return L10n.of(context)!.grammarCopyQest; + case 'Perf': + return L10n.of(context)!.grammarCopyPerf; + case 'Acc,Nom': + return L10n.of(context)!.grammarCopyAccNom; + case 'Obl': + return L10n.of(context)!.grammarCopyObl; + case 'Act': + return L10n.of(context)!.grammarCopyAct; + case 'Tense_unknown': + return L10n.of(context)!.grammarCopyTense_unknown; + case 'Brck': + return L10n.of(context)!.grammarCopyBrck; + case 'Aspect_unknown': + return L10n.of(context)!.grammarCopyAspect_unknown; + case 'Art': + return L10n.of(context)!.grammarCopyArt; + case 'Sing': + return L10n.of(context)!.grammarCopySing; + case 'Mood_unknown': + return L10n.of(context)!.grammarCopyMood_unknown; + case 'Masc': + return L10n.of(context)!.grammarCopyMasc; + case 'Mod': + return L10n.of(context)!.grammarCopyMod; + case 'Adverbial': + return L10n.of(context)!.grammarCopyAdverbial; + case 'Peri': + return L10n.of(context)!.grammarCopyPeri; + case 'Digit': + return L10n.of(context)!.grammarCopyDigit; + case 'Not_proper': + return L10n.of(context)!.grammarCopyNot_proper; + case 'Card': + return L10n.of(context)!.grammarCopyCard; + case 'Prop': + return L10n.of(context)!.grammarCopyProp; + case 'Dash': + return L10n.of(context)!.grammarCopyDash; + case 'Yes': + return L10n.of(context)!.grammarCopyYes; + case 'Semi': + return L10n.of(context)!.grammarCopySemi; + case 'Comm': + return L10n.of(context)!.grammarCopyComm; + case 'Cnd': + return L10n.of(context)!.grammarCopyCnd; + case 'Int,Rel': + return L10n.of(context)!.grammarCopyIntRel; + case 'Acc': + return L10n.of(context)!.grammarCopyAcc; + case 'Voice_unknown': + return L10n.of(context)!.grammarCopyVoice_unknown; + case 'Part': + return L10n.of(context)! + .grammarCopyPartTag; // To avoid conflict with 'PART' POS + case 'Int': + return L10n.of(context)!.grammarCopyInt; + case 'Past': + return L10n.of(context)!.grammarCopyPast; + case 'Sup': + return L10n.of(context)!.grammarCopySup; + case 'Colo': + return L10n.of(context)!.grammarCopyColo; + case '3': + return L10n.of(context)!.grammarCopy3; + case 'Plur': + return L10n.of(context)!.grammarCopyPlur; + case 'Npr': + return L10n.of(context)!.grammarCopyNpr; + case 'Interrogative': + return L10n.of(context)!.grammarCopyInterrogative; + case 'Infm': + return L10n.of(context)!.grammarCopyInfm; + case 'Tim': + return L10n.of(context)!.grammarCopyTim; + case 'Person_unknown': + return L10n.of(context)!.grammarCopyPerson_unknown; + case 'Neg': + return L10n.of(context)!.grammarCopyNeg; + case 'Tot': + return L10n.of(context)!.grammarCopyTot; + case 'Case_unknown': + return L10n.of(context)!.grammarCopyCase_unknown; + case 'Adnomial': + return L10n.of(context)!.grammarCopyAdnomial; + case 'Prog': + return L10n.of(context)!.grammarCopyProg; + case 'Sub': + return L10n.of(context)!.grammarCopySub; + case 'Complementive': + return L10n.of(context)!.grammarCopyComplementive; + case 'Nom': + return L10n.of(context)!.grammarCopyNom; + case 'Fut': + return L10n.of(context)!.grammarCopyFut; + case 'Dat': + return L10n.of(context)!.grammarCopyDat; + case 'Pres': + return L10n.of(context)!.grammarCopyPres; + case 'Neut': + return L10n.of(context)!.grammarCopyNeut; + case 'Rel': + return L10n.of(context)!.grammarCopyRel; + case 'Final_ending': + return L10n.of(context)!.grammarCopyFinal_ending; + case 'Dem': + return L10n.of(context)!.grammarCopyDem; + case 'Pre': + return L10n.of(context)!.grammarCopyPre; + case 'Fin': + return L10n.of(context)!.grammarCopyFin; + case 'Gender_unknown': + return L10n.of(context)!.grammarCopyGender_unknown; + case 'Pos': + return L10n.of(context)!.grammarCopyPos; + case 'Quot': + return L10n.of(context)!.grammarCopyQuot; + case 'Ger': + return L10n.of(context)!.grammarCopyGer; + case 'Pass': + return L10n.of(context)!.grammarCopyPass; + case 'Gen': + return L10n.of(context)!.grammarCopyGen; + case 'Number_unknown': + return L10n.of(context)!.grammarCopyNumber_unknown; + case 'Prs': + return L10n.of(context)!.grammarCopyPrs; + case 'Def': + return L10n.of(context)!.grammarCopyDef; + case 'Ord': + return L10n.of(context)!.grammarCopyOrd; + case 'Ins': + return L10n.of(context)!.grammarCopyIns; + case 'Acc,Dat': + return L10n.of(context)!.grammarCopyAccDat; + case 'Inf': + return L10n.of(context)!.grammarCopyInf; + case 'Long': + return L10n.of(context)!.grammarCopyLong; + case 'Ind': + return L10n.of(context)!.grammarCopyInd; + case 'Cmp': + return L10n.of(context)!.grammarCopyCmp; + case 'Relative_case': + return L10n.of(context)!.grammarCopyRelative_case; + case 'Excl': + return L10n.of(context)!.grammarCopyExcl; + case '1': + return L10n.of(context)!.grammarCopy1; + case 'Ini': + return L10n.of(context)!.grammarCopyIni; + case 'Form_unknown': + return L10n.of(context)!.grammarCopyForm_unknown; + case 'Person': + return L10n.of(context)!.grammarCopyPerson; + case 'Foreign': + return L10n.of(context)!.grammarCopyForeign; + case 'Voice': + return L10n.of(context)!.grammarCopyVoice; + case 'VerbType': + return L10n.of(context)!.grammarCopyVerbType; + case 'Poss': + return L10n.of(context)!.grammarCopyPoss; + case 'PrepCase': + return L10n.of(context)!.grammarCopyPrepCase; + case 'NumType': + return L10n.of(context)!.grammarCopyNumType; + case 'NounType': + return L10n.of(context)!.grammarCopyNounType; + case 'Reflex': + return L10n.of(context)!.grammarCopyReflex; + case 'PronType': + return L10n.of(context)!.grammarCopyPronType; + case 'PunctSide': + return L10n.of(context)!.grammarCopyPunctSide; + case 'VerbForm': + return L10n.of(context)!.grammarCopyVerbForm; + case 'Gender': + return L10n.of(context)!.grammarCopyGender; + case 'Mood': + return L10n.of(context)!.grammarCopyMood; + case 'Aspect': + return L10n.of(context)!.grammarCopyAspect; + case 'PunctType': + return L10n.of(context)!.grammarCopyPunctType; + case 'Tense': + return L10n.of(context)!.grammarCopyTense; + case 'Degree': + return L10n.of(context)!.grammarCopyDegree; + case 'Polite': + return L10n.of(context)!.grammarCopyPolite; + case 'AdvType': + return L10n.of(context)!.grammarCopyAdvType; + case 'Number': + return L10n.of(context)!.grammarCopyNumber; + case 'ConjType': + return L10n.of(context)!.grammarCopyConjType; + case 'Polarity': + return L10n.of(context)!.grammarCopyPolarity; + case 'Number[psor]': + return L10n.of(context)!.grammarCopyNumberPsor; + case 'Case': + return L10n.of(context)!.grammarCopyCase; + case 'Definite': + return L10n.of(context)!.grammarCopyDefinite; + case 'NumForm': + return L10n.of(context)!.grammarCopyNumForm; + // Handle empty tag + case '': + ErrorHandler.logError( + e: Exception('Empty tag'), + m: 'Empty tag in getGrammarCopy', + data: { + 'context': context, + }, + ); + return L10n.of(context)!.grammarCopyUnknown; + default: + debugger(when: kDebugMode); + ErrorHandler.logError( + e: Exception('Need to add copy for $tag to intl_en.arb'), + m: 'Need to add copy for $tag to intl_en.arb', + data: { + 'tag': tag, + 'context': context, + }, + ); + return tag; // Fallback to the tag itself if no match is found + } +} diff --git a/lib/pangea/widgets/chat_list/analytics_summary/analytics_popup.dart b/lib/pangea/widgets/chat_list/analytics_summary/analytics_popup.dart index 321795e24..9dcc7b06b 100644 --- a/lib/pangea/widgets/chat_list/analytics_summary/analytics_popup.dart +++ b/lib/pangea/widgets/chat_list/analytics_summary/analytics_popup.dart @@ -1,6 +1,8 @@ import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/pangea/enum/construct_type_enum.dart'; import 'package:fluffychat/pangea/enum/progress_indicators_enum.dart'; import 'package:fluffychat/pangea/models/analytics/construct_list_model.dart'; +import 'package:fluffychat/pangea/utils/get_grammar_copy.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; @@ -47,7 +49,13 @@ class AnalyticsPopup extends StatelessWidget { child: ListTile( onTap: () {}, title: Text( - constructsModel.constructList[index].lemma, + constructsModel.type == ConstructTypeEnum.morph + ? getGrammarCopy( + constructsModel + .constructList[index].lemma, + context, + ) + : constructsModel.constructList[index].lemma, ), subtitle: LinearProgressIndicator( value: