l10n_flow 0.1.0 copy "l10n_flow: ^0.1.0" to clipboard
l10n_flow: ^0.1.0 copied to clipboard

Sync translations from collaborative spreadsheets and manage JSON localization at runtime in Flutter.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:l10n_flow/l10n_flow.dart';

const english = AppLocale(
  value: Locale('en'),
  assetPath: 'assets/l10n/en.json',
);
const simplifiedChinese = AppLocale(
  value: Locale('zh', 'CN'),
  assetPath: 'assets/l10n/zh_cn.json',
);
const vietnamese = AppLocale(
  value: Locale('vi'),
  assetPath: 'assets/l10n/vi.json',
);

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await L10nManager().init(
    defaultLocale: english,
    locales: const [english, simplifiedChinese, vietnamese],
  );
  runApp(const ExampleApp());
}

class ExampleApp extends StatelessWidget {
  const ExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return L10nBuilder(
      builder: (context, l10n) => MaterialApp(
        locale: l10n.locale.value,
        supportedLocales: L10nManager().supportedLocales,
        localizationsDelegates: GlobalMaterialLocalizations.delegates,
        home: Scaffold(
          appBar: AppBar(title: Text(l10n.t('app.title') ?? '')),
          body: Center(
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                Text('welcome'.trMap({'name': 'Aiwen'})),
                const SizedBox(height: 16),
                SegmentedButton<AppLocale>(
                  segments: const [
                    ButtonSegment(value: english, label: Text('English')),
                    ButtonSegment(
                      value: simplifiedChinese,
                      label: Text('中文'),
                    ),
                    ButtonSegment(value: vietnamese, label: Text('Tiếng Việt')),
                  ],
                  selected: {l10n.locale},
                  onSelectionChanged: (selection) async {
                    await L10nManager().change(selection.single);
                  },
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
0
likes
150
points
87
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Sync translations from collaborative spreadsheets and manage JSON localization at runtime in Flutter.

Repository (GitHub)
View/report issues

Topics

#flutter #localization #i18n #l10n #google-sheets

License

MIT (license)

Dependencies

args, flutter, http, path, rxdart, yaml

More

Packages that depend on l10n_flow