Smart Localize Package

SmartLocalize is a Flutter localization package that efficiently handles translations by dynamically loading language resources based on the app's locale, with robust fallback support.

Repo stars Last Commit Repo PRs Repo issues License

Features

  • Easy setup with Flutter's localization system.
  • Dynamic locale support with the ability to load multiple languages.
  • Fallback translations for robust error handling.
  • Singleton design pattern for efficient resource management.
  • Customizable translation keys and error logging for development debugging.

Installation

  1. Add the following to your pubspec.yaml:
dependencies:
  smart_localize: <latest_version>

Usage

Example

  Text(
    SmartLocalize.company,
    style: const TextStyle(fontSize: 14),
  )

Basic Usage

Here is an example of how to use the SmartLocalize widget in your Flutter application:

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      supportedLocales: const [
        Locale('en'),
        Locale('ar'),
      ],
      locale: const Locale('ar'),
      localeResolutionCallback: (locale, supportedLocales) =>
      supportedLocales.contains(locale) ? locale : const Locale('ar'),
      localizationsDelegates: context.smartLocalizeDelegates,
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(SmartLocalize.home),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              SmartLocalize.company,
              style: const TextStyle(fontSize: 14),
            ),
            Text(
              SmartLocalizeValidation.passwordLowercase,
              style: const TextStyle(fontSize: 14),
            ),
            Text(
              SmartLocalizeConfirmation.addToCart,
              style: const TextStyle(fontSize: 14),
            ),
            Text(
              SmartLocalizePlaceholder.enterEmail,
              style: const TextStyle(fontSize: 14),
            ),
          ],
        ),
      ),
    );
  }
}

Localization

To enable validation message localization in the Factory Constructors, add LocalizeDelegate.delegate to your app's list of delegates:

  MaterialApp(
    localizationsDelegates: context.smartLocalizeDelegates,
    // other app configurations...
  )

Contributions

Feel free to contribute to this project.

If you find a bug or want a feature, but don't know how to fix/implement it, please fill an issue.
If you fixed a bug or implemented a feature, please send a pull request.

Made with contrib.rocks.

Libraries

smart_localize