csv_localizations 0.7.0 csv_localizations: ^0.7.0 copied to clipboard
CSV localization package built on LocalizationsDelegate
csv_localizations #
CSV localization package for Flutter.
Store translations for multiple languages in a single CSV file.
Consider using toml_localizations or yaml_localizations for separate files per language.
Usage #
See example.
Install #
Add to your pubspec.yaml
dependencies:
csv_localizations:
Add CSV asset file #
Add a 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
my_img,assets/en.png,assets/nb.png
Multiline,"This
is a multiline
string","Denne
teksten går over flere
linjer"
Tip: keys can point to local assets like images etc.
Format #
key | en | nb |
---|---|---|
Hi | Hi | Hei |
Bike | Bike | Sykkel |
Dog | Dog | Hund |
First row lists supported language codes.
First column are keys for localized values.
You can wrap multiline strings in quotation marks.
API #
Translate strings using
CsvLocalizations.instance.string('Hi')
We keep the API simple, but you can easily add an extension method to String
like this:
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
.
Check if the translation file is loaded using CsvLocalizations.instance.loaded
.
Only necessary if called before initializing the global localizationDelegates.
MaterialApp #
Add CsvLocalizationsDelegate
to MaterialApp
and set supportedLocales
using
language codes.
MaterialApp(
localizationsDelegates: [
... // global delegates
CsvLocalizationsDelegate(
assetPath: 'assets/lang.csv',
supportedLanguageCodes: [ 'en', 'nb', ],
),
],
supportedLocales: [ 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>