csv_localizations 1.2.0
csv_localizations: ^1.2.0 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.

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 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,en-GB,en-US
Hi,Hi,Hei,Hi GB,Hi US
my_img,assets/en.png,assets/nb.png,assets/en.png,assets/en.png
Multiline,"This is a
  multiline string","Denne teksten går over
  flere linjer","This is a
  multiline string","This is a
  multiline string"

Tip: keys can point to local assets like images etc.

Format #

keyen-GBennb
HiHiHiHei
BikeBikeBikeSykkel
DogDogDogHund

First row lists supported language/country 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('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>en-US</string>
	<string>en-GB</string>
	<string>nb</string>
</array>
4
likes
130
pub points
52%
popularity

A minimal CSV localization package built on LocalizationsDelegate.

Repository (GitHub)
View/report issues

Documentation

API reference

Uploaders

apptakk@gmail.com
erlendf80@gmail.com

License

MIT (LICENSE)

Dependencies

csv, flutter

More

Packages that depend on csv_localizations