feat(app): a studyset's languages, and Chinese and Korean fonts

The studyset sheet gains Languages, as before: off until "Set
languages", then the language of the cards' fronts and of their backs
(22 languages, Chinese in its two scripts). A studyset without its own
takes those of the nearest studyset above it, both together; set for the
first time, they start from those it took. The payload held both fields
already.

They set its text: Noto Sans SC, TC and KR join Noto Sans JP (bundled,
never fetched; 34 MB more, fonts 42 MB in all, your call), and since
Han characters take the shapes of the first font that has them, every
screen inside a studyset (its screen, cards, notes, paths, studying it)
puts the font of its front's language first, else of its back's,
Japanese otherwise. Every studyset route goes through one helper now.

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-08 23:30:31 +02:00
commit b1ef9b9d3a
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -1121,6 +1121,95 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get studysetSheetInheritColor => 'Inherit';
@override
String get studysetSheetLanguages => 'Languages';
@override
String get studysetSheetSetLanguages => 'Set languages';
@override
String get studysetSheetLanguagesHelper =>
'Which language each side of the cards is in. Chinese, Japanese and Korean then show in their own character shapes.';
@override
String get studysetSheetLanguagesInherited =>
'Off, it takes the languages of the studyset it is in.';
@override
String get studysetSheetFrontLanguage => 'Front language';
@override
String get studysetSheetBackLanguage => 'Back language';
@override
String get studysetSheetLanguageNotSet => 'Not set';
@override
String get languageArabic => 'Arabic';
@override
String get languageGerman => 'German';
@override
String get languageGreek => 'Greek';
@override
String get languageEnglish => 'English';
@override
String get languageSpanish => 'Spanish';
@override
String get languageFrench => 'French';
@override
String get languageHebrew => 'Hebrew';
@override
String get languageHindi => 'Hindi';
@override
String get languageItalian => 'Italian';
@override
String get languageJapanese => 'Japanese';
@override
String get languageKorean => 'Korean';
@override
String get languageDutch => 'Dutch';
@override
String get languagePolish => 'Polish';
@override
String get languagePortuguese => 'Portuguese';
@override
String get languageRussian => 'Russian';
@override
String get languageSwedish => 'Swedish';
@override
String get languageThai => 'Thai';
@override
String get languageTurkish => 'Turkish';
@override
String get languageUkrainian => 'Ukrainian';
@override
String get languageVietnamese => 'Vietnamese';
@override
String get languageChineseSimplified => 'Chinese (Simplified)';
@override
String get languageChineseTraditional => 'Chinese (Traditional)';
@override
String get fieldRequired => 'required';