Localize rest of intl (#301)
* Localize rest of intl * Add changelog entry
This commit is contained in:
parent
95d8ee7fa7
commit
d87a8a83c3
|
@ -2,7 +2,7 @@
|
|||
|
||||
### Changed
|
||||
|
||||
- "Time ago" strings are now localized
|
||||
- "Time ago" strings, dates, and compact numbers are now localized
|
||||
|
||||
## v0.7.0 - 2021-11-04
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:timeago/timeago.dart';
|
||||
|
||||
export 'gen/l10n.dart';
|
||||
export 'l10n_api.dart';
|
||||
|
@ -76,3 +78,22 @@ extension LanguageName on Locale {
|
|||
/// returns the name of the language in the given language
|
||||
String get languageName => _languageNames[toLanguageTag()] ?? toLanguageTag();
|
||||
}
|
||||
|
||||
extension TimeagoTime on DateTime {
|
||||
/// returns `this` time as a relative, human-readable string. In short format
|
||||
String timeagoShort(BuildContext context) => format(
|
||||
this,
|
||||
locale: '${Localizations.localeOf(context).toLanguageTag()}_short',
|
||||
);
|
||||
|
||||
/// returns `this` time as a relative, human-readable string
|
||||
String timeago(BuildContext context) =>
|
||||
format(this, locale: Localizations.localeOf(context).toLanguageTag());
|
||||
}
|
||||
|
||||
extension NumberFormatExtensions on num {
|
||||
/// returns `this` as a formatted compact number
|
||||
String compact(BuildContext context) => NumberFormat.compact(
|
||||
locale: Localizations.localeOf(context).toLanguageTag(),
|
||||
).format(this);
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,7 +5,6 @@ import '../../l10n/l10n.dart';
|
|||
import '../../stores/accounts_store.dart';
|
||||
import '../../util/extensions/spaced.dart';
|
||||
import '../../util/goto.dart';
|
||||
import '../../util/intl.dart';
|
||||
import '../../util/observer_consumers.dart';
|
||||
import '../../widgets/bottom_safe.dart';
|
||||
import '../../widgets/markdown_text.dart';
|
||||
|
@ -72,10 +71,10 @@ class CommmunityAboutTab extends StatelessWidget {
|
|||
.number_of_subscribers(community.counts.subscribers))),
|
||||
Chip(
|
||||
label: Text(
|
||||
'${community.counts.posts} post${pluralS(community.counts.posts)}')),
|
||||
'${community.counts.posts} post${community.counts.posts == 1 ? '' : 's'}')),
|
||||
Chip(
|
||||
label: Text(
|
||||
'${community.counts.comments} comment${pluralS(community.counts.comments)}')),
|
||||
'${community.counts.comments} comment${community.counts.comments == 1 ? '' : 's'}')),
|
||||
].spaced(8),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -2,9 +2,9 @@ import 'package:flutter/gestures.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:lemmy_api_client/v3.dart';
|
||||
|
||||
import '../../l10n/l10n.dart';
|
||||
import '../../util/extensions/api.dart';
|
||||
import '../../util/goto.dart';
|
||||
import '../../util/intl.dart';
|
||||
import '../../widgets/avatar.dart';
|
||||
import '../../widgets/cached_network_image.dart';
|
||||
import '../../widgets/fullscreenable_image.dart';
|
||||
|
@ -124,11 +124,11 @@ class CommunityOverview extends StatelessWidget {
|
|||
const Spacer(),
|
||||
const Icon(Icons.people, size: 20),
|
||||
const SizedBox(width: 3),
|
||||
Text(compactNumber(community.counts.subscribers)),
|
||||
Text(community.counts.subscribers.compact(context)),
|
||||
const Spacer(flex: 4),
|
||||
const Icon(Icons.record_voice_over, size: 20),
|
||||
const SizedBox(width: 3),
|
||||
Text(compactNumber(fullCommunityView.online)),
|
||||
Text(fullCommunityView.online.compact(context)),
|
||||
const Spacer(),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -11,7 +11,6 @@ import '../hooks/stores.dart';
|
|||
import '../l10n/l10n.dart';
|
||||
import '../util/delayed_action.dart';
|
||||
import '../util/extensions/api.dart';
|
||||
import '../util/extensions/datetime.dart';
|
||||
import '../util/goto.dart';
|
||||
import '../util/icons.dart';
|
||||
import '../widgets/bottom_modal.dart';
|
||||
|
|
|
@ -3,8 +3,8 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:lemmy_api_client/v3.dart';
|
||||
|
||||
import '../l10n/l10n.dart';
|
||||
import '../util/extensions/api.dart';
|
||||
import '../util/extensions/datetime.dart';
|
||||
import '../util/goto.dart';
|
||||
import '../widgets/avatar.dart';
|
||||
import '../widgets/bottom_safe.dart';
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:timeago/timeago.dart';
|
||||
|
||||
extension FancyTime on DateTime {
|
||||
/// returns `this` time as a relative, human-readable string. In short format
|
||||
String timeagoShort(BuildContext context) => format(
|
||||
this,
|
||||
locale: '${Localizations.localeOf(context).toLanguageTag()}_short',
|
||||
);
|
||||
|
||||
/// returns `this` time as a relative, human-readable string
|
||||
String timeago(BuildContext context) =>
|
||||
format(this, locale: Localizations.localeOf(context).toLanguageTag());
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
import 'package:intl/intl.dart';
|
||||
|
||||
String pluralS(int howMany) => howMany == 1 ? '' : 's';
|
||||
|
||||
String compactNumber(int number) => NumberFormat.compact().format(number);
|
|
@ -10,9 +10,7 @@ import '../../stores/config_store.dart';
|
|||
import '../../util/async_store_listener.dart';
|
||||
import '../../util/extensions/api.dart';
|
||||
import '../../util/extensions/cake_day.dart';
|
||||
import '../../util/extensions/datetime.dart';
|
||||
import '../../util/goto.dart';
|
||||
import '../../util/intl.dart';
|
||||
import '../../util/observer_consumers.dart';
|
||||
import '../../util/text_color.dart';
|
||||
import '../avatar.dart';
|
||||
|
@ -266,9 +264,8 @@ class _CommentWidget extends StatelessWidget {
|
|||
)
|
||||
else if (configStore.showScores)
|
||||
Text(
|
||||
compactNumber(
|
||||
store.comment.counts.score,
|
||||
),
|
||||
store.comment.counts.score
|
||||
.compact(context),
|
||||
),
|
||||
if (configStore.showScores)
|
||||
const Text(' · ')
|
||||
|
|
|
@ -5,7 +5,6 @@ import 'package:flutter/material.dart';
|
|||
import '../../l10n/l10n.dart';
|
||||
import '../../pages/community/community.dart';
|
||||
import '../../util/extensions/api.dart';
|
||||
import '../../util/extensions/datetime.dart';
|
||||
import '../../util/goto.dart';
|
||||
import '../../util/observer_consumers.dart';
|
||||
import '../avatar.dart';
|
||||
|
|
|
@ -4,8 +4,8 @@ import 'package:lemmy_api_client/v3.dart';
|
|||
|
||||
import '../../hooks/logged_in_action.dart';
|
||||
import '../../hooks/stores.dart';
|
||||
import '../../l10n/l10n.dart';
|
||||
import '../../stores/config_store.dart';
|
||||
import '../../util/intl.dart';
|
||||
import '../../util/observer_consumers.dart';
|
||||
import 'post_store.dart';
|
||||
|
||||
|
@ -38,7 +38,7 @@ class PostVoting extends HookWidget {
|
|||
child: CircularProgressIndicator.adaptive(),
|
||||
)
|
||||
else if (showScores)
|
||||
Text(compactNumber(store.postView.counts.score)),
|
||||
Text(store.postView.counts.score.compact(context)),
|
||||
IconButton(
|
||||
icon: Icon(
|
||||
Icons.arrow_downward,
|
||||
|
|
|
@ -9,7 +9,6 @@ import '../l10n/l10n.dart';
|
|||
import '../pages/manage_account.dart';
|
||||
import '../util/extensions/api.dart';
|
||||
import '../util/extensions/cake_day.dart';
|
||||
import '../util/extensions/datetime.dart';
|
||||
import '../util/goto.dart';
|
||||
import '../util/text_color.dart';
|
||||
import 'avatar.dart';
|
||||
|
@ -290,8 +289,9 @@ class _UserOverview extends HookWidget {
|
|||
),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
DateFormat('MMM dd, yyyy')
|
||||
.format(userView.person.published),
|
||||
DateFormat.yMMMMd(
|
||||
Localizations.localeOf(context).toLanguageTag(),
|
||||
).format(userView.person.published),
|
||||
style: theme.textTheme.bodyText1,
|
||||
),
|
||||
],
|
||||
|
|
Loading…
Reference in New Issue