Localize rest of intl (#301)

* Localize rest of intl

* Add changelog entry
This commit is contained in:
Marcin Wojnarowski 2021-11-25 18:49:43 +01:00 committed by GitHub
parent 95d8ee7fa7
commit d87a8a83c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 35 additions and 1812 deletions

View File

@ -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

View File

@ -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

View File

@ -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),
),
),

View File

@ -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(),
],
),

View File

@ -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';

View File

@ -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';

View File

@ -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());
}

View File

@ -1,5 +0,0 @@
import 'package:intl/intl.dart';
String pluralS(int howMany) => howMany == 1 ? '' : 's';
String compactNumber(int number) => NumberFormat.compact().format(number);

View File

@ -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(' · ')

View File

@ -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';

View File

@ -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,

View File

@ -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,
),
],