internationalization 3.0.1+1

Flutter Android iOS web

A project to easily implement internationalization on flutter projects

internationalization #

A project to easily implement internationalization on flutter projects

Configure Internationalization #

Go to pubspec.yaml then do the configurations like this:

internationalization:
  output-path: lib/infrastructure/resources/
  path: assets/translations
  locales:
    - locale:
      language-code: pt
      countries-code:
        - BR
        - PT
    - locale:
      language-code: en
  • output-path → where de generated file will be placed. Internationalization have a codegen. so run flutter pub run internationalization to generate a file that will helps you to translate your strings. If no outout-path provided, it'll be placed on lib/
  • path → where're the JSON files
  • locales → Array of locales. Locales have language-code and countries-code.
    • language-code → A string that representes the language (Ex.: pt, en)
    • countries-code → Array of countries. countries-code is optional.

Now go to main.dart and configure the InternationalizationDelegate and inform flutter the supported locales. Intl is the class generated by after ran flutter pub run internationalization.

MaterialApp(
  supportedLocales: Intl.suportedLocales,
  localizationsDelegates: [
    InternationalizationDelegate(
      translationsPath: Intl.stringsPath,
      suportedLocales: Intl.suportedLocales,
      files: Intl.files,
    ),
    GlobalMaterialLocalizations.delegate,
    GlobalWidgetsLocalizations.delegate,
  ],
);

IMPORTANT!!

Don't forget to expose the JSON files

flutter:
  uses-material-design: true
  assets:
    - ./assets/strings/en/
    - ./assets/strings/pt/BR/

Folder structure #

The folder structure is very import. So you have to create as same as informed in pubspec.yaml

Translation #

Intl.usage.simpleString()
Intl.usage.interpolationString(args: ["( ͡° ͜ʖ ͡°)"])

Intl.usage.interpolationStringWithNamedArgs(
  namedArgs: {"named_arg_key": "( ͡° ͜ʖ ͡°)"},
),

Intl.usage.simplePlurals(pluralValue: 0)),
Intl.usage.simplePlurals(pluralValue: 1)),
Intl.usage.simplePlurals(pluralValue: 123456789)),

Intl.usage.interpolationPlurals(
  pluralValue: 0,
  args: ["( ͡° ͜ʖ ͡°)"],
),
Intl.usage.interpolationPlurals(
  pluralValue: 1,
  args: ["( ͡° ͜ʖ ͡°)"],
),
Intl.usage.interpolationPlurals(
  pluralValue: 123456789,
  args: ["123456789"],
),

You also use extensions on strings to translate. Just use a string with the key and call .translate()

"simple_string".translate()

BuildContext #

You must have to, or not, inform the BuildContext to Internationalization. If you do, it allows Internationalization to listener when you change language of your app and avoid to close and reopen the app to apply the changes.

Internationalization.of(context);

To inform BuildContext just do it in every new screen (don't need to do in a simple widget)

NumberFormat & DateFormat #

These are features from intl library that was incoporated in Internationalization

NumberFormat DateFormat

9
likes
110
pub points
77%
popularity

A project to easily implement internationalization on flutter projects

Repository (GitHub)
View/report issues

Documentation

API reference

Uploader

tercyostorck@gmail.com

License

BSD (LICENSE)

Dependencies

flutter, flutter_localizations, intl, path, yaml

More

Packages that depend on internationalization