378 lines
9.8 KiB
Dart
378 lines
9.8 KiB
Dart
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',
|
||
});
|
||
}
|
||
}
|