Wrong translation & not in Transifex #409
This commit is contained in:
parent
886e366ad1
commit
dbe74e2067
|
|
@ -14,6 +14,7 @@ import 'package:intl/intl.dart';
|
|||
import 'package:local_auth/local_auth.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
import 'package:timeago/timeago.dart' as timeago;
|
||||
|
||||
// Project imports:
|
||||
import 'package:invoiceninja_flutter/constants.dart';
|
||||
|
|
@ -213,6 +214,67 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
}
|
||||
}
|
||||
|
||||
void _initTimeago() {
|
||||
final locale = localeSelector(widget.store.state, twoLetter: true);
|
||||
if (locale == 'ar') {
|
||||
timeago.setLocaleMessages('ar', timeago.ArMessages());
|
||||
timeago.setLocaleMessages('ar_short', timeago.ArMessages());
|
||||
} else if (locale == 'ca') {
|
||||
timeago.setLocaleMessages('ca', timeago.CaMessages());
|
||||
timeago.setLocaleMessages('ca_short', timeago.CaMessages());
|
||||
} else if (locale == 'cs') {
|
||||
timeago.setLocaleMessages('cs', timeago.CsMessages());
|
||||
timeago.setLocaleMessages('cs_short', timeago.CsMessages());
|
||||
} else if (locale == 'da') {
|
||||
timeago.setLocaleMessages('da', timeago.DaMessages());
|
||||
timeago.setLocaleMessages('da_short', timeago.DaMessages());
|
||||
} else if (locale == 'de') {
|
||||
timeago.setLocaleMessages('de', timeago.DeMessages());
|
||||
timeago.setLocaleMessages('de_short', timeago.DeMessages());
|
||||
} else if (locale == 'en') {
|
||||
timeago.setLocaleMessages('en', timeago.EnMessages());
|
||||
timeago.setLocaleMessages('en_short', timeago.EnMessages());
|
||||
} else if (locale == 'es') {
|
||||
timeago.setLocaleMessages('es', timeago.EsMessages());
|
||||
timeago.setLocaleMessages('es_short', timeago.EsMessages());
|
||||
} else if (locale == 'fa') {
|
||||
timeago.setLocaleMessages('fa', timeago.FaMessages());
|
||||
} else if (locale == 'fr') {
|
||||
timeago.setLocaleMessages('fr', timeago.FrMessages());
|
||||
timeago.setLocaleMessages('fr_short', timeago.FrShortMessages());
|
||||
} else if (locale == 'it') {
|
||||
timeago.setLocaleMessages('it', timeago.ItMessages());
|
||||
timeago.setLocaleMessages('it_short', timeago.ItShortMessages());
|
||||
} else if (locale == 'ja') {
|
||||
timeago.setLocaleMessages('ja', timeago.JaMessages());
|
||||
} else if (locale == 'nb') {
|
||||
timeago.setLocaleMessages('nb', timeago.NbNoMessages());
|
||||
timeago.setLocaleMessages('nb_short', timeago.NbNoShortMessages());
|
||||
} else if (locale == 'nl') {
|
||||
timeago.setLocaleMessages('nl', timeago.NlMessages());
|
||||
timeago.setLocaleMessages('nl_short', timeago.NlShortMessages());
|
||||
} else if (locale == 'pl') {
|
||||
timeago.setLocaleMessages('pl', timeago.PlMessages());
|
||||
} else if (locale == 'pt') {
|
||||
timeago.setLocaleMessages('pt', timeago.PtBrMessages());
|
||||
timeago.setLocaleMessages('pt_short', timeago.PtBrShortMessages());
|
||||
} else if (locale == 'ro') {
|
||||
timeago.setLocaleMessages('ro', timeago.RoMessages());
|
||||
timeago.setLocaleMessages('ro_short', timeago.RoShortMessages());
|
||||
} else if (locale == 'ru') {
|
||||
timeago.setLocaleMessages('ru', timeago.RuMessages());
|
||||
timeago.setLocaleMessages('ru_short', timeago.RuShortMessages());
|
||||
} else if (locale == 'sv') {
|
||||
timeago.setLocaleMessages('sv', timeago.SvMessages());
|
||||
timeago.setLocaleMessages('sv_short', timeago.SvShortMessages());
|
||||
} else if (locale == 'th') {
|
||||
timeago.setLocaleMessages('th', timeago.ThMessages());
|
||||
timeago.setLocaleMessages('th_short', timeago.ThShortMessages());
|
||||
} else if (locale == 'zh') {
|
||||
timeago.setLocaleMessages('zh', timeago.ZhMessages());
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return StoreProvider<AppState>(
|
||||
|
|
@ -229,6 +291,7 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
});
|
||||
Intl.defaultLocale = localeSelector(state);
|
||||
final locale = AppLocalization.createLocale(localeSelector(state));
|
||||
_initTimeago();
|
||||
|
||||
final textButtonTheme = TextButton.styleFrom(
|
||||
minimumSize: Size(88, 36),
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ List<BaseEntity> filteredSelector(String filter, UserCompanyState state) {
|
|||
return list;
|
||||
}
|
||||
|
||||
String localeSelector(AppState state) {
|
||||
String localeSelector(AppState state, {bool twoLetter = false}) {
|
||||
final locale = state.staticState
|
||||
?.languageMap[state.company?.settings?.languageId]?.locale ??
|
||||
'en';
|
||||
|
|
@ -128,6 +128,8 @@ String localeSelector(AppState state) {
|
|||
// https://github.com/flutter/flutter/issues/32090
|
||||
if (locale == 'mk_MK' || locale == 'sq') {
|
||||
return 'en';
|
||||
} else if (twoLetter) {
|
||||
return locale.split('_').first;
|
||||
} else {
|
||||
return locale;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
|
|||
|
||||
// Package imports:
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
||||
import 'package:timeago/timeago.dart' as timeago;
|
||||
|
||||
// Project imports:
|
||||
|
|
@ -157,7 +158,8 @@ class _HistoryListTileState extends State<HistoryListTile> {
|
|||
subtitle: subtitle,
|
||||
// TODO this needs to be localized
|
||||
trailing: LiveText(
|
||||
() => timeago.format(history.dateTime, locale: 'en_short'),
|
||||
() => timeago.format(history.dateTime,
|
||||
locale: localeSelector(state, twoLetter: true) + '_short'),
|
||||
duration: Duration(minutes: 1),
|
||||
),
|
||||
/*
|
||||
|
|
@ -195,7 +197,7 @@ class _HistoryListTileState extends State<HistoryListTile> {
|
|||
},
|
||||
)
|
||||
: LiveText(
|
||||
() => timeago.format(history.dateTime, locale: 'en_short'),
|
||||
() => timeago.format(history.dateTime, locale: localeSelector(state, twoLetter: true) + '_short'),
|
||||
duration: Duration(minutes: 1),
|
||||
),
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// Flutter imports:
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
||||
|
||||
// Package imports:
|
||||
import 'package:timeago/timeago.dart' as timeago;
|
||||
|
|
@ -75,8 +76,9 @@ class _DesignViewState extends State<DesignView> {
|
|||
value: '$count',
|
||||
label: localization.count,
|
||||
secondLabel: localization.lastUpdated,
|
||||
secondValue:
|
||||
timeago.format(convertTimestampToDate(design.updatedAt)),
|
||||
secondValue: timeago.format(
|
||||
convertTimestampToDate(design.updatedAt),
|
||||
locale: localeSelector(state, twoLetter: true)),
|
||||
),
|
||||
ListDivider(),
|
||||
if (company.isModuleEnabled(EntityType.invoice))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// Flutter imports:
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
||||
|
||||
// Package imports:
|
||||
import 'package:timeago/timeago.dart' as timeago;
|
||||
|
|
@ -86,7 +87,8 @@ class _InvoiceViewHistoryState extends State<InvoiceViewHistory> {
|
|||
showTime: true,
|
||||
) +
|
||||
' • ' +
|
||||
timeago.format(convertTimestampToDate(history.createdAt))),
|
||||
timeago.format(convertTimestampToDate(history.createdAt),
|
||||
locale: localeSelector(state, twoLetter: true))),
|
||||
trailing: Icon(Icons.chevron_right),
|
||||
onTap: () =>
|
||||
viewModel.onViewPdf(context, invoice, history.activityId),
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import 'package:flutter/services.dart';
|
|||
// Package imports:
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
||||
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||
import 'package:timeago/timeago.dart' as timeago;
|
||||
|
||||
|
|
@ -281,9 +282,11 @@ class _DeviceSettingsState extends State<DeviceSettings>
|
|||
subtitle: LiveText(() {
|
||||
return localization.lastUpdated +
|
||||
': ' +
|
||||
timeago.format(convertTimestampToDate(
|
||||
(state.userCompanyState.lastUpdated / 1000)
|
||||
.round()));
|
||||
timeago.format(
|
||||
convertTimestampToDate(
|
||||
(state.userCompanyState.lastUpdated / 1000)
|
||||
.round()),
|
||||
locale: localeSelector(state, twoLetter: true));
|
||||
}),
|
||||
onTap: () {
|
||||
viewModel.onRefreshTap(context);
|
||||
|
|
|
|||
Loading…
Reference in New Issue