csv_localizations 1.6.0+1 csv_localizations: ^1.6.0+1 copied to clipboard
A minimal CSV localization package built on LocalizationsDelegate.
csv_localizations #
A minimal CSV localization package for Flutter.
Store translations for multiple languages in a single CSV file. One language per column. One translation per row.
Usage #
See example.
Install #
Add to your pubspec.yaml
dependencies:
csv_localizations:
Add a single CSV asset file #
Add a single CSV file as an asset and describe it in your pubspec.yaml
flutter:
assets:
- assets/translations.csv
Example CSV file
key,en,nb
Hi,Hi,Hei
Dog,Dog,Hund
Cat,Cat,Katt
my_img,assets/en.png,assets/nb.png
Tip: keys can point to local assets like images etc.
Format #
key | en | nb |
---|---|---|
Hi | Hi | Hei |
Dog | Dog | Hund |
Cat | Cat | Cat |
First row lists supported language/country codes. First column are keys for localized values.
Tip: you can wrap multiline strings in quotation marks
API #
Translate String's using:
CsvLocalizations.instance.string('Hi')
or add a String
extension:
We keep the API simple as to not pollute the String API
extension LocalizedString on String {
String tr(BuildContext context) => CsvLocalizations.instance.string(this);
}
We use \n
as the default eol (end-of-line) char, but you can set this via
CsvLocalizations.instance.eol
.
MaterialApp #
Add CsvLocalizationsDelegate
to MaterialApp
and set supportedLocales
using
language codes.
MaterialApp(
localizationsDelegates: [
// delegate from flutter_localization
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
// delegate from csv_localizations
CsvLocalizationsDelegate('assets/translations.csv'),
],
supportedLocales: [
Locale('en', 'GB'),
Locale('en', 'US'),
Locale('en'),
Locale('nb'),
],
}
Note on iOS #
Add supported languages to ios/Runner/Info.plist
as described
here.
Example:
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>nb</string>
</array>