Skip to content

Commit e456747

Browse files
fix(firebase_ui_localizations): expose all Firebase UI localizations for overriding (#309)
1 parent 6ec3ec1 commit e456747

File tree

7 files changed

+42
-32
lines changed

7 files changed

+42
-32
lines changed

docs/firebase-ui-localizations.md

+5-3
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ dependencies:
1313
1414
## Usage
1515
16-
If your app supports only a single language, and you want to override labels – you will need to provide a custom class that implements [`DefaultLocalizations`](https://pub.dev/documentation/firebase_ui_localizations/latest/DefaultLocalizations-class.html),
17-
for example:
16+
If your app supports only a single language, and you want to override labels – you will need to provide a custom class that implements one of the [exposed localizations](https://github.com/firebase/FirebaseUI-Flutter/blob/main/packages/firebase_ui_localizations/lib/src/lang).
17+
18+
For example, we could override the Spanish localization class and customize the email and password labels:
1819
1920
```dart
2021
import 'package:flutter_localizations/flutter_localizations.dart';
2122
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
2223

23-
class LabelOverrides extends DefaultLocalizations {
24+
// EsLocalizations is a class that provides Spanish labels. We override it here:
25+
class LabelOverrides extends EsLocalizations {
2426
const LabelOverrides();
2527

2628
@override

packages/firebase_ui_auth/example/lib/main.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ class FirebaseAuthUIExample extends StatelessWidget {
275275
},
276276
title: 'Firebase UI demo',
277277
debugShowCheckedModeBanner: false,
278-
locale: const Locale('en'),
278+
supportedLocales: const [Locale('en')],
279279
localizationsDelegates: [
280280
FirebaseUILocalizations.withDefaultOverrides(const LabelOverrides()),
281281
GlobalMaterialLocalizations.delegate,

packages/firebase_ui_localizations/lib/firebase_ui_localizations.dart

+2
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ export 'src/l10n.dart'
77

88
export 'src/default_localizations.dart'
99
show DefaultLocalizations, FirebaseUILocalizationLabels;
10+
11+
export 'src/all_localizations.dart';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright 2024, the Chromium project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
export 'lang/ar.dart';
6+
export 'lang/de.dart';
7+
export 'lang/en.dart';
8+
export 'lang/es.dart';
9+
export 'lang/es_419.dart';
10+
export 'lang/fr.dart';
11+
export 'lang/he.dart';
12+
export 'lang/hi.dart';
13+
export 'lang/hu.dart';
14+
export 'lang/id.dart';
15+
export 'lang/it.dart';
16+
export 'lang/ja.dart';
17+
export 'lang/ko.dart';
18+
export 'lang/nb.dart';
19+
export 'lang/nl.dart';
20+
export 'lang/pl.dart';
21+
export 'lang/pt.dart';
22+
export 'lang/ro.dart';
23+
export 'lang/ru.dart';
24+
export 'lang/th.dart';
25+
export 'lang/tr.dart';
26+
export 'lang/uk.dart';
27+
export 'lang/zh.dart';
28+
export 'lang/zh_tw.dart';

packages/firebase_ui_localizations/lib/src/all_languages.dart packages/firebase_ui_localizations/lib/src/get_localization.dart

+1-24
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,7 @@
44
import 'dart:ui';
55

66
import "./default_localizations.dart";
7-
import 'lang/ar.dart';
8-
import 'lang/de.dart';
9-
import 'lang/en.dart';
10-
import 'lang/es.dart';
11-
import 'lang/es_419.dart';
12-
import 'lang/fr.dart';
13-
import 'lang/he.dart';
14-
import 'lang/hi.dart';
15-
import 'lang/hu.dart';
16-
import 'lang/id.dart';
17-
import 'lang/it.dart';
18-
import 'lang/ja.dart';
19-
import 'lang/ko.dart';
20-
import 'lang/nb.dart';
21-
import 'lang/nl.dart';
22-
import 'lang/pl.dart';
23-
import 'lang/pt.dart';
24-
import 'lang/ro.dart';
25-
import 'lang/ru.dart';
26-
import 'lang/th.dart';
27-
import 'lang/tr.dart';
28-
import 'lang/uk.dart';
29-
import 'lang/zh.dart';
30-
import 'lang/zh_tw.dart';
7+
import 'all_localizations.dart';
318

329
final Set<String> kSupportedLanguages = {
3310
'ar', // Arabic

packages/firebase_ui_localizations/lib/src/l10n.dart

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import 'package:flutter/foundation.dart';
66
import 'package:flutter/material.dart';
77

8-
import 'all_languages.dart';
8+
import 'get_localization.dart';
99
import 'default_localizations.dart';
1010

1111
const kDefaultLocale = Locale('en');
@@ -54,7 +54,8 @@ class FirebaseUILocalizations<T extends FirebaseUILocalizationLabels> {
5454
///
5555
/// See [FirebaseUILocalizationLabels].
5656
static FirebaseUILocalizationDelegate
57-
withDefaultOverrides<T extends DefaultLocalizations>(T overrides) {
57+
withDefaultOverrides<T extends FirebaseUILocalizationLabels>(
58+
T overrides) {
5859
return FirebaseUILocalizationDelegate<T>(overrides);
5960
}
6061
}

packages/firebase_ui_localizations/test/firebase_ui_localizations_test.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
6-
import 'package:firebase_ui_localizations/src/lang/zh_tw.dart';
76
import 'package:flutter/material.dart';
87
import 'package:flutter_localizations/flutter_localizations.dart';
98
import 'package:flutter_test/flutter_test.dart';
@@ -118,7 +117,8 @@ Future<void> main() async {
118117
(tester) async {
119118
await tester.pumpWidget(
120119
TestMaterialApp(
121-
locale: localeTW,
120+
// Test that 'en' labels are overridden by `ZhTWLocalizationsOverrides` overrides
121+
locale: const Locale('en'),
122122
localizationsOverride: const FirebaseUILocalizationDelegate(
123123
ZhTWLocalizationsOverrides(),
124124
),

0 commit comments

Comments
 (0)