Last updated:
0 purchases
jimtl localazy
jimtl_localazy #
This is an helper package for flutter_jimtl. It will handle cache and OTA updates for your ARB files from Localazy
Setup #
Install last version of jimtl_localazy and flutter_jimtl (jimtl for Dart only)
dependencies:
jimtl_localazy:
flutter_jimtl:
copied to clipboard
On Dart side you'll need to create an instance of LocalazyCdnManager:
final manager = LocalazyCdnManager(
cdnId: '_a860213072234234453319c546',
getFileName: (String locale, String flavor) {
return 'myFile_$flavor.arb';
},
cacheFolder: path.join((await getTemporaryDirectory()).path, 'translations'),
//configCacheDuration: Duration(days: 1),
);
copied to clipboard
To find your cdnId please run localazy cdn on your project, you'll get something like:
Metadata:
- JSON: https://delivery.localazy.com/_a860213072234234453319c546/_e0.json
- Javascript: https://delivery.localazy.com/_a860213072234234453319c546/_e0.js
- Typescript: https://delivery.localazy.com/_a860213072234234453319c546/_e0.ts
copied to clipboard
So in this example the cdnId will be _a860213072234234453319c546.
Usage #
If you have an existing Flutter project with localization support, then you'll need to declare a LocalizationDelegate in your app.
Here is what it should look like:
localizationsDelegates: [
DefaultMaterialLocalizations.delegate,
TranslationsDelegate<Translations>.withRemoteManager(
defaultLocale: 'en',
supportedLocales: ['en', 'fr'],
// if you are using flavors, you'll need to specify the default and current one
defaultFlavor: 'default',
currentFlavor: 'flavor1',
localizationManager: manager, // here you can pass the previously created LocalazyCdnManager
// This method is called to load the default ARB files, easiest way is to load them from assets
dataLoader: (locale, flavor) async {
print('local load $locale and $flavor');
if (flavor == 'default') {
return await rootBundle.loadString('assets/arb/translations_$locale.arb');
}
return await rootBundle.loadString('assets/arb/translations_${flavor}_$locale.arb');
},
// Once your translations are updated from your remote files this callback will be triggered, you'll need to rebuild in order to see the changes
onTranslationsUpdated: () {
print('TX updated, need rebuild');
setState(() {});
},
// Builder to build your custom class containing your translations
translationsBuilder: () => Translations(),
),
]
copied to clipboard
To have more detail on the TranslationsDelegate please check flutter_jimtl.
Limitations #
Currently localazy doesn't give you back the meta data of the ARB file, this mean that it will only load existing translations where metadata have been found during the first load (with dataLoader).
Examples #
Take a look at the basic example here.
Contribution #
Contributions are welcome! Before doing it please create an issue describing the bug or the feature you want to work on.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.