feat(dictionary): German, Greek, English, Chinese and Korean words

A studyset in German, Greek, English, Chinese or Korean finds its
dictionary as one in Japanese does (ADR 0008), and its subtitles are cut
into words by its language (`WordCutting`): Chinese by its longest
words as they stand, the longer words over each cut offered as for
Japanese; Korean at its spaces, a word the dictionary lacks as it stands
taken without the particle it ends with (집에서 is 집, 아이 stays a
child); every other language at its spaces, a word written exactly so
first (the noun Essen before the verb essen). A studyset finds the
dictionary of its language tag, else of its language alone (zh for
zh-Hans).

A Wiktionary word shows its genders, principal forms, IPA, romanisation
and Hanja; a German or Greek noun of one gender goes onto its card with
its article (das Haus, το σπίτι); its tag is its word class, named in
full (Noun, Adjective, Preposition), as Wiktionary's adj and adv would
read as JMdict's codes. Articles, pronouns, prepositions and
conjunctions are left out of a video's words. Chinese words show their
pinyin over each character on the Watch screen, carry their HSK level
as a tag (HSK-1 … HSK-7-9), and the dictionary adds a level whole; the
Watch screen filters by HSK levels for Chinese, JLPT's for Japanese, and
by none for a language without. A reading is typed in a session only
when it is kana, so pinyin isn't. Words are looked up on the web on
Jisho in Japanese, on Wiktionary at the language's section otherwise,
and a search's hint speaks of kana and romaji only in Japanese.

`DICTIONARY_LANGUAGES` in deploy/.env names the languages an instance
keeps (unset: de,el,en,ko,zh; empty: none).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-14 07:45:15 +02:00
commit a2441ecdf2
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -2293,6 +2293,10 @@ class AppLocalizationsEn extends AppLocalizations {
String get dictionarySearchHint =>
'A word in kanji, kana or romaji, or a meaning';
@override
String get dictionarySearchHintWords =>
'A word, any form of it, or a meaning';
@override
String dictionaryNothingFound(String query) {
return 'Nothing found for “$query”.';
@ -6661,7 +6665,9 @@ class AppLocalizationsEn extends AppLocalizations {
}
@override
String get watchJisho => 'Look up on Jisho';
String watchLookUpOn(String site) {
return 'Look up on $site';
}
@override
String get watchWider => 'Longer words here';
@ -6818,7 +6824,9 @@ class AppLocalizationsEn extends AppLocalizations {
'Couldn\'t look it up. Choose it again to try once more.';
@override
String get watchStretchJisho => 'Search Jisho for it';
String watchStretchSearch(String site) {
return 'Search $site for it';
}
@override
String get watchTapAWord =>