feat(app): kanji and kana in the dictionary, beside the words

Where the instance holds the characters of a studyset's language, the
dictionary screen has a tab for them, Kanji & kana: search by character,
reading (kana or romaji) or meaning, and whole levels to add, under their
names: the kana (hiragana, katakana), the JLPT levels and the school
grades. A character becomes a character card, its meanings (a kana's
romaji) and readings, tagged with its level (JLPT-N5), school grade
(Grade 1 … Grade 6, Secondary school) and script (Hiragana, Katakana). A
character card's Look up searches the characters, and an entry looked up
again on a card swaps the tags the one before brought, as words do.

A dictionary's entries are now words or characters (DictionaryItem), as
its kind says.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-09 15:19:22 +02:00
commit cec518350a
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -3112,6 +3112,102 @@ abstract class AppLocalizations {
/// **'Look up in the dictionary'**
String get dictionaryLookUp;
/// No description provided for @dictionaryCharacterSearchHint.
///
/// In en, this message translates to:
/// **'A kanji or kana, a reading in kana or romaji, or a meaning'**
String get dictionaryCharacterSearchHint;
/// No description provided for @dictionaryTabWords.
///
/// In en, this message translates to:
/// **'Words'**
String get dictionaryTabWords;
/// No description provided for @dictionaryTabCharacters.
///
/// In en, this message translates to:
/// **'Kanji & kana'**
String get dictionaryTabCharacters;
/// No description provided for @dictionaryLabelHiragana.
///
/// In en, this message translates to:
/// **'Hiragana'**
String get dictionaryLabelHiragana;
/// No description provided for @dictionaryLabelKatakana.
///
/// In en, this message translates to:
/// **'Katakana'**
String get dictionaryLabelKatakana;
/// No description provided for @dictionaryGrade.
///
/// In en, this message translates to:
/// **'Grade {grade}'**
String dictionaryGrade(int grade);
/// No description provided for @dictionaryLabelSecondary.
///
/// In en, this message translates to:
/// **'Secondary school'**
String get dictionaryLabelSecondary;
/// No description provided for @dictionaryGroupKana.
///
/// In en, this message translates to:
/// **'Kana'**
String get dictionaryGroupKana;
/// No description provided for @dictionaryGroupJlpt.
///
/// In en, this message translates to:
/// **'JLPT levels'**
String get dictionaryGroupJlpt;
/// No description provided for @dictionaryGroupGrades.
///
/// In en, this message translates to:
/// **'School grades'**
String get dictionaryGroupGrades;
/// No description provided for @dictionaryStrokes.
///
/// In en, this message translates to:
/// **'{count, plural, =1{1 stroke} other{{count} strokes}}'**
String dictionaryStrokes(int count);
/// No description provided for @dictionaryCharacterLevelsHint.
///
/// In en, this message translates to:
/// **'Every character of a level becomes a flashcard, in the order of the level\'s list, tagged with its level, school grade or script. Characters already in this studyset are left out.'**
String get dictionaryCharacterLevelsHint;
/// No description provided for @dictionaryAddCharacters.
///
/// In en, this message translates to:
/// **'{count, plural, =1{Add 1 character} other{Add {count} characters}}'**
String dictionaryAddCharacters(int count);
/// No description provided for @dictionaryCharactersAdded.
///
/// In en, this message translates to:
/// **'{count, plural, =0{No new characters.} =1{Added 1 character.} other{Added {count} characters.}}'**
String dictionaryCharactersAdded(int count);
/// No description provided for @dictionaryConfirmCharactersTitle.
///
/// In en, this message translates to:
/// **'Add {count} characters?'**
String dictionaryConfirmCharactersTitle(int count);
/// No description provided for @dictionaryCharacterCredits.
///
/// In en, this message translates to:
/// **'Characters from {sources}.'**
String dictionaryCharacterCredits(String sources);
/// No description provided for @aboutDictionaries.
///
/// In en, this message translates to: