humanize
Humanize は、UI 文字列を自然な感じにしてくれるコンパクトなツールキットです。日付、数値、リスト、および英語とフランス語のテキスト用のヘルパーを通じて、生データと人間向けの表現の間に橋渡しを行います。
数値および日付を人間が読みやすい形式に変換するためのDartおよびFlutterパッケージ。
以下は英語原文のスナップショットです。最新版は GitHub をご覧ください。
Humanize
pub.dev Star on Github Awesome Flutter Flutter Samples License: MIT
Humanize is a compact toolkit that makes UI strings feel natural. It bridges raw data and human-friendly phrasing with helpers for dates, numbers, lists, and text in English and French.
Humanize focuses on pragmatic, readable output for UI strings. It packages natural phrases (e.g., “3 minutes ago”, “tomorrow”) and formatting helpers under a consistent API with light-touch locale support.
naturaltime, naturaldelta, naturaldayDateTime (ISO, RFC 2822, HTTP, timestamps, locale-aware)naturalJoin, oxfordComma, capfirst, titlecase, truncate*intcomma, intword, ordinal, apNumberfilesizeformataddCalendarMonths, addCalendarYearsHumanizeI18ndependencies:
humanize: latest_version
import 'package:humanize/humanize.dart';
print(naturaltime(DateTime.now().subtract(Duration(minutes: 3)), locale: 'en')); // 3 minutes ago
print(naturaldelta(Duration(hours: 2), locale: 'fr')); // 2 heures
final ref = DateTime(2007, 2, 17, 12);
print(naturalday(DateTime(2007, 2, 16), now: ref, locale: 'en', format: 'dd MMMM yyyy')); // yesterday
print(naturalJoin(['a','b','c'], locale: 'fr')); // a, b et c
print(oxfordComma(['a','b','c'], locale: 'en')); // a, b, and c
print(intcomma(4500.2)); // 4,500.2
print(intcomma(1234567, sep: ' ')); // 1 234 567
print(intword(1200000, locale: 'fr')); // 1,2 millions
print(filesizeformat(1536)); // 1.5 KB
final now = DateTime(2007, 2, 17, 16, 30, 0);
print(naturaltime(now.add(Duration(days: 9)), now: now)); // in 1 week, 2 days
print(naturaltime(now.subtract(Duration(days: 1, hours: 2)), now: now, locale: 'fr')); // il y a un jour, 2 heures
final dt = DateTime(2017,4,20,11,32);
print(dt.toISO()); // 2017-04-20T11:32:00.000-04:00
print(dt.toRFC2822()); // Thu, 20 Apr 2017 11:32:00 -0400
print(dt.toHTTP()); // Thu, 20 Apr 2017 15:32:00 GMT
print(dt.asLocale('fr').toHTTP()); // jeu., 20 avr. 2017 15:32:00 GMT (display)
// Locale formats
print(dt.toLocaleString()); // e.g., 4/20/2017
print(dt.toLocaleString(HumanDateFormat.DATETIME_FULL)); // April 20, 2017...
print(dt.asLocale('fr').toLocaleString(HumanDateFormat.DATETIME_FULL)); // 20 avril 2017...
print(intcomma(4500)); // 4,500
print(intword(1500000, short: true)); // 1.5 M
print(ordinal(1, locale: 'fr')); // 1er
print(apNumber(5, locale: 'fr')); // cinq
print(naturalJoin(['a','b','c'], locale: 'fr')); // a, b et c
print(oxfordComma(['a','b','c'])); // a, b, and c
print(capfirst('hello')); // Hello
print(filesizeformat(1536)); // 1.5 KB
final d = DateTime(2017, 2, 13);
print(d.addCalendarMonths(1).toISODate()); // 2017-03-13
print(d.add(Duration(days: 30)).toISODate()); // 2017-03-15
final hFr = HumanizeI18n('fr');
print(hFr.naturalTime(DateTime.now().subtract(Duration(minutes: 3))));
print(hFr.intComma(1234567)); // 1 234 567
Examples in example/: basic_usage.dart, i18n_facade.dart, intcomma_examples.dart, naturaltime_examples.dart, naturalday_examples.dart, ordinal_examples.dart, formatting_examples.dart, math_examples.dart
Run tests:
dart test
en, fr. PRs welcome to extend.package:intl and use Humanize for human-friendly phrasing.LICENSEIf Humanize makes your UI sparkle, feel free to fuel the magic with a donation—anything from a cheeky 🍺 to the legendary MacBook Pro upgrade 💻😂. Tap the link, pick your vibe, and let's keep shipping joy: Buy Me a Coffee.