Files
pluriwave/lib/l10n/app_localizations_ext.dart
T
FreeTLab 089b8b4227
Build & Deploy PluriWave / Análisis de código (push) Successful in 38s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m34s
fix(i18n): normalize translations and fallbacks
2026-06-03 21:20:08 +02:00

378 lines
9.8 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'gen/app_localizations.dart';
extension PluriAppLocalizationsExt on AppLocalizations {
String _lang() {
final locale = localeName.toLowerCase();
if (locale.startsWith('es')) return 'es';
if (locale.startsWith('en')) return 'en';
if (locale.startsWith('fr')) return 'fr';
if (locale.startsWith('de')) return 'de';
if (locale.startsWith('it')) return 'it';
if (locale.startsWith('pt')) return 'pt';
if (locale.startsWith('ru')) return 'ru';
if (locale.startsWith('ja')) return 'ja';
if (locale.startsWith('zh')) return 'zh';
if (locale.startsWith('ar')) return 'ar';
if (locale.startsWith('hi')) return 'hi';
if (locale.startsWith('bn')) return 'bn';
if (locale.startsWith('id')) return 'id';
return 'en';
}
String _pick(Map<String, String> values) =>
values[_lang()] ?? values['en'] ?? values.values.first;
String weekdayLong(int day) => switch (day) {
DateTime.monday => _pick({
'es': 'lunes',
'en': 'Monday',
'fr': 'lundi',
'de': 'Montag',
'it': 'lunedì',
'pt': 'segunda-feira',
'ru': 'понедельник',
'ja': '月曜日',
'zh': '星期一',
'ar': 'الإثنين',
'hi': 'सोमवार',
'bn': 'সোমবার',
'id': 'Senin',
}),
DateTime.tuesday => _pick({
'es': 'martes',
'en': 'Tuesday',
'fr': 'mardi',
'de': 'Dienstag',
'it': 'martedì',
'pt': 'terça-feira',
'ru': 'вторник',
'ja': '火曜日',
'zh': '星期二',
'ar': 'الثلاثاء',
'hi': 'मंगलवार',
'bn': 'মঙ্গলবার',
'id': 'Selasa',
}),
DateTime.wednesday => _pick({
'es': 'miércoles',
'en': 'Wednesday',
'fr': 'mercredi',
'de': 'Mittwoch',
'it': 'mercoledì',
'pt': 'quarta-feira',
'ru': 'среда',
'ja': '水曜日',
'zh': '星期三',
'ar': 'الأربعاء',
'hi': 'बुधवार',
'bn': 'বুধবার',
'id': 'Rabu',
}),
DateTime.thursday => _pick({
'es': 'jueves',
'en': 'Thursday',
'fr': 'jeudi',
'de': 'Donnerstag',
'it': 'giovedì',
'pt': 'quinta-feira',
'ru': 'четверг',
'ja': '木曜日',
'zh': '星期四',
'ar': 'الخميس',
'hi': 'गुरुवार',
'bn': 'বৃহস্পতিবার',
'id': 'Kamis',
}),
DateTime.friday => _pick({
'es': 'viernes',
'en': 'Friday',
'fr': 'vendredi',
'de': 'Freitag',
'it': 'venerdì',
'pt': 'sexta-feira',
'ru': 'пятница',
'ja': '金曜日',
'zh': '星期五',
'ar': 'الجمعة',
'hi': 'शुक्रवार',
'bn': 'শুক্রবার',
'id': 'Jumat',
}),
DateTime.saturday => _pick({
'es': 'sábado',
'en': 'Saturday',
'fr': 'samedi',
'de': 'Samstag',
'it': 'sabato',
'pt': 'sábado',
'ru': 'суббота',
'ja': '土曜日',
'zh': '星期六',
'ar': 'السبت',
'hi': 'शनिवार',
'bn': 'শনিবার',
'id': 'Sabtu',
}),
DateTime.sunday => _pick({
'es': 'domingo',
'en': 'Sunday',
'fr': 'dimanche',
'de': 'Sonntag',
'it': 'domenica',
'pt': 'domingo',
'ru': 'воскресенье',
'ja': '日曜日',
'zh': '星期日',
'ar': 'الأحد',
'hi': 'रविवार',
'bn': 'রবিবার',
'id': 'Minggu',
}),
_ => _pick({
'es': 'día',
'en': 'day',
'fr': 'jour',
'de': 'Tag',
'it': 'giorno',
'pt': 'dia',
'ru': 'день',
'ja': '',
'zh': '',
'ar': 'يوم',
'hi': 'दिन',
'bn': 'দিন',
'id': 'hari',
}),
};
String monthName(int month) => switch (month) {
1 => _pick({
'es': 'enero',
'en': 'January',
'fr': 'janvier',
'de': 'Januar',
'it': 'gennaio',
'pt': 'janeiro',
'ru': 'января',
'ja': '1月',
'zh': '1月',
'ar': 'يناير',
'hi': 'जनवरी',
'bn': 'জানুয়ারি',
'id': 'Januari',
}),
2 => _pick({
'es': 'febrero',
'en': 'February',
'fr': 'février',
'de': 'Februar',
'it': 'febbraio',
'pt': 'fevereiro',
'ru': 'февраля',
'ja': '2月',
'zh': '2月',
'ar': 'فبراير',
'hi': 'फ़रवरी',
'bn': 'ফেব্রুয়ারি',
'id': 'Februari',
}),
3 => _pick({
'es': 'marzo',
'en': 'March',
'fr': 'mars',
'de': 'März',
'it': 'marzo',
'pt': 'março',
'ru': 'марта',
'ja': '3月',
'zh': '3月',
'ar': 'مارس',
'hi': 'मार्च',
'bn': 'মার্চ',
'id': 'Maret',
}),
4 => _pick({
'es': 'abril',
'en': 'April',
'fr': 'avril',
'de': 'April',
'it': 'aprile',
'pt': 'abril',
'ru': 'апреля',
'ja': '4月',
'zh': '4月',
'ar': 'أبريل',
'hi': 'अप्रैल',
'bn': 'এপ্রিল',
'id': 'April',
}),
5 => _pick({
'es': 'mayo',
'en': 'May',
'fr': 'mai',
'de': 'Mai',
'it': 'maggio',
'pt': 'maio',
'ru': 'мая',
'ja': '5月',
'zh': '5月',
'ar': 'مايو',
'hi': 'मई',
'bn': 'মে',
'id': 'Mei',
}),
6 => _pick({
'es': 'junio',
'en': 'June',
'fr': 'juin',
'de': 'Juni',
'it': 'giugno',
'pt': 'junho',
'ru': 'июня',
'ja': '6月',
'zh': '6月',
'ar': 'يونيو',
'hi': 'जून',
'bn': 'জুন',
'id': 'Juni',
}),
7 => _pick({
'es': 'julio',
'en': 'July',
'fr': 'juillet',
'de': 'Juli',
'it': 'luglio',
'pt': 'julho',
'ru': 'июля',
'ja': '7月',
'zh': '7月',
'ar': 'يوليو',
'hi': 'जुलाई',
'bn': 'জুলাই',
'id': 'Juli',
}),
8 => _pick({
'es': 'agosto',
'en': 'August',
'fr': 'août',
'de': 'August',
'it': 'agosto',
'pt': 'agosto',
'ru': 'августа',
'ja': '8月',
'zh': '8月',
'ar': 'أغسطس',
'hi': 'अगस्त',
'bn': 'আগস্ট',
'id': 'Agustus',
}),
9 => _pick({
'es': 'septiembre',
'en': 'September',
'fr': 'septembre',
'de': 'September',
'it': 'settembre',
'pt': 'setembro',
'ru': 'сентября',
'ja': '9月',
'zh': '9月',
'ar': 'سبتمبر',
'hi': 'सितंबर',
'bn': 'সেপ্টেম্বর',
'id': 'September',
}),
10 => _pick({
'es': 'octubre',
'en': 'October',
'fr': 'octobre',
'de': 'Oktober',
'it': 'ottobre',
'pt': 'outubro',
'ru': 'октября',
'ja': '10月',
'zh': '10月',
'ar': 'أكتوبر',
'hi': 'अक्टूबर',
'bn': 'অক্টোবর',
'id': 'Oktober',
}),
11 => _pick({
'es': 'noviembre',
'en': 'November',
'fr': 'novembre',
'de': 'November',
'it': 'novembre',
'pt': 'novembro',
'ru': 'ноября',
'ja': '11月',
'zh': '11月',
'ar': 'نوفمبر',
'hi': 'नवंबर',
'bn': 'নভেম্বর',
'id': 'November',
}),
12 => _pick({
'es': 'diciembre',
'en': 'December',
'fr': 'décembre',
'de': 'Dezember',
'it': 'dicembre',
'pt': 'dezembro',
'ru': 'декабря',
'ja': '12月',
'zh': '12月',
'ar': 'ديسمبر',
'hi': 'दिसंबर',
'bn': 'ডিসেম্বর',
'id': 'Desember',
}),
_ => _pick({
'es': 'mes',
'en': 'month',
'fr': 'mois',
'de': 'Monat',
'it': 'mese',
'pt': 'mês',
'ru': 'месяц',
'ja': '',
'zh': '',
'ar': 'شهر',
'hi': 'महीना',
'bn': 'মাস',
'id': 'bulan',
}),
};
String dateTimeSentence(DateTime date) {
final local = date.toLocal();
final hm =
'${local.hour.toString().padLeft(2, '0')}:${local.minute.toString().padLeft(2, '0')}';
return _pick({
'es':
'${weekdayLong(local.weekday)} ${local.day} de ${monthName(local.month)} a las $hm',
'en':
'${weekdayLong(local.weekday)}, ${monthName(local.month)} ${local.day} at $hm',
'fr':
'${weekdayLong(local.weekday)} ${local.day} ${monthName(local.month)} à $hm',
'de':
'${weekdayLong(local.weekday)}, ${local.day}. ${monthName(local.month)} um $hm',
'it':
'${weekdayLong(local.weekday)} ${local.day} ${monthName(local.month)} alle $hm',
'pt':
'${weekdayLong(local.weekday)}, ${local.day} de ${monthName(local.month)} às $hm',
'ru':
'${weekdayLong(local.weekday)}, ${local.day} ${monthName(local.month)} в $hm',
'ja':
'${monthName(local.month)}${local.day}日(${weekdayLong(local.weekday)}$hm',
'zh':
'${monthName(local.month)}${local.day}${weekdayLong(local.weekday)} $hm',
'ar':
'${weekdayLong(local.weekday)} ${local.day} ${monthName(local.month)} في $hm',
'hi':
'${weekdayLong(local.weekday)}, ${local.day} ${monthName(local.month)} $hm बजे',
'bn':
'${weekdayLong(local.weekday)}, ${local.day} ${monthName(local.month)} $hm',
'id':
'${weekdayLong(local.weekday)}, ${local.day} ${monthName(local.month)} pukul $hm',
});
}
}