csv_localizations 0.3.0 csv_localizations: ^0.3.0 copied to clipboard
A minimal CSV localization package for Flutter built on LocalizationsDelegate.
csv_localizations #
A minimal CSV localization package for Flutter.
Store translations for multiple languages in a single CSV file.
Consider 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
Tip: Create a Spreadsheet via Google docs, then export as CSV
flutter:
assets:
- assets/lang.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 #
First row lists supported language codes.
First column are keys for localized values.
Wrap multiline strings in quotation marks.
We use the csv package for parsing, but we use \n
as the default eol and replace \r\n
with \n
before parsing.
MaterialApp #
Add CsvLocalizationsDelegate
to MaterialApp
and set supportedLocales
using
language codes.
MaterialApp(
localizationsDelegates: [
... // global delegates
CsvLocalizationsDelegate(
CsvLocalizations(
assetPath: 'assets/lang.csv',
supportedLanguageCodes: [ 'en', 'nb', ],
),
),
],
supportedLocales: [ Locale('en'), Locale('nb'), ],
}
API #
Translate strings using
CsvLocalizations.of(context).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.of(context).string(this);
}
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>