https://github.com/litlifesoftware/lit_localization_service
A Flutter package to create localizations using JSON files.
https://github.com/litlifesoftware/lit_localization_service
android dart flutter flutter-package ios json localization
Last synced: 4 months ago
JSON representation
A Flutter package to create localizations using JSON files.
- Host: GitHub
- URL: https://github.com/litlifesoftware/lit_localization_service
- Owner: litlifesoftware
- License: bsd-3-clause
- Created: 2021-03-23T18:22:03.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-03-30T14:15:39.000Z (about 5 years ago)
- Last Synced: 2025-10-23T05:41:25.576Z (8 months ago)
- Topics: android, dart, flutter, flutter-package, ios, json, localization
- Language: Dart
- Homepage:
- Size: 83 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Lit Localization Service
A Flutter package to create localizations using JSON files.
## Screenshots
| English Localization | German Localization |
| --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
|  |  |
## How it works
The JSON file is fetched on the localization delegate. Its content will then be extracted into a local `Map` and made accessible using the `BuildContext`. The localized strings can then be read by calling `LitLocalizations.of(context).getLocalizedValue("your_key_you_specified_on_the_json_file")` on the `build` method.
Reading essential values like texts from local storage will require a status check of the current fetch process on startup. This will increase the loading time of your application. It's used best when already depending on a persistent storage solution where loading processes on startup are required anyway.
## How to use
### Setup
- Provide a JSON file containing all localized strings in a predefined structure (Vide infra).
- Include the JSON file asset on your `pubspec.yaml` file of your app.
```yaml
assets:
- assets/json/
```
- Include `lit_localization_service` as git dependency on your `pubspec.yaml` file of your app:
```yaml
lit_localization_service:
git: https://github.com/litlifesoftware/lit_localization_service.git
```
or as a pub dependency:
```yaml
lit_localization_service:
```
- Set the `localizationsDelegates` property value of your `MaterialApp` by initializing the `LitLocalizationServiceDelegate`. Provide your JSON file's location.
```dart
localizationsDelegates: [
// The LitLocalizationServiceDelegate will be passed here.
LitLocalizationServiceDelegate(
// Set your asset url
jsonAssetURL: 'assets/json/localized_strings.json',
// Set all language code whose localization are available on the json file
supportedLanguages: ['en', 'de'],
// State whether to output logs.
debug: true,
),
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
```
- Create a `FutureBuilder` to call the `initLocalizations` method in order to montitor the parsing state and conditionally returning either your screen containing your localized strings or a fallback/loading screen
```dart
class ParsingStateBuilder extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: LitLocalizationController()
.initLocalizations('assets/json/localized_strings.json'),
builder: (context, localizatonsInitalization) {
return localizatonsInitalization.connectionState ==
ConnectionState.waiting
? LoadingScreen()
: MyHomeScreen();
},
);
}
}
```
- Call your localized strings by accessing the `BuildContext` once the parsing has been finished.
```dart
Text(LitLocalizations.of(context).getLocalizedValue("hello")),
```
- This should display the string 'Hello' extracted from your JSON file as a Flutter `Text` widget.
### JSON file structure
The JSON file should contain a list of objects, whose keys can be arbitrary. Each of these objects will in turn have a list of key-value pairs, representing the language and the localized string `"languageCode": "Localized String"`.
```json
{
"hello": {
"en": "Hello",
"de": "Hallo"
},
"world": {
"en": "World",
"de": "Welt"
}
}
```
## Getting Started with Flutter
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.
## Example
The `example` folder contains an example app demonstrating the most basic implementation using a local JSON asset file.
## License
The source code of this repository is distributed under the
**BSD 3-Clause** license as specified in the `LICENSE` file.