Skip to content

Commit c069abe

Browse files
committed
fix: Fixed Nynorska language
1 parent 46a0610 commit c069abe

File tree

6 files changed

+75
-4
lines changed

6 files changed

+75
-4
lines changed

lib/core/constants/locale.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ final supportedLocales = [
2626
AppLanguage('മലയാളം', const Locale('ml')),
2727
AppLanguage('Nederlands', const Locale('nl', 'NL')),
2828
AppLanguage('Norsk', const Locale('no', 'NO')),
29-
AppLanguage('Nynorsk', const Locale('nn', 'NO')),
29+
AppLanguage('Nynorsk', const Locale('nn')),
3030
AppLanguage('ଓଡ଼ିଆ', const Locale('or', 'IN')),
3131
AppLanguage('ਪੰਜਾਬੀ', const Locale('pa')),
3232
AppLanguage('polski', const Locale('pl', 'PL')),
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import 'package:flutter/cupertino.dart';
2+
import 'package:flutter/foundation.dart';
3+
import 'package:flutter/material.dart';
4+
5+
import 'package:flutter_localizations/flutter_localizations.dart';
6+
7+
class NynorskMaterialLocalizationsDelegate
8+
extends LocalizationsDelegate<MaterialLocalizations> {
9+
const NynorskMaterialLocalizationsDelegate();
10+
11+
@override
12+
bool isSupported(Locale locale) {
13+
return locale == const Locale('nn');
14+
}
15+
16+
@override
17+
Future<MaterialLocalizations> load(Locale locale) async {
18+
assert(locale == const Locale('nn'));
19+
20+
return SynchronousFuture<MaterialLocalizations>(
21+
await GlobalMaterialLocalizations.delegate.load(
22+
const Locale('no', 'NO'),
23+
),
24+
);
25+
}
26+
27+
@override
28+
bool shouldReload(NynorskMaterialLocalizationsDelegate old) => false;
29+
}
30+
31+
class NynorskCupertinoLocalizationsDelegate
32+
extends LocalizationsDelegate<CupertinoLocalizations> {
33+
const NynorskCupertinoLocalizationsDelegate();
34+
35+
@override
36+
bool isSupported(Locale locale) {
37+
return locale == const Locale('nn');
38+
}
39+
40+
@override
41+
Future<CupertinoLocalizations> load(Locale locale) async {
42+
assert(locale == const Locale('nn'));
43+
44+
return SynchronousFuture<CupertinoLocalizations>(
45+
await GlobalCupertinoLocalizations.delegate.load(
46+
const Locale('no', 'NO'),
47+
),
48+
);
49+
}
50+
51+
@override
52+
bool shouldReload(NynorskCupertinoLocalizationsDelegate old) => false;
53+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export 'locale_delegate_nynorsk.dart';

lib/main.dart

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'package:hydrated_bloc/hydrated_bloc.dart';
1111
import 'package:intl/date_symbol_data_local.dart';
1212
import 'package:openreads/core/constants/constants.dart';
1313
import 'package:openreads/core/constants/locale.dart';
14+
import 'package:openreads/core/helpers/locale_delegates/locale_delegates.dart';
1415
import 'package:openreads/core/helpers/old_android_http_overrides.dart';
1516
import 'package:openreads/logic/bloc/challenge_bloc/challenge_bloc.dart';
1617
import 'package:openreads/logic/bloc/display_bloc/display_bloc.dart';
@@ -165,6 +166,12 @@ class _OpenreadsAppState extends State<OpenreadsApp>
165166
Widget build(BuildContext context) {
166167
_initDateFormat(context);
167168

169+
final localizationsDelegates = [
170+
...context.localizationDelegates,
171+
const NynorskMaterialLocalizationsDelegate(),
172+
const NynorskCupertinoLocalizationsDelegate(),
173+
];
174+
168175
return DynamicColorBuilder(
169176
builder: (ColorScheme? lightDynamic, ColorScheme? darkDynamic) {
170177
if (widget.themeState.amoledDark) {
@@ -230,7 +237,7 @@ class _OpenreadsAppState extends State<OpenreadsApp>
230237
home: welcomeMode
231238
? WelcomeScreen(themeData: Theme.of(context))
232239
: const BooksScreen(),
233-
localizationsDelegates: context.localizationDelegates,
240+
localizationsDelegates: localizationsDelegates,
234241
supportedLocales: context.supportedLocales,
235242
locale: context.locale,
236243
),
@@ -259,5 +266,13 @@ Future _initDateFormat(BuildContext context) async {
259266
await initializeDateFormatting();
260267

261268
// ignore: use_build_context_synchronously
262-
dateFormat = DateFormat.yMMMMd(context.locale.toString());
269+
String locale = context.locale.toString();
270+
271+
// Fallback to another locale as nn-NO is not supported by Flutter
272+
if (locale == const Locale('nn').toString()) {
273+
locale = const Locale('no', 'NO').toString();
274+
}
275+
276+
// ignore: use_build_context_synchronously
277+
dateFormat = DateFormat.yMMMMd(locale);
263278
}

pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ packages:
471471
source: hosted
472472
version: "4.0.0"
473473
flutter_localizations:
474-
dependency: transitive
474+
dependency: "direct main"
475475
description: flutter
476476
source: sdk
477477
version: "0.0.0"

pubspec.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ dependencies:
6161
dotted_border: ^2.1.0
6262
flutter_cache_manager: ^3.3.1
6363
modal_bottom_sheet: ^3.0.0
64+
flutter_localizations:
65+
sdk: flutter
6466

6567
dev_dependencies:
6668
flutter_test:

0 commit comments

Comments
 (0)