applocale 2.0.1 copy "applocale: ^2.0.1" to clipboard
applocale: ^2.0.1 copied to clipboard

A Flutter plugin to enable support for internationalization (i18n) or different language with json files.

applocale #

A Flutter plugin to enable support for internationalization (i18n) or different language with json files.

Usage #

A simple usage example:

Project Structure #

project_structure

lang.json contents

//en.json
{
  "title": "Awesome!",
  "hello": "Hello",
  "message": "This is English!!!",
  "subDetail": {
    "greeting": "{hello} {name}!!!",
    "runtimeText": "I have proof, you can replace {replacement}"
  }
}

//bn.json
{
  "title": "অভূতপূর্ব!",
  "hello": "নমস্কার",
  "message": "ইহা বাংলা!!!",
  "subDetail": {
    "runtimeText": "আমি জানি যে {replacement}কে যে কোনও দিন চলে যেতে হবে।"
  }
}

Add the language directory as assets in pubspec.yaml

# pubspec.yaml
# add dependencies
dependencies:
  applocale: <latest-version>

flutter:
  # add the whole directory containing language json files as an asset
  assets:
    - i18n/

Now the code

// main.dart
import 'package:flutter/material.dart';

import 'package:applocale/applocale.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

// define supported Language lists
Map<String, String> get _supportedLanguages => {
      "en": "English",
      "en_us": "English(USA)",
      "bn": "Bengali",
    };
String get _defaultLanguage => "en";
List<String> get _getSupportedLanguages =>
    _supportedLanguages.entries.map((l) => l.key).toList();

void main(List<String> args) => runApp(FlutterDemoApp());

class FlutterDemoApp extends StatefulWidget {
  @override
  _FlutterDemoApp createState() => _FlutterDemoApp();
}

class _FlutterDemoApp extends State<FlutterDemoApp> {
  // initialize _localeDelegate
  LocaleDelegate _localeDelegate = LocaleDelegate.init(
    _getSupportedLanguages,
    // * optional, if it's same as the first one in the supportedLanguages
    defaultLanguage: _defaultLanguage,
  );

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) => MaterialApp(
        supportedLocales: _localeDelegate.supportedLocales, // Step I
        localizationsDelegates: [
          _localeDelegate, // Step II
          GlobalMaterialLocalizations.delegate,
          GlobalWidgetsLocalizations.delegate
        ],
        title: 'Flutter Demo',
        home: FlutterDemo(),
      );
}

class FlutterDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // since LocaleDelegate is already initialized & ready
    var appLocale = AppLocale.of(context); // Step III
    // In case some additional values can be set now. This is an one time
    // activity
    appLocale.updateValue({'name': 'জয়ন্তী'});

    return Scaffold(
      appBar: AppBar(
        title: Text(appLocale.localValue('title')),
      ),
      body: ListView(
        children: <Widget>[
          Center(
            child: Text(appLocale.localValue('subDetail.greeting')),
          ),
          Center(
            child: Text(appLocale.localValue(
              'subDetail.runtimeText',
              {'replacement': 'Individual'}, // runtime interpolation
            )),
          ),
          Center(
            child: Text(appLocale.localValue('message')),
          ),
        ],
      ),
    );
  }
}

Project Structure #

App with EnglishChange system languageApp with Bengali

App with English > Change system language > App with Bengali

App with English

Features and bugs #

Please file feature requests and bugs at the issue tracker.

3
likes
120
pub points
39%
popularity

Publisher

verified publishermarganam.com

A Flutter plugin to enable support for internationalization (i18n) or different language with json files.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

extend, flutter, interpolation, path

More

Packages that depend on applocale