Last updated:
0 purchases
app lang
A build_runner package for managing app language files.
This package helps you to manage your app's language files in a single Dart file. It enables you to generate JSON files or easy_localization key and loader classes from the Dart file.
Features #
Combine translations in a single Dart file
Generates JSON files for each locale
Generates easy_localization loader class
Generate key file for key paths
Import new locale from a JSON file
Remove a locale from the source file
Continuously generate files with the watch command
Getting started #
Add app_lang to pubspec.yaml file under the dependencies section
dependencies:
app_lang: latest
copied to clipboard
Add build_runner to pubspec.yaml file under the dev_dependencies section
dev_dependencies:
build_runner: latest
copied to clipboard
Add easy_localization if you want to use easy localization loader
dependencies:
app_lang: latest
easy_localization: latest
copied to clipboard
Usage #
1- Create a Dart file in lib/lang/app_lang_source.dart copy and past codes below.
// ignore_for_file: non_constant_identifier_names, type_annotate_public_apis
import 'package:app_lang/app_lang.dart';
@AppLangConfig(json: true, easyLoader: true)
class AppLangSource {
var user = (
gender: (
male: (en_US: "Hi man {} ;) ",),
female: (en_US: "Hello girl :)",),
other: (en_US: "Hello {}",),
),
money: (
zero: (en_US: "You not have money",),
one: (en_US: "You have {} dollar",),
many: (en_US: "You have {} dollars",),
other: (en_US: "You have {} dollars",),
),
);
var incomeTransaction = (
fields: (
amount: (en_US: "Price",),
paymentDate: (en_US: "Payment Date",),
),
actions: (
update: (en_US: "Edit",),
detail: (en_US: "Detail",),
addTag: (en_US: "Add Tag",),
),
validations: (
amount: (
notNull: (en_US: "You must enter an amount",),
lessThen: (en_US: "Amount must be less than 100",),
),
),
);
var expenseTransaction = (
fields: (
amount: (en_US: "Price",),
paymentDate: (en_US: "Payment Date",),
),
);
}
copied to clipboard
Important
Fields should be a Record
The last node(value node) should contain the locale as a parameter name and value should be a String
zero, one, two, few, many, other, male, female are reserved words. They should be the first parent of the value node.
If you use one of the reserved words and you are using the easy_localization package, other is required
2 - Run dart run build_runner build --delete-conflicting-outputs
The package will create files below in the same directory
app_lang_source.en_US.json is a asset file you can use with easy_localization or some other packages which does support JSON assets
app_lang_source.loader.dart is a easy_localization loader file. You can use it to load your translations.
app_lang_source.key.dart is a Dart file that contains AppLang class and keys in it to access translations
AppLangConfig Parameters #
Param
Type
Default
Description
keyClassName
String
AppLang
Name for keys class
easyLoader
bool
false
Generates easy loader class
json
bool
false
Generates JSON files for each locale
remove
String?
null
Removes a locale from the source file
import
Import?
null
Import a new locale from a JSON file
addRegionComments
bool
false
Add region comments to generated dart files for Colored Regions VSCode plugin
Import New Locale #
You can import a new locale with a JSON file. When you import a new local, the files will generated again with new translations.
If the source file contains a local already, existing keys will be use to import the new locale. If new locale json file doesn't contains any key that already exist, will be ignored.
If the source file is empty, the keys will be generated from the JSON
import 'package:app_lang/app_lang.dart';
@AppLangConfig(import: Import(locale: "en_US", path: "lib/lang/imports/en_US.json",json: true, easyLoader: true,))
class AppLangSource {
// Fields ...
}
copied to clipboard
Warning
After import you should remove the import parameter
Remove Existing Locale #
You can remove an existing locale from the sourcefile with remove parameter of AppLangConfig annotation.
When you remove a locale, all files will be generated again.
import 'package:app_lang/app_lang.dart';
@AppLangConfig(remove: "en_US", json: true, easyLoader: true)
class AppLangSource {
// Fields ...
}
copied to clipboard
Watch #
With dart run build_runner watch --delete-conflicting-outputs command, you can watch the source file and generate files automatic while you are working.
If you use localization_pro package you can install new JSON files and see the changes on app instantly without restart the app.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.