PraxaLing / mobile /lib /core /languages.dart
Reubencf's picture
Deploy PraxaLing: component refactor, bug fixes, unified neo-brutal design, Qwen3.5 everywhere
2992997
Raw
History Blame Contribute Delete
1.44 kB
class LanguageOption {
const LanguageOption(this.code, this.name, this.flagCode);
final String code;
final String name;
final String flagCode;
}
const kLanguages = <LanguageOption>[
LanguageOption('en', 'English', 'US'),
LanguageOption('es', 'Spanish', 'ES'),
LanguageOption('fr', 'French', 'FR'),
LanguageOption('de', 'German', 'DE'),
LanguageOption('it', 'Italian', 'IT'),
LanguageOption('pt', 'Portuguese', 'BR'),
LanguageOption('ja', 'Japanese', 'JP'),
LanguageOption('ko', 'Korean', 'KR'),
LanguageOption('zh', 'Mandarin', 'CN'),
LanguageOption('yue', 'Cantonese', 'HK'),
LanguageOption('ar', 'Arabic', 'SA'),
LanguageOption('hi', 'Hindi', 'IN'),
LanguageOption('kn', 'Kannada', 'IN'),
LanguageOption('ml', 'Malayalam', 'IN'),
LanguageOption('vi', 'Vietnamese', 'VN'),
LanguageOption('ru', 'Russian', 'RU'),
];
const kLevels = <String>['A1', 'A2', 'B1', 'B2', 'C1'];
const kLevelDescriptions = <String, String>{
'A1': 'Just starting',
'A2': 'Everyday basics',
'B1': 'Conversations',
'B2': 'Most topics',
'C1': 'Advanced',
};
String languageName(String code) =>
kLanguages.firstWhere((l) => l.code == code, orElse: () => LanguageOption(code, code, '')).name;
String? languageFlagCode(String code) {
final match = kLanguages.where((l) => l.code == code).toList();
return match.isEmpty ? null : match.first.flagCode;
}