feat(dictionary): the radicals, each listing the kanji written with it

Beside Words and Kanji & kana, a Radicals tab lists the 214 Kangxi
radicals by their strokes, with the forms Japanese writes them as inside
kanji (亻, 氵, 艹, …). One chosen lists the kanji KANJIDIC2 files under
it, in the dictionary's order, to add or to see how one is written; the
tab shares the characters' bloc, so a kanji added there shows as held in
a search too.

The curator labels each kanji with its classical radical (`radical:N`),
so the server's existing label queries serve the tab unchanged. Its
files now say which conversion made them (`.conversion`): an instance
running a curator that converts differently converts again at once,
rather than at its weekly update, so the radicals appear right after a
deploy.

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-10 02:13:06 +02:00
commit fb0ef7cdab
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -2029,6 +2029,30 @@ class AppLocalizationsEn extends AppLocalizations {
return '$_temp0';
}
@override
String get dictionaryTabRadicals => 'Radicals';
@override
String get dictionaryRadicalsHint =>
'The 214 radicals that dictionaries order kanji by, grouped by their strokes. Choose one for the kanji written with it.';
@override
String get dictionaryAllRadicals => 'All radicals';
@override
String dictionaryRadicalNumber(int number) {
return 'Radical $number';
}
@override
String dictionaryRadicalKanjiCount(int count) {
return '$count kanji';
}
@override
String get dictionaryRadicalNone =>
'The instance\'s dictionary has no kanji under this radical yet.';
@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.';