@@ -5,6 +5,7 @@ import 'package:acter/common/providers/space_providers.dart';
55import 'package:acter/common/tutorial_dialogs/bottom_navigation_tutorials/bottom_navigation_tutorials.dart' ;
66import 'package:acter/config/constants.dart' ;
77import 'package:acter/common/utils/device.dart' ;
8+ import 'package:acter/features/settings/providers/notifiers/locale_notifier.dart' ;
89import 'package:acter/router/routes.dart' ;
910import 'package:acter/config/notifications/init.dart' ;
1011import 'package:acter/features/activities/providers/activities_providers.dart' ;
@@ -30,6 +31,7 @@ import 'package:acter/l10n/generated/l10n.dart';
3031import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart' ;
3132import 'package:flutter_riverpod/flutter_riverpod.dart' ;
3233import 'package:go_router/go_router.dart' ;
34+ import 'package:jiffy/jiffy.dart' ;
3335import 'package:logging/logging.dart' ;
3436import 'package:matomo_tracker/matomo_tracker.dart' ;
3537import 'package:screenshot/screenshot.dart' ;
@@ -94,13 +96,24 @@ class AppShellState extends ConsumerState<AppShell> {
9496 _initDeepLinking ();
9597 // initalize main providers
9698 _initProviders ();
97-
9899 // these want to be sure to execute in order
99100 await _initNotifications ();
100101 // calendar sync
101102 await _initCalendarSync ();
102103 }
103104
105+ void _initLocale () async {
106+ final language = ref.watch (localeProvider);
107+ final lang = L10n .of (context);
108+ final localeRelativeDateTime = LocaleRelativeDateTime (lang);
109+ await Jiffy .setLocale (
110+ language,
111+ startOfWeek: localeRelativeDateTime.startOfWeek (),
112+ ordinals: localeRelativeDateTime.ordinals (),
113+ relativeDateTime: localeRelativeDateTime,
114+ );
115+ }
116+
104117 Future <void > _initTracking () async {
105118 // listen to matomo analytics provider for opt in or out
106119 ref.listenManual (matomoAnalyticsProvider, (previous, next) {
@@ -182,6 +195,7 @@ class AppShellState extends ConsumerState<AppShell> {
182195
183196 @override
184197 Widget build (BuildContext context) {
198+ _initLocale ();
185199 // get platform of context.
186200 if (ref.watch (clientProvider).valueOrNull == null ) {
187201 // at the very startup we might not yet have a client loaded
@@ -211,7 +225,10 @@ class AppShellState extends ConsumerState<AppShell> {
211225 body: Screenshot (
212226 controller: screenshotController,
213227 child: Column (
214- children: [CrossSigning (), Expanded (child: buildBody (context))],
228+ children: [
229+ CrossSigning (),
230+ Expanded (child: buildBody (context)),
231+ ],
215232 ),
216233 ),
217234 ),
@@ -235,9 +252,8 @@ class AppShellState extends ConsumerState<AppShell> {
235252 config: < Breakpoint , SlotLayoutConfig ? > {
236253 Breakpoints .mediumLargeAndUp: SlotLayout .from (
237254 key: const Key ('primaryNavigation' ),
238- builder:
239- (BuildContext context) =>
240- SidebarWidget (navigationShell: widget.navigationShell),
255+ builder: (BuildContext context) =>
256+ SidebarWidget (navigationShell: widget.navigationShell),
241257 ),
242258 },
243259 );
@@ -261,19 +277,15 @@ class AppShellState extends ConsumerState<AppShell> {
261277 key: Keys .mainNav,
262278 inAnimation: AdaptiveScaffold .bottomToTop,
263279 outAnimation: AdaptiveScaffold .topToBottom,
264- builder:
265- (context) => BottomNavigationWidget (
266- navigationShell: widget.navigationShell,
267- ),
280+ builder: (context) =>
281+ BottomNavigationWidget (navigationShell: widget.navigationShell),
268282 ),
269283 Breakpoints .medium: SlotLayout .from (
270284 key: Keys .mainNav,
271285 inAnimation: AdaptiveScaffold .bottomToTop,
272286 outAnimation: AdaptiveScaffold .topToBottom,
273- builder:
274- (context) => BottomNavigationWidget (
275- navigationShell: widget.navigationShell,
276- ),
287+ builder: (context) =>
288+ BottomNavigationWidget (navigationShell: widget.navigationShell),
277289 ),
278290 },
279291 );
0 commit comments