Skip to content

Commit 60ea607

Browse files
Merge pull request #22 from ipcjs/dev/gen-l10n
Use `flutter gen-l10n` to generate `FormBuilderLocalizations`
2 parents d0bd977 + db99d8f commit 60ea607

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+2598
-2775
lines changed

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ And you can still add your custom error messages.
103103

104104
### Setup
105105

106-
To allow for localization of default error messages within your app, add `FormBuilderLocalizations.delegate` in the list of your app's `localizationsDelegates`
106+
The default error message is in English. To allow for localization of default error messages within your app, add `FormBuilderLocalizations.delegate` in the list of your app's `localizationsDelegates`
107107

108108
```dart
109109
return MaterialApp(
@@ -171,6 +171,10 @@ TextFormField(
171171
),
172172
```
173173

174+
#### Modify the default error message in a specific language
175+
176+
see [override_form_builder_localizations_en](example/lib/override_form_builder_localizations_en.dart) for more detail.
177+
174178
## Support
175179

176180
### Contribute
@@ -193,13 +197,13 @@ Create one ARB file inside the `lib/l10n` folder for each of the locales you nee
193197

194198
2. Translate the error messages
195199

196-
Duplicate the contents of `intl_messages.arb` (or any other ARB file) into your newly created ARB file, then translate the error messages by overwriting the default messages.
200+
Duplicate the contents of `intl_en.arb` (or any other ARB file) into your newly created ARB file, then translate the error messages by overwriting the default messages.
197201

198202
3. Generate localization code
199203

200204
To generate boilerplate code for localization, run the generate command inside the package directory where `pubspec.yaml` file is located:
201205

202-
`flutter pub run intl_utils:generate`
206+
`flutter gen-l10n`
203207

204208
Running the command will automatically create/update files inside the `lib/localization` directory, including your newly added locale support.
205209

analysis_options.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,3 @@ include: package:flutter_lints/flutter.yaml
22

33
analyzer:
44
exclude:
5-
- lib/localization/intl/**

example/lib/main.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:example/override_form_builder_localizations_en.dart';
12
import 'package:flutter/material.dart';
23
import 'package:flutter_localizations/flutter_localizations.dart';
34
import 'package:form_builder_validators/form_builder_validators.dart';
@@ -17,9 +18,13 @@ class MyApp extends StatelessWidget {
1718
title: 'Form Builder Validators Demo',
1819
theme: ThemeData(primarySwatch: Colors.blue),
1920
home: const HomePage(),
20-
supportedLocales: [...FormBuilderLocalizations.delegate.supportedLocales],
21+
supportedLocales: const [
22+
...FormBuilderLocalizations.supportedLocales,
23+
],
2124
localizationsDelegates: const [
2225
...GlobalMaterialLocalizations.delegates,
26+
// Placed in front of `FormBuilderLocalizations.delegate`
27+
OverrideFormBuilderLocalizationsEn.delegate,
2328
FormBuilderLocalizations.delegate,
2429
],
2530
);
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import 'package:flutter/foundation.dart';
2+
import 'package:flutter/material.dart';
3+
import 'package:form_builder_validators/form_builder_validators.dart';
4+
5+
/// Created by ipcjs on 2022/10/31.
6+
class OverrideFormBuilderLocalizationsEn
7+
extends FormBuilderLocalizationsImplEn {
8+
OverrideFormBuilderLocalizationsEn();
9+
10+
static const LocalizationsDelegate<FormBuilderLocalizationsImpl> delegate =
11+
_LocalizationsDelegate();
12+
13+
static const List<Locale> supportedLocales = [Locale('en')];
14+
15+
// Override a field and return your translation.
16+
@override
17+
String get requiredErrorText => 'override: This field cannot be empty.';
18+
}
19+
20+
class _LocalizationsDelegate
21+
extends LocalizationsDelegate<FormBuilderLocalizationsImpl> {
22+
const _LocalizationsDelegate();
23+
24+
@override
25+
Future<FormBuilderLocalizationsImpl> load(Locale locale) {
26+
final instance = OverrideFormBuilderLocalizationsEn();
27+
// IMPORTANT!! must to invoke setCurrentInstance()
28+
FormBuilderLocalizations.setCurrentInstance(instance);
29+
return SynchronousFuture<FormBuilderLocalizationsImpl>(instance);
30+
}
31+
32+
@override
33+
bool isSupported(Locale locale) =>
34+
OverrideFormBuilderLocalizationsEn.supportedLocales.contains(locale);
35+
36+
@override
37+
bool shouldReload(_LocalizationsDelegate old) => false;
38+
}

example/pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ packages:
125125
name: source_span
126126
url: "https://pub.dartlang.org"
127127
source: hosted
128-
version: "1.9.1"
128+
version: "1.9.0"
129129
stack_trace:
130130
dependency: transitive
131131
description:

l10n.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# https://docs.flutter.dev/development/accessibility-and-localization/internationalization#adding-your-own-localized-messages
2+
arb-dir: lib/l10n
3+
template-arb-file: intl_en.arb
4+
synthetic-package: false
5+
output-dir: lib/localization/intl
6+
output-localization-file: messages.dart
7+
output-class: FormBuilderLocalizationsImpl

lib/form_builder_validators.dart

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,36 @@
11
library form_builder_validators;
22

3+
export 'localization/intl/messages.dart';
4+
export 'localization/intl/messages_ar.dart';
5+
export 'localization/intl/messages_bn.dart';
6+
export 'localization/intl/messages_bs.dart';
7+
export 'localization/intl/messages_ca.dart';
8+
export 'localization/intl/messages_cs.dart';
9+
export 'localization/intl/messages_de.dart';
10+
export 'localization/intl/messages_en.dart';
11+
export 'localization/intl/messages_es.dart';
12+
export 'localization/intl/messages_et.dart';
13+
export 'localization/intl/messages_fa.dart';
14+
export 'localization/intl/messages_fr.dart';
15+
export 'localization/intl/messages_hr.dart';
16+
export 'localization/intl/messages_hu.dart';
17+
export 'localization/intl/messages_id.dart';
18+
export 'localization/intl/messages_it.dart';
19+
export 'localization/intl/messages_ja.dart';
20+
export 'localization/intl/messages_ko.dart';
21+
export 'localization/intl/messages_lo.dart';
22+
export 'localization/intl/messages_ms.dart';
23+
export 'localization/intl/messages_nl.dart';
24+
export 'localization/intl/messages_pl.dart';
25+
export 'localization/intl/messages_pt.dart';
26+
export 'localization/intl/messages_ro.dart';
27+
export 'localization/intl/messages_ru.dart';
28+
export 'localization/intl/messages_sk.dart';
29+
export 'localization/intl/messages_sl.dart';
30+
export 'localization/intl/messages_sw.dart';
31+
export 'localization/intl/messages_th.dart';
32+
export 'localization/intl/messages_tr.dart';
33+
export 'localization/intl/messages_uk.dart';
34+
export 'localization/intl/messages_zh.dart';
335
export 'localization/l10n.dart';
436
export 'src/form_builder_validators.dart';

lib/l10n/intl_messages.arb

Lines changed: 0 additions & 113 deletions
This file was deleted.

lib/l10n/intl_zh_Hans.arb renamed to lib/l10n/intl_zh.arb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"@@last_modified": "2021-12-24T02:25:04.576038Z",
3-
"@@locale": "zh_Hans",
3+
"@@locale": "zh",
44
"requiredErrorText": "此字段不能为空。",
55
"@requiredErrorText": {
66
"description": "Error Text for required field",

0 commit comments

Comments
 (0)