feat(dictionary): characters of Chinese, Korean and Greek, written by hand; pinyin typed

Parity with Japanese's kanji and kana:

- The characters' tab is named by its language (Hanzi, Hangul & Hanja,
  Alphabet), its groups too: HSK levels and the characters in common use
  (Hong Kong's grades for traditional ones); Hangul and the Hanja taught
  in schools; Greek's letters. Radicals for Chinese and Korean in their
  own forms (讠 for 言 in simplified Chinese), none for Greek.
- A character's readings are named as its language names them: On and
  Kun, Pinyin, Eum and Hun (음, 훈); a letter means its sound and name.
- How characters are written comes by language: Chinese from Make Me a
  Hanzi (its medians in KanjiVG's square, Arphic Public License, a data
  file beside the app, never in cards), the Hangul letters drawn by the
  curator; a Korean word is written letter by letter (닭: ㄷ ㅏ ㄺ). Words
  of alphabets (German, Greek) aren't written by hand.
- A Chinese word's pinyin is typed in a session, tone numbers turning
  into marks (ni3 → nǐ); KRDict's levels (초급, 중급, 고급) tag Korean
  words; a Korean word's pronunciation shows in brackets ([가치]).
- Smaller: Look up in the composer keeps a noun's article; the Watch
  filter names its level list; hints and placeholders by language.

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 12:35:17 +02:00
commit 5479b973fc
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -2431,6 +2431,57 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get dictionaryTabCharacters => 'Kanji & Kana';
@override
String get dictionaryTabCharactersChinese => 'Hanzi';
@override
String get dictionaryTabCharactersKorean => 'Hangul & Hanja';
@override
String get dictionaryTabCharactersGreek => 'Alphabet';
@override
String get dictionaryCharacterSearchHintChinese =>
'Ein Schriftzeichen, sein Pinyin oder eine Bedeutung';
@override
String get dictionaryCharacterSearchHintKorean =>
'Ein Hanja oder Hangul-Buchstabe, sein Laut oder eine Bedeutung';
@override
String get dictionaryCharacterSearchHintGreek =>
'Ein Buchstabe oder sein Name';
@override
String get dictionaryGroupHsk => 'HSK-Stufen';
@override
String get dictionaryGroupCommonCharacters => 'Häufig gebraucht';
@override
String get dictionaryGroupHongKongGrades => 'Schuljahre in Hongkong';
@override
String get dictionaryGroupHangul => 'Hangul';
@override
String get dictionaryGroupEducationHanja => 'In Schulen gelehrte Hanja';
@override
String get dictionaryGroupGreek => 'Buchstaben';
@override
String get dictionaryLabelHangul => 'Hangul-Buchstaben';
@override
String get dictionaryLabelEducationHanja => '1.800 Grund-Hanja';
@override
String get dictionaryLabelGreek => 'Griechisches Alphabet';
@override
String get dictionaryLabelCommonCharacters => '3.500 häufige Schriftzeichen';
@override
String get dictionaryLabelHiragana => 'Hiragana';
@ -2582,14 +2633,14 @@ class AppLocalizationsDe extends AppLocalizations {
String get kanjiComponents => 'Bestandteile';
@override
String get studySettingsCharacters => 'Kanji & Kana';
String get studySettingsCharacters => 'Schriftzeichen';
@override
String get studySettingsWriteByHand => 'Von Hand schreiben';
@override
String get studySettingsWriteByHandDescription =>
'Kanji, Kana und Wörter schreibst du Strich für Strich, jeder Strich wird gleich geprüft, nach einem eigenen Plan. Geschriebene Wörter werden weder abgefragt noch getippt.';
'Kanji, Hanzi, Hanja, Kana, Hangul und Wörter in ihnen schreibst du Strich für Strich, jeder Strich wird gleich geprüft, nach einem eigenen Plan (ein koreanisches Wort Buchstabe für Buchstabe). Geschriebene Wörter werden weder abgefragt noch getippt.';
@override
String get writingHint => 'Tipp';
@ -3055,6 +3106,57 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get characterKun => 'Kun';
@override
String get characterPinyin => 'Pinyin';
@override
String get characterEum => 'Eum';
@override
String get characterHun => 'Hun';
@override
String get characterPinyinReadings => 'Pinyin';
@override
String get characterPinyinReadingsHint =>
'Mit Tonzeichen oder Ziffern: shuǐ, shui3';
@override
String get characterEumReadings => 'Laute (Eum)';
@override
String get characterEumReadingsHint => 'Sinokoreanisch, in Hangul: 수';
@override
String get characterHunReadings => 'Koreanische Bedeutungen (Hun)';
@override
String get characterHunReadingsHint =>
'Koreanische Wörter für seine Bedeutung, in Hangul: 물';
@override
String get characterPrimaryMeaningHintLetter =>
'Hauptbedeutung, bei Buchstaben der Laut';
@override
String get composerPlaceholderCharacterChinese => 'Schriftzeichen hinzufügen';
@override
String get composerPlaceholderCharacterKorean =>
'Hanja oder Hangul-Buchstaben hinzufügen';
@override
String get composerPlaceholderCharacterGreek => 'Buchstaben hinzufügen';
@override
String get vocabularyReadingHintPinyin =>
'Pinyin, mit Tonzeichen oder Ziffern';
@override
String get vocabularyReadingHintPronunciation =>
'Aussprache, wo sie von der Schreibung abweicht';
@override
String get matchingCategories => 'Kategorien';
@ -3546,11 +3648,15 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get studySettingsTypeReadingDescription =>
'Wörter mit Kanji fragen nach ihrer Lesung, in Kana getippt; Romaji werden beim Tippen zu Kana.';
'Wörter mit Kanji fragen nach ihrer Lesung, in Kana getippt (Romaji werden beim Tippen zu Kana); chinesische Wörter nach ihrem Pinyin (Tonziffern werden zu Tonzeichen: aus ni3 wird nǐ).';
@override
String get studyTypedHint => 'Die Lesung, in Kana oder Romaji';
@override
String get studyTypedHintPinyin =>
'Das Pinyin, mit Tonziffern oder Tonzeichen';
@override
String get studyTypedRight => 'Richtig';
@ -3573,7 +3679,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get studySettingsAspectDescription =>
'Was abgefragt wird — die Bedeutung, die Kana-Lesung oder der Ausdruck selbst (bei angezeigter Bedeutung). „Gemischt“ variiert Bedeutung und Lesung pro Karte; Karten, die nicht abgefragt werden können, bleiben ein normales Umdrehen.';
'Was abgefragt wird — die Bedeutung, die Lesung (Kana, Pinyin) oder der Ausdruck selbst (bei angezeigter Bedeutung). „Gemischt“ variiert Bedeutung und Lesung pro Karte; Karten, die nicht abgefragt werden können, bleiben ein normales Umdrehen.';
@override
String get studySortOldestFirst => 'Älteste zuerst';
@ -6811,7 +6917,9 @@ class AppLocalizationsDe extends AppLocalizations {
String get watchFilterAll => 'Alle Wörter';
@override
String get watchFilterNoLevel => 'Ohne JLPT-Stufe';
String watchFilterNoLevel(String levels) {
return 'Ohne $levels-Stufe';
}
@override
String get watchFilterClass => 'Wortart';