Wrong translation & not in Transifex #409

This commit is contained in:
Hillel Coren 2022-04-03 12:39:10 +03:00
parent 886e366ad1
commit dbe74e2067
6 changed files with 83 additions and 9 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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