Skip to content

Commit 6c46c57

Browse files
Fix date time format localization
1 parent b4e6c61 commit 6c46c57

File tree

5 files changed

+36
-24
lines changed

5 files changed

+36
-24
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@ app.*.map.json
4848
.env_test
4949

5050
# Flutter localizations
51-
app_untranslated.txt
51+
lib/l10n/app_untranslated.txt

lib/locale.dart

+2-16
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import 'package:flutter/material.dart';
2020
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
21-
import 'package:flutter_localizations/flutter_localizations.dart';
2221
import 'package:intl/locale.dart' as intl;
2322

2423
export 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -30,22 +29,9 @@ class S {
3029
}
3130

3231
class AppLocale {
33-
static const supportedLocales = [
34-
Locale('en'),
35-
Locale('es'),
36-
Locale('it'),
37-
Locale('ru'),
38-
Locale('sk'),
39-
Locale('fr'),
40-
];
32+
static const supportedLocales = AppLocalizations.supportedLocales;
4133

42-
static const Iterable<LocalizationsDelegate<dynamic>> localizationsDelegates =
43-
[
44-
AppLocalizations.delegate,
45-
GlobalMaterialLocalizations.delegate,
46-
GlobalWidgetsLocalizations.delegate,
47-
GlobalCupertinoLocalizations.delegate,
48-
];
34+
static const localizationsDelegates = AppLocalizations.localizationsDelegates;
4935

5036
static Future<AppLocalizations> loadLocale(String localeStr) {
5137
final locale = intl.Locale.parse(localeStr);

lib/ui/app.dart

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2021 Yaroslav Pronin <proninyaroslav@mail.ru>
1+
// Copyright (C) 2021-2024 Yaroslav Pronin <proninyaroslav@mail.ru>
22
// Copyright (C) 2021 Insurgo Inc. <insurgo@riseup.net>
33
//
44
// This file is part of LibreTrack.
@@ -30,6 +30,7 @@ import 'package:libretrack/core/settings/settings.dart';
3030
import 'package:libretrack/locale.dart';
3131
import 'package:libretrack/logger.dart';
3232
import 'package:libretrack/platform/system_tray.dart';
33+
import 'package:libretrack/ui/intl_locale_bridge.dart';
3334
import 'package:receive_sharing_intent/receive_sharing_intent.dart';
3435

3536
import '../injector.dart';
@@ -220,7 +221,11 @@ class _AppState extends State<App> {
220221
localizationsDelegates: AppLocale.localizationsDelegates,
221222
supportedLocales: AppLocale.supportedLocales,
222223
locale: locale ?? _mapLocale(state.locale),
223-
builder: builder,
224+
builder: (context, child) {
225+
return InltLocaleBridge(
226+
child: builder == null ? child : builder(context, child),
227+
);
228+
},
224229
routerDelegate: _routerDelegate,
225230
routeInformationParser: _routeInfoParser,
226231
);

lib/ui/intl_locale_bridge.dart

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import 'package:flutter/widgets.dart';
2+
import 'package:intl/intl.dart';
3+
4+
/// Sets [Intl.defaultLocale] to the current locale of the app.
5+
class InltLocaleBridge extends StatefulWidget {
6+
final Widget? child;
7+
8+
const InltLocaleBridge({super.key, this.child});
9+
10+
@override
11+
State<InltLocaleBridge> createState() => _IntlLocaelState();
12+
}
13+
14+
class _IntlLocaelState extends State<InltLocaleBridge> {
15+
@override
16+
void didChangeDependencies() {
17+
super.didChangeDependencies();
18+
19+
Intl.defaultLocale = Localizations.localeOf(context).toString();
20+
}
21+
22+
@override
23+
Widget build(BuildContext context) {
24+
return widget.child ?? widget;
25+
}
26+
}

pubspec.yaml

-5
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,3 @@ flutter:
146146
- family: RobotoMono
147147
fonts:
148148
- asset: fonts/RobotoMono-Regular.ttf
149-
150-
flutter_intl:
151-
enabled: true
152-
class_name: S
153-
main_locale: en

0 commit comments

Comments
 (0)