51 lines
1.7 KiB
Dart
51 lines
1.7 KiB
Dart
|
|
/// ISO 639-1 codes offered in Settings for stream language filtering.
|
||
|
|
///
|
||
|
|
/// Stored lowercase (Helix). GQL `Language` enums are the uppercase form.
|
||
|
|
class StreamLanguages {
|
||
|
|
StreamLanguages._();
|
||
|
|
|
||
|
|
static const all = <({String code, String label})>[
|
||
|
|
(code: 'de', label: 'Deutsch'),
|
||
|
|
(code: 'en', label: 'English'),
|
||
|
|
(code: 'es', label: 'Español'),
|
||
|
|
(code: 'fr', label: 'Français'),
|
||
|
|
(code: 'it', label: 'Italiano'),
|
||
|
|
(code: 'pt', label: 'Português'),
|
||
|
|
(code: 'pl', label: 'Polski'),
|
||
|
|
(code: 'ru', label: 'Русский'),
|
||
|
|
(code: 'tr', label: 'Türkçe'),
|
||
|
|
(code: 'nl', label: 'Nederlands'),
|
||
|
|
(code: 'sv', label: 'Svenska'),
|
||
|
|
(code: 'no', label: 'Norsk'),
|
||
|
|
(code: 'da', label: 'Dansk'),
|
||
|
|
(code: 'fi', label: 'Suomi'),
|
||
|
|
(code: 'cs', label: 'Čeština'),
|
||
|
|
(code: 'hu', label: 'Magyar'),
|
||
|
|
(code: 'ro', label: 'Română'),
|
||
|
|
(code: 'uk', label: 'Українська'),
|
||
|
|
(code: 'ja', label: '日本語'),
|
||
|
|
(code: 'ko', label: '한국어'),
|
||
|
|
(code: 'zh', label: '中文'),
|
||
|
|
(code: 'ar', label: 'العربية'),
|
||
|
|
(code: 'th', label: 'ไทย'),
|
||
|
|
(code: 'vi', label: 'Tiếng Việt'),
|
||
|
|
(code: 'id', label: 'Bahasa Indonesia'),
|
||
|
|
(code: 'hi', label: 'हिन्दी'),
|
||
|
|
(code: 'other', label: 'Other'),
|
||
|
|
];
|
||
|
|
|
||
|
|
static String labelFor(String code) {
|
||
|
|
for (final entry in all) {
|
||
|
|
if (entry.code == code) return entry.label;
|
||
|
|
}
|
||
|
|
return code;
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Helix / settings codes → GQL `Language` enum values.
|
||
|
|
static List<String> toGqlEnums(Iterable<String> codes) => codes
|
||
|
|
.map((c) => c.trim().toLowerCase())
|
||
|
|
.where((c) => c.isNotEmpty)
|
||
|
|
.map((c) => c.toUpperCase())
|
||
|
|
.toList();
|
||
|
|
}
|