![]() |
How to load all dart DateFormat locale in flutter? - Printable Version +- 0Day Forums (https://0day.red) +-- Forum: Coding (https://0day.red/Forum-Coding) +--- Forum: Flutter & Dart (https://0day.red/Forum-Flutter-Dart) +--- Thread: How to load all dart DateFormat locale in flutter? (/Thread-How-to-load-all-dart-DateFormat-locale-in-flutter) |
How to load all dart DateFormat locale in flutter? - cariottacvyun - 07-21-2023 In Flutter app, intl package load only [15 languages]( [To see links please register here] ). However Dart [DateFormat]([To see links please register here] ) support many more. I do not need translation, but need correct `DateFormat`. How to load all `DateFormat` locale?RE: How to load all dart DateFormat locale in flutter? - tammaravx - 07-21-2023 In your highest StatefulWidget add these imports import 'package:intl/intl.dart'; import 'package:intl/date_symbol_data_local.dart'; in its State, override initState and add @override void initState() { super.initState(); initializeDateFormatting(); } For example import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:intl/date_symbol_data_local.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( title: 'Intl Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home: new MyHomePage(title: 'Intl Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => new _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { DateFormat dateFormat; DateFormat timeFormat; @override void initState() { super.initState(); initializeDateFormatting(); dateFormat = new DateFormat.yMMMMd('cs'); timeFormat = new DateFormat.Hms('cs'); } void _refresh() { setState(() {}); } @override Widget build(BuildContext context) { var dateTime = new DateTime.now(); return new Scaffold( appBar: new AppBar( title: new Text(widget.title), ), body: new Center( child: new Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ new Text(dateFormat.format(dateTime)), new Text(timeFormat.format(dateTime)), ], ), ), floatingActionButton: new FloatingActionButton( onPressed: _refresh, tooltip: 'Refresh', child: new Icon(Icons.refresh), ), ); } } Dart mostly uses the [ISO 631][1] 2 letter codes, with country variants if applicable. For example: `ja, en_US, en_GB, zh_HK, zh_CN`. Occasionally it uses a 3 letter code. To find the full list just search for `DateSymbols` in the file [date_symbol_data_local.dart][2] [![The cs language displays this][3]][3] [1]: [To see links please register here] [2]:[To see links please register here] [3]:RE: How to load all dart DateFormat locale in flutter? - rewriting380562 - 07-21-2023 Quoting [@kapace]( [To see links please register here] ) comment:> You should use language tag in order to be sure that you consider locale's country code. Like in Canada where language is same `en` as `en-US`, but they format dates slightly different using `en-CA` locale. For example: ```dart var tag = Localizations.maybeLocaleOf(context)?.toLanguageTag(); var date1 = DateFormat.yMMMd(tag).format(DateTime.now()); // Dec 31, 2000 var date2 = DateFormat('MM/dd, hh:mm a', tag).format(DateTime.now()); // 12/31, 11:00 PM ``` RE: How to load all dart DateFormat locale in flutter? - coquelicot848 - 07-21-2023 I solved it setting the Intl.sytemLocale before using any DateFormat: Intl.systemLocale = await findSystemLocale(); I didn't had to call `initializeDateFormatting()` and I'm using `intl: ^0.17.0`. RE: How to load all dart DateFormat locale in flutter? - aislynnbwljhvaohd - 07-21-2023 The list of all available locales in Flutter can be take from top-level property [availableLocalesForDateFormatting][1] of `intl` package. ```dart final availableLocalesForDateFormatting = const [ "en_ISO", "af", "am", "ar", "ar_DZ", "ar_EG", "az", "be", "bg", "bn", "br", "bs", "ca", "chr", "cs", "cy", "da", "de", "de_AT", "de_CH", "el", "en", "en_AU", "en_CA", "en_GB", "en_IE", "en_IN", "en_MY", "en_SG", "en_US", "en_ZA", "es", "es_419", "es_ES", "es_MX", "es_US", "et", "eu", "fa", "fi", "fil", "fr", "fr_CA", "fr_CH", "ga", "gl", "gsw", "gu", "haw", "he", "hi", "hr", "hu", "hy", "id", "in", "is", "it", "it_CH", "iw", "ja", "ka", "kk", "km", "kn", "ko", "ky", "ln", "lo", "lt", "lv", "mk", "ml", "mn", "mr", "ms", "mt", "my", "nb", "ne", "nl", "no", "no_NO", "or", "pa", "pl", "ps", "pt", "pt_BR", "pt_PT", "ro", "ru", "si", "sk", "sl", "sq", "sr", "sr_Latn", "sv", "sw", "ta", "te", "th", "tl", "tr", "uk", "ur", "uz", "vi", "zh", "zh_CN", "zh_HK", "zh_TW", "zu" ]; ``` [1]: [To see links please register here] RE: How to load all dart DateFormat locale in flutter? - maynardoh - 07-21-2023 just add the language code like this (in my case 'ar' for Arabic) DateFormat('MMMM', 'ar') .format(DateTime.now()); |