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

@ -1857,6 +1857,87 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get dictionaryLookUp => 'Look up in the dictionary';
@override
String get dictionaryCharacterSearchHint =>
'A kanji or kana, a reading in kana or romaji, or a meaning';
@override
String get dictionaryTabWords => 'Words';
@override
String get dictionaryTabCharacters => 'Kanji & kana';
@override
String get dictionaryLabelHiragana => 'Hiragana';
@override
String get dictionaryLabelKatakana => 'Katakana';
@override
String dictionaryGrade(int grade) {
return 'Grade $grade';
}
@override
String get dictionaryLabelSecondary => 'Secondary school';
@override
String get dictionaryGroupKana => 'Kana';
@override
String get dictionaryGroupJlpt => 'JLPT levels';
@override
String get dictionaryGroupGrades => 'School grades';
@override
String dictionaryStrokes(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count strokes',
one: '1 stroke',
);
return '$_temp0';
}
@override
String get dictionaryCharacterLevelsHint =>
'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.';
@override
String dictionaryAddCharacters(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'Add $count characters',
one: 'Add 1 character',
);
return '$_temp0';
}
@override
String dictionaryCharactersAdded(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'Added $count characters.',
one: 'Added 1 character.',
zero: 'No new characters.',
);
return '$_temp0';
}
@override
String dictionaryConfirmCharactersTitle(int count) {
return 'Add $count characters?';
}
@override
String dictionaryCharacterCredits(String sources) {
return 'Characters from $sources.';
}
@override
String get aboutDictionaries => 'Dictionaries on this instance';