Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/KingWu/gen_lang
gen_lang is a dart library for internationalization. Extracts messages to generate dart files required by Intl, inspired by Intl_translation and Flutter i18n
https://github.com/KingWu/gen_lang
dart dart-library dartlang flutter flutter-package flutter-plugin flutter-plugins
Last synced: about 1 month ago
JSON representation
gen_lang is a dart library for internationalization. Extracts messages to generate dart files required by Intl, inspired by Intl_translation and Flutter i18n
- Host: GitHub
- URL: https://github.com/KingWu/gen_lang
- Owner: KingWu
- License: bsd-2-clause
- Created: 2019-05-20T15:35:25.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-10-13T09:25:08.000Z (over 1 year ago)
- Last Synced: 2024-01-08T06:03:34.183Z (5 months ago)
- Topics: dart, dart-library, dartlang, flutter, flutter-package, flutter-plugin, flutter-plugins
- Language: Dart
- Size: 83 KB
- Stars: 98
- Watchers: 6
- Forks: 23
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Lists
- awesome-flutter - GenLang - Code generator for Internationalization by [King Wu](https://github.com/KingWu) (Components / Internationalization)
- awesome-flutter-cn - GenLang - 国际化代码生成器,由 [King Wu](https://github.com/KingWu) 制作。 (组件 / 国际化)
- awesome-flutter - GenLang - Code generator for Internationalization by [King Wu](https://github.com/KingWu). (Components / Internationalization)
- -awesome-flutter - genLang - Code generator for Internationalization by [King Wu](https://github.com/KingWu). (Utilities / Games)
- awesome-flutter - GenLang - Code generator for Internationalization by [King Wu](https://github.com/KingWu). (Components / Internationalization)
- awesome-flutter - GenLang - Code generator for Internationalization by [King Wu](https://github.com/KingWu). (Components / Internationalization)
- awesome-flutter - GenLang - Code generator for Internationalization by [King Wu](https://github.com/KingWu). (Components / Internationalization)
- awesome-flutter - GenLang - Code generator for Internationalization by [King Wu](https://github.com/KingWu). (Components / Internationalization)
- awesome-flutter-cn - GenLang - 国际化代码生成器,[King Wu](https://github.com/KingWu). (组件 / 国际化)
README
# gen_lang
gen_lang is a dart library for internationalization. Extracts messages
to generate dart files required by
[Intl](https://github.com/dart-lang/intl).Now, three steps for internationalization
1. Preparing Json files
2. Run gen_lang
3. Use it in coding## Installation
Add these libraries into `pubspec.yaml````
dependencies:
flutter_localizations:
sdk: flutter
dev_dependencies:
gen_lang: 0.1.3
```
## Usage```
pub run gen_lang:generate
```A below table shown all supported arguments:
| Argument | Description |
|-----|-----|
| --source-dir | A source folder contains all string json files (defaults to "res/string") |
| --output-dir | A output folder stores all generated files (defaults to "lib/generated") |
| --template-locale | Use string_{template-locale}.json as a template to search KEY. If string_en does not exist, this script will use the first string json file as a template (defaults to "en") |## Source of Json Files
By default, the json files are required to locate at `res/string`. Using
`--source-dir` argument can change the default source path. These files
must be named in this pattern `string_{Locale}.json`Example of the files,
```
|--- lib
|--- res
|--- string
|--- string_en.json
|--- string_zh_TW.json
|--- string_ja.json
```## Supported Message Type
### Simple message
Define a json key and message without parameters```
{
"simpleMessage": "This is a simple Message"
}
```### Message with parameters
Define a message with parameters. Use ${parameterName} in a message.
```
{
"messageWithParams": "Hi ${yourName}, Welcome you!"
}
```### Plural messages with parameters
Define messages in a plural form. ${how many} is a reserved parameter in
a plural message. This parameters support integer only. For Intl,
[Intl.plural()](https://api.flutter.dev/flutter/intl/Intl/plural.html) supports these plural keyword including 'Zero', 'One',
'Two', 'Few', 'Many' and 'Other'. Define a json key into this pattern
{jsonKey} {pluralKeyword}. For 'Other', need to define 'POther' for the
plural keyword.Example
```
{
"pluralMessageZero": "Hi ${interviewerName}, I have no working experience.",
"pluralMessageOne": "Hi ${interviewerName}, I have one year working experience.",
"pluralMessageTwo": "Hi ${interviewerName}, I have two years of working experience.",
"pluralMessageFew": "Hi ${interviewerName}, I have few years of working experience.",
"pluralMessageMany": "Hi ${interviewerName}, I worked for a long time.",
"pluralMessagePOther": "Hi ${interviewerName}, I have ${howMany} years of working experience."
}
```
To know plural rules more, please read
[Intl's plural rules](https://github.com/dart-lang/intl/blob/master/lib/src/plural_rules.dart)
source code.### Gender message with parameters
Define a message in gender form. ${targetGender} is a reserved parameter
in a gender message. This parameters support string value with 'male',
female' and 'other'. For Intl, [Intl.gender()](https://api.flutter.dev/flutter/intl/Intl/gender.html) supports these keyword
including 'Male', 'Female' and 'Other'. Define a json key into this
pattern {jsonKey} {genderKeyword}. For 'Other', need to define 'GOther'
for the gender keyword.Example
```
{
"genderMessageMale": "Hi ${name}, He is boy.",
"genderMessageFemale": "Hi ${name}, She is girl",
"genderMessageGOther": "Hi ${name}, he/she is boy/girl."
}
```
## Usage of i18n.dart
The script will generate two files into the output folder including
`i18n.dart` and `messages_all.dart`. Import `i18n.dart` into your source
code. Then finish internationalization tasks.Example
```
import 'package:gen_lang_example/generated/i18n.dart';...
MaterialApp(
localizationsDelegates: [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate
],
supportedLocales: S.delegate.supportedLocales,
...
...S.of(context).simpleMessage; // Simple Message
S.of(context).messageWithParams('developer'); // Message with parameters
S.of(context).pluralMessage(10, 'King Wu'); // Plural Message with parameters
S.of(context).genderMessage('male', 'King Wu'); // Gender Message with parameters
```### Running Script in Example
Go into example folder. Run the command
```
cd example
pub run gen_lang:generate
```Then will generate `i18n.dart` and `messages_all.dart`
# Powered By
- [Plaker Lab 創玩坊](https://www.plakerlab.com/)
- [Wenjetso 搵著數](https://www.wenjetso.com/zh_HK/)