Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 549 Vote(s) - 3.54 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to load all dart DateFormat locale in flutter?

#1
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?
Reply

#2
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]:
Reply

#3
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
```
Reply

#4
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`.
Reply

#5
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]

Reply

#6
just add the language code like this (in my case 'ar' for Arabic)

DateFormat('MMMM', 'ar') .format(DateTime.now());
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through