localison 0.0.5

  • Readme
  • Changelog
  • Installing
  • new58

Localison #

Provides localization support to a Flutter app using JSON files without too many bells and whistles. It relies on simple JSON files to represent the different localizations for texts written in a base language, and includes support for plural (ISO standard), plural support using quantities (non-ISO standard) and gender support.

The default locale in Localison is English (Localisoin.defaultLocale), and the initial base locale points to it. You can change it easily if you need to by calling Localison.baseLocale(...); in your main() function.

The plugin provides all that a MaterialApp needs in order to properly load localizations from JSON files.

Getting Started #

A multi-lingual MaterialApp has at least the following structure:

const Iterable<Locale> supportedLocales = /* list of supported locales */

Locale currentLocale = /* the current locale for a user/device */

MaterialApp(
  localizationsDelegates: [
    GlobalMaterialLocalizations.delegate,
    GlobalWidgetsLocalizations.delegate,
  ],
  supportedLocales: supportedLocales,
  locale: currentLocale,
  ...
);

To add Localison support, create your simple JSON files (or download them from your online localization service's website) in res/l10n/ directory.

The directory can be changed by calling Localison.baseDirectory(...) in your main() function.

Note: the JSON file associated with the base locale must be called base.json.

The JSON file's structure is easy:

{
  "btn_send": "Send",
  "btn_join": "Join",
  "btn_Cancel": "Cancel",

  "items_zero": "You have no items.",
  "items_one": "You have one item.",
  "items_two": "You have two items.",
  "items_few": "You have few items.",
  "items_many": "You have many items.",
  "items_other": "You have %d items.",

  "quantified_items_zero": "You have no items.",
  "quantified_items_one": "You have one item.",
  "quantified_items_two": "You have two items.",
  "quantified_items_few": "You have %d items.",
  "quantified_items_many": "You have %d items.",
  "quantified_items_other": "You have %d items.",

  "close_male": "Your male friend is here.",
  "close_female": "Your female friend is here.",
  "close_trans": "Your transgender friend is here.",
  "close_other": "Your friend is here."
}

Finally, you can alter the MaterialApp to look like this:

const Iterable<Locale> supportedLocales = /* list of supported locales */

Locale currentLocale = /* the current locale for a user/device */

final localison = Localison(supportedLocales); // Add this

MaterialApp(
  localizationsDelegates: [
    localison, // Add this
    GlobalMaterialLocalizations.delegate,
    GlobalWidgetsLocalizations.delegate,
  ],
  supportedLocales: localison.locales, // Add this
  locale: currentLocale,
  ...
);

Installation #

Add the following to your pubspec.yaml file:

dependencies:
  localison: any

Update Flutter's dependencies: flutter pub get

Finally, load it in your Dart code: import 'package:localison/localison.dart';

Localison changes log #

0.0.5 #

  • Remove plugin section in pubspec.yaml.

0.0.1-0.0.4 #

  • Initial release.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  localison: ^0.0.5

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:localison/localison.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
24
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
80
Overall:
Weighted score of the above. [more]
58
Learn more about scoring.

We analyzed this package on Jul 10, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.8.4
  • pana: 0.13.14
  • Flutter: 1.17.5

Analysis suggestions

Package not compatible with SDK dart

Because:

  • localison that is a package requiring null.

Package not compatible with runtime flutter-web on web

Because:

  • package:localison/localison.dart that imports:
  • dart:io

Maintenance suggestions

Maintain an example. (-10 points)

Create a short demo in the example/ directory to show how to use this package.

Common filename patterns include main.dart, example.dart, and localison.dart. Packages with multiple examples should provide example/README.md.

For more information see the pub package layout conventions.

Package is pre-v0.1 release. (-10 points)

While nothing is inherently wrong with versions of 0.0.*, it might mean that the author is still experimenting with the general direction of the API.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.6.0 <3.0.0
flutter 0.0.0
sprintf ^4.0.2 4.0.2
Transitive dependencies
collection 1.14.12 1.14.13
meta 1.1.8 1.2.2
sky_engine 0.0.99
typed_data 1.1.6 1.2.0
vector_math 2.0.8 2.1.0-nullsafety
Dev dependencies
flutter_test
pedantic 1.9.0