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:local_auth/local_auth.dart';
|
||||||
import 'package:redux/redux.dart';
|
import 'package:redux/redux.dart';
|
||||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||||
|
import 'package:timeago/timeago.dart' as timeago;
|
||||||
|
|
||||||
// Project imports:
|
// Project imports:
|
||||||
import 'package:invoiceninja_flutter/constants.dart';
|
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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return StoreProvider<AppState>(
|
return StoreProvider<AppState>(
|
||||||
|
|
@ -229,6 +291,7 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
||||||
});
|
});
|
||||||
Intl.defaultLocale = localeSelector(state);
|
Intl.defaultLocale = localeSelector(state);
|
||||||
final locale = AppLocalization.createLocale(localeSelector(state));
|
final locale = AppLocalization.createLocale(localeSelector(state));
|
||||||
|
_initTimeago();
|
||||||
|
|
||||||
final textButtonTheme = TextButton.styleFrom(
|
final textButtonTheme = TextButton.styleFrom(
|
||||||
minimumSize: Size(88, 36),
|
minimumSize: Size(88, 36),
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ List<BaseEntity> filteredSelector(String filter, UserCompanyState state) {
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
String localeSelector(AppState state) {
|
String localeSelector(AppState state, {bool twoLetter = false}) {
|
||||||
final locale = state.staticState
|
final locale = state.staticState
|
||||||
?.languageMap[state.company?.settings?.languageId]?.locale ??
|
?.languageMap[state.company?.settings?.languageId]?.locale ??
|
||||||
'en';
|
'en';
|
||||||
|
|
@ -128,6 +128,8 @@ String localeSelector(AppState state) {
|
||||||
// https://github.com/flutter/flutter/issues/32090
|
// https://github.com/flutter/flutter/issues/32090
|
||||||
if (locale == 'mk_MK' || locale == 'sq') {
|
if (locale == 'mk_MK' || locale == 'sq') {
|
||||||
return 'en';
|
return 'en';
|
||||||
|
} else if (twoLetter) {
|
||||||
|
return locale.split('_').first;
|
||||||
} else {
|
} else {
|
||||||
return locale;
|
return locale;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
|
||||||
|
|
||||||
// Package imports:
|
// Package imports:
|
||||||
import 'package:flutter_redux/flutter_redux.dart';
|
import 'package:flutter_redux/flutter_redux.dart';
|
||||||
|
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
||||||
import 'package:timeago/timeago.dart' as timeago;
|
import 'package:timeago/timeago.dart' as timeago;
|
||||||
|
|
||||||
// Project imports:
|
// Project imports:
|
||||||
|
|
@ -157,7 +158,8 @@ class _HistoryListTileState extends State<HistoryListTile> {
|
||||||
subtitle: subtitle,
|
subtitle: subtitle,
|
||||||
// TODO this needs to be localized
|
// TODO this needs to be localized
|
||||||
trailing: LiveText(
|
trailing: LiveText(
|
||||||
() => timeago.format(history.dateTime, locale: 'en_short'),
|
() => timeago.format(history.dateTime,
|
||||||
|
locale: localeSelector(state, twoLetter: true) + '_short'),
|
||||||
duration: Duration(minutes: 1),
|
duration: Duration(minutes: 1),
|
||||||
),
|
),
|
||||||
/*
|
/*
|
||||||
|
|
@ -195,7 +197,7 @@ class _HistoryListTileState extends State<HistoryListTile> {
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
: LiveText(
|
: LiveText(
|
||||||
() => timeago.format(history.dateTime, locale: 'en_short'),
|
() => timeago.format(history.dateTime, locale: localeSelector(state, twoLetter: true) + '_short'),
|
||||||
duration: Duration(minutes: 1),
|
duration: Duration(minutes: 1),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
// Flutter imports:
|
// Flutter imports:
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
||||||
|
|
||||||
// Package imports:
|
// Package imports:
|
||||||
import 'package:timeago/timeago.dart' as timeago;
|
import 'package:timeago/timeago.dart' as timeago;
|
||||||
|
|
@ -75,8 +76,9 @@ class _DesignViewState extends State<DesignView> {
|
||||||
value: '$count',
|
value: '$count',
|
||||||
label: localization.count,
|
label: localization.count,
|
||||||
secondLabel: localization.lastUpdated,
|
secondLabel: localization.lastUpdated,
|
||||||
secondValue:
|
secondValue: timeago.format(
|
||||||
timeago.format(convertTimestampToDate(design.updatedAt)),
|
convertTimestampToDate(design.updatedAt),
|
||||||
|
locale: localeSelector(state, twoLetter: true)),
|
||||||
),
|
),
|
||||||
ListDivider(),
|
ListDivider(),
|
||||||
if (company.isModuleEnabled(EntityType.invoice))
|
if (company.isModuleEnabled(EntityType.invoice))
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
// Flutter imports:
|
// Flutter imports:
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
||||||
|
|
||||||
// Package imports:
|
// Package imports:
|
||||||
import 'package:timeago/timeago.dart' as timeago;
|
import 'package:timeago/timeago.dart' as timeago;
|
||||||
|
|
@ -86,7 +87,8 @@ class _InvoiceViewHistoryState extends State<InvoiceViewHistory> {
|
||||||
showTime: true,
|
showTime: true,
|
||||||
) +
|
) +
|
||||||
' • ' +
|
' • ' +
|
||||||
timeago.format(convertTimestampToDate(history.createdAt))),
|
timeago.format(convertTimestampToDate(history.createdAt),
|
||||||
|
locale: localeSelector(state, twoLetter: true))),
|
||||||
trailing: Icon(Icons.chevron_right),
|
trailing: Icon(Icons.chevron_right),
|
||||||
onTap: () =>
|
onTap: () =>
|
||||||
viewModel.onViewPdf(context, invoice, history.activityId),
|
viewModel.onViewPdf(context, invoice, history.activityId),
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import 'package:flutter/services.dart';
|
||||||
// Package imports:
|
// Package imports:
|
||||||
import 'package:flutter_redux/flutter_redux.dart';
|
import 'package:flutter_redux/flutter_redux.dart';
|
||||||
import 'package:flutter_styled_toast/flutter_styled_toast.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:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||||
import 'package:timeago/timeago.dart' as timeago;
|
import 'package:timeago/timeago.dart' as timeago;
|
||||||
|
|
||||||
|
|
@ -281,9 +282,11 @@ class _DeviceSettingsState extends State<DeviceSettings>
|
||||||
subtitle: LiveText(() {
|
subtitle: LiveText(() {
|
||||||
return localization.lastUpdated +
|
return localization.lastUpdated +
|
||||||
': ' +
|
': ' +
|
||||||
timeago.format(convertTimestampToDate(
|
timeago.format(
|
||||||
|
convertTimestampToDate(
|
||||||
(state.userCompanyState.lastUpdated / 1000)
|
(state.userCompanyState.lastUpdated / 1000)
|
||||||
.round()));
|
.round()),
|
||||||
|
locale: localeSelector(state, twoLetter: true));
|
||||||
}),
|
}),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
viewModel.onRefreshTap(context);
|
viewModel.onRefreshTap(context);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue