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

@ -3796,6 +3796,12 @@ abstract class AppLocalizations {
/// **'A word in kanji, kana or romaji, or a meaning'**
String get dictionarySearchHint;
/// No description provided for @dictionarySearchHintWords.
///
/// In en, this message translates to:
/// **'A word, any form of it, or a meaning'**
String get dictionarySearchHintWords;
/// No description provided for @dictionaryNothingFound.
///
/// In en, this message translates to:
@ -10665,11 +10671,11 @@ abstract class AppLocalizations {
/// **'Learned · {days, plural, =0{again today} =1{again tomorrow} other{again in {days} days}}'**
String watchProgressLearned(int days);
/// No description provided for @watchJisho.
/// No description provided for @watchLookUpOn.
///
/// In en, this message translates to:
/// **'Look up on Jisho'**
String get watchJisho;
/// **'Look up on {site}'**
String watchLookUpOn(String site);
/// No description provided for @watchWider.
///
@ -10911,11 +10917,11 @@ abstract class AppLocalizations {
/// **'Couldn\'t look it up. Choose it again to try once more.'**
String get watchStretchFailed;
/// No description provided for @watchStretchJisho.
/// No description provided for @watchStretchSearch.
///
/// In en, this message translates to:
/// **'Search Jisho for it'**
String get watchStretchJisho;
/// **'Search {site} for it'**
String watchStretchSearch(String site);
/// No description provided for @watchTapAWord.
///