in_app_translator 1.0.1 copy "in_app_translator: ^1.0.1" to clipboard
in_app_translator: ^1.0.1 copied to clipboard

A lightweight Flutter localization manager that provides multi-locale support, automatic caching, background translations, fallback locales, and easy integration via a flexible delegate system.

example/lib/main.dart

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:in_app_translator/translator.dart';

/// Example implementation of TranslatorDelegate
class MockTranslatorDelegate implements TranslatorDelegate {
  final Map<String, Map<String, String>> _translations = {
    'en_US': {
      'hello': 'Hello',
      'welcome': 'Welcome',
    },
    'fr_FR': {
      'hello': 'Bonjour',
      'welcome': 'Bienvenue',
    },
  };

  @override
  Future<String> translate(String source, Locale locale) async {
    await Future.delayed(Duration(milliseconds: 50)); // Simulate delay
    return _translations[locale.toString()]?[source] ?? source;
  }

  @override
  Future<String?> cache() async {
    return null; // No preloaded cache for this example
  }

  @override
  void save(String value) {
    print('Cache saved: $value'); // Optional save callback
  }

  @override
  void translated(String key, String value) {
    print('Translated "$key" -> "$value"');
  }
}

void main() {
  // Initialize Translator singleton
  Translator.init(
    defaultLocale: Locale('en', 'US'),
    fallbackLocale: Locale('fr', 'FR'),
    translator: MockTranslatorDelegate(),
  );

  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Translator Example',
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final translator = Translator.i;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Translator Example')),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(translator.tr('hello')),
            const SizedBox(height: 10),
            Text(translator.tr('welcome')),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  // Switch locale dynamically
                  translator.locale = Locale('fr', 'FR');
                });
              },
              child: const Text('Switch to French'),
            ),
          ],
        ),
      ),
    );
  }
}
1
likes
150
points
20
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A lightweight Flutter localization manager that provides multi-locale support, automatic caching, background translations, fallback locales, and easy integration via a flexible delegate system.

Repository (GitHub)
View/report issues

License

Apache-2.0 (license)

Dependencies

flutter

More

Packages that depend on in_app_translator