/// 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 toGqlEnums(Iterable codes) => codes .map((c) => c.trim().toLowerCase()) .where((c) => c.isNotEmpty) .map((c) => c.toUpperCase()) .toList(); }