translations_keychain
is a small Dart builder that converts the local JSON files used for translations into a Dart abstract class.
When translations_keychain
is running in watch mode, you could simply edit your JSON file and the abstract class will be automatically updated.
- Merges all JSON keys in one single file
- Supports for nested JSON objects for grouped labels
- Sorts the final class properties
- Use UpperCamelCase for class name and snake_case for file name
Add this to your package's pubspec.yaml file:
dev_dependencies:
# stable version install from https://pub.dev/packages
translations_keychain: <last_version>
build_runner: ^1.8.1
# Dev version install from git REPO
translations_keychain:
git: https://github.com/lcaprini/translations_keychain.git
By default translations_keychain
scans every JSON file into the /assets/langs
directory and generates the translations_keychain.dart
file into /lib/i18n
directory.
If you want to change the default behaviour you could create or update the build.yaml
file of your project with:
targets:
$default:
builders:
translations_keychain:
options:
path: <langs_assets_directory>
output: <output_directory>
class_name: <class_and_file_name>
With build_runner
installed, you could semply launch the build
task
pub run build_runner build --delete-conflicting-outputs
or launch in watch
mode if you want to update the final class file automagically.
pub run build_runner watch --delete-conflicting-outputs
Of course this package could be used also in a flutter app; the build_runner
tasks became:
flutter pub run build_runner build --delete-conflicting-outputs
flutter pub run build_runner watch --delete-conflicting-outputs
An example showing how to setup and use translations_keychain
.