diff --git a/lib/config/flavors/ui_string.dart b/lib/config/flavors/ui_string.dart index 9343658..be70191 100644 --- a/lib/config/flavors/ui_string.dart +++ b/lib/config/flavors/ui_string.dart @@ -44,6 +44,44 @@ abstract class UiString { // Game abstract String ttlHiddenLevel; abstract String lblChainGameLevel; + abstract String lblHiddenWords; + abstract String lblSnackbarMuted; + abstract String lblSnackbarUnmuted; + + // Game - Dialogs + abstract String ttlChainNewGameMode; + abstract String lblChainNewGameModeDescription; + abstract String lblChainNewGameModeTryIt; + abstract String btnGotIt; + + abstract String ttlHiddenComponents; + abstract String lblHiddenComponentsDescription; + + abstract String ttlHints; + abstract String lblHintsDescription; + abstract String lblHintsTryIt; + + abstract String ttlMissingCompounds; + abstract String lblMissingCompoundsDescription; + abstract String lblMissingCompoundsDescription2; + + abstract List ttlLevelCompletedVariants; + abstract String lblLevelCompleted; + abstract String lblDifficulty; + abstract String lblMistakes; + abstract String btnContinue; + abstract String btnBackToOverview; + + abstract String ttlNoAttemptsLeft; + abstract String btnContinueWithHint; + abstract String btnRestartGame; + + abstract String ttlReport; + abstract String lblReportDescription; + abstract String btnCancel; + abstract String btnSend; + abstract String lblEnterWordHint; + // Ads abstract String lblDoYouEnjoy; @@ -92,6 +130,60 @@ class UiStringDe extends UiString { // Game String ttlHiddenLevel = "Verstecktes Level"; String lblChainGameLevel = "Wortkette"; + String lblHiddenWords = "Versteckte Wörter"; + String lblSnackbarMuted = "Lautlos"; + String lblSnackbarUnmuted = "Ton an"; + + // Game - Dialogs + String ttlChainNewGameMode = "💡 Neuer Spielmodus: Wortkette!"; + String lblChainNewGameModeDescription = "Bei diesem Spielmodus ist das erste Wort gegeben und du musst nur das dazugehörige zweite Wort finden. " + "Danach geht es immer so weiter und es bildet sich ein lange Wortkette."; + String lblChainNewGameModeTryIt = "Probier es einfach aus!"; + String btnGotIt = "Alles klar"; + + String ttlHiddenComponents = "💡 Verdeckte Wörter"; + String lblHiddenComponentsDescription = "Verdeckte Wörter werden erst sichtbar, wenn du andere Wörter richtig kombinierst!"; + + String ttlHints = "💡 Tipps"; + String lblHintsDescription = "Wenn du Hilfe brauchst und nicht mehr weiter weißt, benutze einen Tipp!"; + String lblHintsTryIt = "Probier es einfach aus, der erste Tipp geht aufs Haus!"; + + String ttlMissingCompounds = "💡 Fehlende Wörter"; + String lblMissingCompoundsDescription = "Hast du ein richtiges Wort kombiniert, aber es wird nicht aktzeptiert? " + "Du kannst diese Wörter melden und wir kümmern uns darum!"; + String lblMissingCompoundsDescription2 = "Du kannst diese Wörter melden und wir kümmern uns darum!"; + + List ttlLevelCompletedVariants = [ + "Glückwunsch!", + "Super!", + "Fantastisch!", + "Perfekt!", + "Gut gemacht!", + "Bravo!", + "Genial!", + "Sensationell!", + "Klasse!", + "Wow!", + "Ausgezeichnet!", + "Großartig!", + "Einfach stark!" + ]; + String lblLevelCompleted = "Level geschaft!"; + String lblDifficulty = "Schwierigkeit"; + String lblMistakes = "Fehler"; + String btnContinue = "Weiter"; + String btnBackToOverview = "Zurück zur Übersicht"; + + String ttlNoAttemptsLeft = "Du hast alle Versuche aufgebraucht!"; + String btnContinueWithHint = "Mit Tipp fortfahren"; + String btnRestartGame = "Neustarten"; + + String ttlReport = "Du hast ein fehlendes Wort gefunden?"; + String lblReportDescription = "Danke, dass du uns hilfst das Spiel noch besser zu machen!"; + String btnCancel = "Abbrechen"; + String btnSend = "Senden"; + String lblEnterWordHint = "Wort eingeben"; + // Ads String lblDoYouEnjoy = "Gefällt dir"; @@ -153,6 +245,58 @@ class UiStringEn extends UiString { // Game String ttlHiddenLevel = "Hidden Level"; String lblChainGameLevel = "Chain"; + String lblHiddenWords = "Hidden Words"; + String lblSnackbarMuted = "Muted"; + String lblSnackbarUnmuted = "Unmuted"; + + // Game - Dialogs + String ttlChainNewGameMode = "💡 New Game Mode: Chain!"; + String lblChainNewGameModeDescription = "In this game mode, the first word is given and you only have to find the corresponding second word. " + "After that, it continues like this and a long chain of words is formed."; + String lblChainNewGameModeTryIt = "Just try it out!"; + String btnGotIt = "Got it"; + + String ttlHiddenComponents = "💡 Hidden Words"; + String lblHiddenComponentsDescription = "Hidden words only become visible when you combine other words correctly!"; + + String ttlHints = "💡 Hints"; + String lblHintsDescription = "If you need help and don't know what to do next, use a hint!"; + String lblHintsTryIt = "Just try it out, the first hint is on the house!"; + + String ttlMissingCompounds = "💡 Missing Words"; + String lblMissingCompoundsDescription = "Have you combined a correct word, but it is not accepted? " + "You can report these words and we will take care of it!"; + String lblMissingCompoundsDescription2 = "You can report these words and we will take care of it!"; + + List ttlLevelCompletedVariants = [ + "Congratulations!", + "Great!", + "Fantastic!", + "Perfect!", + "Well done!", + "Bravo!", + "Genius!", + "Wow!", + "Excellent!", + "Great!", + "Simply great!" + ]; + String lblLevelCompleted = "Level completed!"; + String lblDifficulty = "Difficulty"; + String lblMistakes = "Mistakes"; + String btnContinue = "Continue"; + String btnBackToOverview = "Back to Overview"; + + String ttlNoAttemptsLeft = "You have used all attempts!"; + String btnContinueWithHint = "Continue with Hint"; + String btnRestartGame = "Restart"; + + String ttlReport = "Did you find a missing word?"; + String lblReportDescription = "Thank you for helping us make the game even better!"; + String btnCancel = "Cancel"; + String btnSend = "Send"; + String lblEnterWordHint = "Enter word"; + // Ads String lblDoYouEnjoy = "Do you enjoy"; diff --git a/lib/widgets/play/bottom_content.dart b/lib/widgets/play/bottom_content.dart index 949fe05..53ef837 100644 --- a/lib/widgets/play/bottom_content.dart +++ b/lib/widgets/play/bottom_content.dart @@ -1,5 +1,6 @@ import 'package:animated_flip_counter/animated_flip_counter.dart'; import 'package:flutter/material.dart'; +import 'package:kompositum/config/flavors/flavor.dart'; import 'package:kompositum/config/star_costs_rewards.dart'; import 'package:kompositum/widgets/common/my_3d_container.dart'; @@ -189,10 +190,12 @@ class HiddenComponentsIndicator extends StatelessWidget { textStyle: Theme.of(context).textTheme.titleSmall, padding: const EdgeInsets.only(top: 0.0), ), - Text("verdeckte Wörter", - style: Theme.of(context).textTheme.labelSmall!.copyWith( - color: MyColorPalette.of(context).textSecondary, - )) + Text( + Flavor.instance.uiString.lblHiddenWords, + style: Theme.of(context).textTheme.labelSmall!.copyWith( + color: MyColorPalette.of(context).textSecondary, + ) + ), ], )), ); diff --git a/lib/widgets/play/combination_area.dart b/lib/widgets/play/combination_area.dart index 559f319..bdc033b 100644 --- a/lib/widgets/play/combination_area.dart +++ b/lib/widgets/play/combination_area.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:kompositum/config/flavors/flavor.dart'; import 'package:kompositum/config/my_icons.dart'; import 'package:kompositum/game/game_event/game_event.dart'; import 'package:kompositum/widgets/common/my_icon_button.dart'; @@ -94,8 +95,9 @@ class _CombinationAreaState extends State { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(AudioManager.instance.isMuted - ? "Lautlos" - : "Ton an"), + ? Flavor.instance.uiString.lblSnackbarMuted + : Flavor.instance.uiString.lblSnackbarUnmuted + ), behavior: SnackBarBehavior.floating, duration: const Duration(milliseconds: 1500), ), diff --git a/lib/widgets/play/dialogs/level_completed_dialog.dart b/lib/widgets/play/dialogs/level_completed_dialog.dart index 5855116..e807248 100644 --- a/lib/widgets/play/dialogs/level_completed_dialog.dart +++ b/lib/widgets/play/dialogs/level_completed_dialog.dart @@ -69,21 +69,7 @@ class LevelCompletedDialogResult { class LevelCompletedDialog extends StatefulWidget { - static const List titles = [ - "Glückwunsch!", - "Super!", - "Fantastisch!", - "Perfekt!", - "Gut gemacht!", - "Bravo!", - "Genial!", - "Sensationell!", - "Klasse!", - "Wow!", - "Ausgezeichnet!", - "Großartig!", - "Einfach stark!" - ]; + static List titles = Flavor.instance.uiString.ttlLevelCompletedVariants; LevelCompletedDialog({ super.key, @@ -178,7 +164,7 @@ class _LevelCompletedDialogState extends State { ), SizedBox(height: 12), Text( - "Level geschaft!", + Flavor.instance.uiString.lblLevelCompleted, style: Theme.of(context).textTheme.labelSmall, ), Expanded(child: Container()), @@ -302,13 +288,13 @@ class _LevelRewardCalculationState extends State { ), SizedBox(height: 16.0), LevelInfo( - infoName: "Schwierigkeit", + infoName: Flavor.instance.uiString.lblDifficulty, infoValue: Flavor.instance.uiString.getDifficultyText(widget.difficulty), hidden: _hideDifficulty, ), SizedBox(height: 4.0), LevelInfo( - infoName: "Fehler", + infoName: Flavor.instance.uiString.lblMistakes, infoValue: widget.failedAttempts.toString(), hidden: _hideFailedAttempts, ), @@ -369,7 +355,7 @@ class _BottomContent extends StatelessWidget { Widget build(BuildContext context) { if (type == LevelCompletedDialogType.classic) { return MyPrimaryTextButtonLarge( - text: "Weiter", + text: Flavor.instance.uiString.btnContinue, onPressed: () { onContinue(LevelCompletedDialogResultType.classic_continue); }, @@ -378,14 +364,14 @@ class _BottomContent extends StatelessWidget { return Column( children: [ MySecondaryTextButton( - text: "Zurück zur Übersicht", + text: Flavor.instance.uiString.btnBackToOverview, onPressed: () { onContinue(LevelCompletedDialogResultType.daily_backToOverview); }, ), SizedBox(height: 8), MyPrimaryTextButton( - text: "Level $nextLevelNumber", + text: Flavor.instance.uiString.lblLevelIndicator + " $nextLevelNumber", onPressed: () { onContinue(LevelCompletedDialogResultType.daily_continueWithClassic); }, @@ -394,7 +380,7 @@ class _BottomContent extends StatelessWidget { ); } else if (type == LevelCompletedDialogType.secretLevel) { return MyPrimaryTextButtonLarge( - text: "Weiter", + text: Flavor.instance.uiString.btnContinue, onPressed: () { onContinue(LevelCompletedDialogResultType.secretLevel_continue); }, diff --git a/lib/widgets/play/dialogs/no_attempts_left_dialog.dart b/lib/widgets/play/dialogs/no_attempts_left_dialog.dart index ffbd9e0..8c90bf8 100644 --- a/lib/widgets/play/dialogs/no_attempts_left_dialog.dart +++ b/lib/widgets/play/dialogs/no_attempts_left_dialog.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:kompositum/config/flavors/flavor.dart'; import 'package:kompositum/widgets/common/my_buttons.dart'; import 'package:kompositum/widgets/common/util/corner_radius.dart'; @@ -31,14 +32,14 @@ class NoAttemptsLeftDialog extends StatelessWidget { @override Widget build(BuildContext context) { return MyDialog( - title: "Du hast alle Versuche aufgebraucht!", + title: Flavor.instance.uiString.ttlNoAttemptsLeft, child: Column( children: [ OptionCard( icon: MyIcons.hint, iconSubtitleText: "$hintCost", iconSubtitleIcon: MyIcons.star, - actionText: "Mit Tipp fortfahren", + actionText: Flavor.instance.uiString.btnContinueWithHint, onActionPressed: () { onActionPressed(NoAttemptsLeftDialogAction.hint); }, isEnabled: isHintAvailable, roundTop: true, @@ -46,9 +47,9 @@ class NoAttemptsLeftDialog extends StatelessWidget { SizedBox(height: 8), OptionCard( icon: FontAwesomeIcons.redo, - iconSubtitleText: "Werbung", + iconSubtitleText: Flavor.instance.uiString.lblAd, iconSubtitleIcon: MyIcons.ad, - actionText: "Neustarten", + actionText: Flavor.instance.uiString.btnRestartGame, onActionPressed: () { onActionPressed(NoAttemptsLeftDialogAction.restart); }, roundBottom: true, ), diff --git a/lib/widgets/play/dialogs/report_dialog.dart b/lib/widgets/play/dialogs/report_dialog.dart index 33175bc..ca5a1d5 100644 --- a/lib/widgets/play/dialogs/report_dialog.dart +++ b/lib/widgets/play/dialogs/report_dialog.dart @@ -1,6 +1,7 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:kompositum/config/flavors/flavor.dart'; import 'package:kompositum/util/extensions/color_util.dart'; import 'package:kompositum/widgets/common/my_buttons.dart'; import 'package:kompositum/widgets/common/my_dialog.dart'; @@ -62,7 +63,7 @@ class _ReportDialogState extends State { @override Widget build(BuildContext context) { return MyDialog( - title: "Du hast ein fehlendes Wort gefunden?", + title: Flavor.instance.uiString.ttlReport, child: Column( children: [ SizedBox(height: 16), @@ -88,7 +89,7 @@ class _ReportDialogState extends State { Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Text( - "Danke, dass du uns hilfst das Spiel noch besser zu machen!", + Flavor.instance.uiString.lblReportDescription, textAlign: TextAlign.center, style: Theme.of(context).textTheme.labelSmall!.copyWith( color: Theme.of(context).colorScheme.onSecondary, @@ -129,7 +130,7 @@ class ActionButtonRow extends StatelessWidget { return Row( children: [ MySecondaryTextButton( - text: "Abbrechen", + text: Flavor.instance.uiString.btnCancel, onPressed: onCancelPressed, ), SizedBox(width: 8), @@ -160,7 +161,7 @@ class ActionButtonRow extends StatelessWidget { ); } else { content = Text( - "Senden", + Flavor.instance.uiString.btnSend, style: Theme.of(context).textTheme.labelMedium!.copyWith( color: isSendEnabled ? Theme.of(context).colorScheme.onPrimary @@ -228,7 +229,7 @@ class InputRow extends StatelessWidget { Expanded( child: TextField( decoration: InputDecoration( - hintText: "Wort eingeben", + hintText: Flavor.instance.uiString.lblEnterWordHint, hintStyle: Theme.of(context).textTheme.labelLarge!.copyWith( color: MyColorPalette.of(context).primary, fontStyle: FontStyle.italic, diff --git a/lib/widgets/play/dialogs/tutorials/chain_mode_intro_dialog.dart b/lib/widgets/play/dialogs/tutorials/chain_mode_intro_dialog.dart index ffa6ae8..05ab85e 100644 --- a/lib/widgets/play/dialogs/tutorials/chain_mode_intro_dialog.dart +++ b/lib/widgets/play/dialogs/tutorials/chain_mode_intro_dialog.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:kompositum/config/flavors/flavor.dart'; import 'package:kompositum/config/my_icons.dart'; import 'package:kompositum/config/my_theme.dart'; import 'package:kompositum/widgets/common/my_buttons.dart'; @@ -17,12 +18,11 @@ class ChainModeIntroDialog extends StatelessWidget { @override Widget build(BuildContext context) { return MyDialog( - title: "💡 Neuer Spielmodus: Wortkette!", + title: Flavor.instance.uiString.ttlChainNewGameMode, child: Column( children: [ Text( - "Bei diesem Spielmodus ist das erste Wort gegeben und du musst nur das dazugehörige zweite Wort finden. " - "Danach geht es immer so weiter und es bildet sich ein lange Wortkette.", + Flavor.instance.uiString.lblChainNewGameModeDescription, style: Theme.of(context).textTheme.labelLarge, textAlign: TextAlign.center, ), @@ -33,14 +33,14 @@ class ChainModeIntroDialog extends StatelessWidget { ), SizedBox(height: 32), Text( - "Probier es einfach aus!", + Flavor.instance.uiString.lblChainNewGameModeTryIt, style: Theme.of(context).textTheme.labelLarge, textAlign: TextAlign.center, ), SizedBox(height: 32), FittedBox( child: MyPrimaryTextButton( - text: "Alles klar", + text: Flavor.instance.uiString.btnGotIt, onPressed: () { Navigator.of(context).pop(); } diff --git a/lib/widgets/play/dialogs/tutorials/hidden_components_tutorial_dialog.dart b/lib/widgets/play/dialogs/tutorials/hidden_components_tutorial_dialog.dart index c94c1c5..19235fa 100644 --- a/lib/widgets/play/dialogs/tutorials/hidden_components_tutorial_dialog.dart +++ b/lib/widgets/play/dialogs/tutorials/hidden_components_tutorial_dialog.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:kompositum/config/flavors/flavor.dart'; import 'package:kompositum/config/my_theme.dart'; import 'package:kompositum/widgets/common/my_buttons.dart'; @@ -14,18 +15,18 @@ class HiddenComponentsTutorialDialog extends StatelessWidget { @override Widget build(BuildContext context) { return MyDialog( - title: "💡 Verdeckte Wörter", + title: Flavor.instance.uiString.ttlHiddenComponents, child: Column( children: [ Text( - "Verdeckte Wörter werden erst sichtbar, wenn du andere Wörter richtig kombinierst!", + Flavor.instance.uiString.lblHiddenComponentsDescription, style: Theme.of(context).textTheme.labelLarge, textAlign: TextAlign.center, ), SizedBox(height: 32), FittedBox( child: MyPrimaryTextButton( - text: "Alles klar", + text: Flavor.instance.uiString.btnGotIt, onPressed: () { Navigator.of(context).pop(); } diff --git a/lib/widgets/play/dialogs/tutorials/hints_tutorial_dialog.dart b/lib/widgets/play/dialogs/tutorials/hints_tutorial_dialog.dart index 79c6596..7196a20 100644 --- a/lib/widgets/play/dialogs/tutorials/hints_tutorial_dialog.dart +++ b/lib/widgets/play/dialogs/tutorials/hints_tutorial_dialog.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:kompositum/config/flavors/flavor.dart'; import 'package:kompositum/config/my_icons.dart'; import 'package:kompositum/config/my_theme.dart'; import 'package:kompositum/widgets/common/my_buttons.dart'; @@ -15,11 +16,11 @@ class HintsTutorialDialog extends StatelessWidget { @override Widget build(BuildContext context) { return MyDialog( - title: "💡 Tipps", + title: Flavor.instance.uiString.ttlHints, child: Column( children: [ Text( - "Wenn du Hilfe brauchst und nicht mehr weiter weißt, benutze einen Tipp!", + Flavor.instance.uiString.lblHintsDescription, style: Theme.of(context).textTheme.labelLarge, textAlign: TextAlign.center, ), @@ -31,14 +32,14 @@ class HintsTutorialDialog extends StatelessWidget { ), SizedBox(height: 40), Text( - "Probier es einfach aus, der erste Tipp geht aufs Haus!", + Flavor.instance.uiString.lblHintsTryIt, style: Theme.of(context).textTheme.labelLarge, textAlign: TextAlign.center, ), SizedBox(height: 32), FittedBox( child: MyPrimaryTextButton( - text: "Alles klar", + text: Flavor.instance.uiString.btnGotIt, onPressed: () { Navigator.of(context).pop(); } diff --git a/lib/widgets/play/dialogs/tutorials/missing_compound_tutorial_dialog.dart b/lib/widgets/play/dialogs/tutorials/missing_compound_tutorial_dialog.dart index d304cf1..acef2ce 100644 --- a/lib/widgets/play/dialogs/tutorials/missing_compound_tutorial_dialog.dart +++ b/lib/widgets/play/dialogs/tutorials/missing_compound_tutorial_dialog.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:kompositum/config/flavors/flavor.dart'; import 'package:kompositum/config/my_icons.dart'; import 'package:kompositum/config/my_theme.dart'; import 'package:kompositum/widgets/common/my_buttons.dart'; @@ -15,11 +16,11 @@ class MissingCompoundTutorialDialog extends StatelessWidget { @override Widget build(BuildContext context) { return MyDialog( - title: "💡 Fehlende Wörter", + title: Flavor.instance.uiString.ttlMissingCompounds, child: Column( children: [ Text( - "Hast du ein richtiges Wort kombiniert, aber es wird nicht aktzeptiert?", + Flavor.instance.uiString.lblMissingCompoundsDescription, style: Theme.of(context).textTheme.labelLarge, textAlign: TextAlign.center, ), @@ -31,14 +32,14 @@ class MissingCompoundTutorialDialog extends StatelessWidget { ), SizedBox(height: 40), Text( - "Du kannst diese Wörter melden und wir kümmern uns darum!", + Flavor.instance.uiString.lblMissingCompoundsDescription2, style: Theme.of(context).textTheme.labelLarge, textAlign: TextAlign.center, ), SizedBox(height: 32), FittedBox( child: MyPrimaryTextButton( - text: "Alles klar", + text: Flavor.instance.uiString.btnGotIt, onPressed: () { Navigator.of(context).pop(); } diff --git a/lib/widgets/play/top_row.dart b/lib/widgets/play/top_row.dart index 6ed8908..3708270 100644 --- a/lib/widgets/play/top_row.dart +++ b/lib/widgets/play/top_row.dart @@ -1,5 +1,6 @@ import 'package:animated_flip_counter/animated_flip_counter.dart'; import 'package:flutter/material.dart'; +import 'package:kompositum/config/flavors/flavor.dart'; import 'package:kompositum/game/difficulty.dart'; import '../../config/my_theme.dart'; @@ -28,8 +29,11 @@ class TopRow extends StatelessWidget implements PreferredSizeWidget { title, style: Theme.of(context).textTheme.titleMedium, ); - if (title.startsWith("Level ")) { - final prefix = "Level "; + + // If the title is a level count, display it as an animated flip counter + final levelCountPrefix = Flavor.instance.uiString.lblLevelIndicator + " "; + if (title.startsWith(levelCountPrefix)) { + final prefix = levelCountPrefix; final value = int.parse(title.split(" ")[1]); titleWidget = AnimatedFlipCounter( duration: const Duration(milliseconds: 600), diff --git a/test/util/update_manager_test.dart b/test/util/update_manager_test.dart index 38590c5..87d246f 100644 --- a/test/util/update_manager_test.dart +++ b/test/util/update_manager_test.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:kompositum/data/key_value_store.dart'; import 'package:kompositum/util/update_manager.dart'; -import 'package:kompositum/widgets/home/dialogs/daily_goals_update_dialog.dart'; +import 'package:kompositum/widgets/home/update_dialogs/daily_goals_update_dialog.dart'; import 'package:mocktail/mocktail.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; diff --git a/todo.md b/todo.md index 6418ca6..bcf8e7e 100644 --- a/todo.md +++ b/todo.md @@ -4,7 +4,6 @@ - English - Try out with english words - Create localization logic - - UiStrings - Compounds, compactFrequencyClass - First level - Create blocked compounds