language_translator 0.0.6+1 copy "language_translator: ^0.0.6+1" to clipboard
language_translator: ^0.0.6+1 copied to clipboard

A lightweight Flutter package for easy multilingual support, providing string translation with or without context, RTL support, and a custom widget for translated text display.

language_translator #

A lightweight Flutter package for seamlessly integrating multi-language support into your application. This package simplifies translating text and managing locale data for various supported languages, with or without BuildContext.

Features #

  • Translate strings with or without BuildContext
  • Custom Text widget that auto-translates
  • Localization delegate setup
  • Built-in support for RTL languages
  • Singleton-based utilities for managing languages
  • Supports 80+ languages out-of-the-box
  • Persisted language state with HydratedLanguageCubit
  • UI-only language selection with LanguageSelectionCubit
  • Searchable language picker with modal bottom sheet
  • Directionality support with AppLanguageBuilder
  • Clean architecture using BlocProvider and get_it
  • Simple initialization using initializeLanguageConfig()

Getting Started #

Installation #

Add this to your pubspec.yaml:

dependencies:
  language_translator: <latest_version>

Setup #

  1. Add your language JSON files to your assets:
flutter:
  assets:
    - assets/locale/en.json
    - assets/locale/bn.json
    # Add more as needed
  1. Register the localization delegate in your MaterialApp:
MaterialApp(
  localizationsDelegates: const [
    Translate.delegate,
    ...GlobalMaterialLocalizations.delegates,
    GlobalWidgetsLocalizations.delegate,
    GlobalCupertinoLocalizations.delegate,
  ],
  supportedLocales: AppLanguage.supportedLanguages,
  locale: AppLanguage.defaultLanguage,
  // ...
)

Initialize Language Config #

Use initializeLanguageConfig() at app startup to set default and supported languages:

initializeLanguageConfig(
  defaultLanguageCode: 'bn',
  supportedLocales: [Locale('en'), Locale('bn')],
);

Optional countryCode is also supported:

initializeLanguageConfig(
  defaultLanguageCode: 'en',
  countryCode: 'US',
);

Translate Text #

Using BuildContext:

Text('hello_key'.translateTxt(context));

Without BuildContext:

final String helloTxt = 'hello_key'.translateWithoutContext();

Using AppTranslatedTextView Widget:

AppTranslatedTextView(
  txt: 'hello_key',
  style: TextStyle(fontSize: 18),
)

Language State Management #

  • HydratedLanguageCubit: Persist language setting between app launches.
  • LanguageSelectionCubit: Allow temporary language preview/selection in UI.
  • Registered via get_it for DI.
  • Provided via BlocProvider for clean integration.
BlocProvider<HydratedLanguageCubit>(
  create: (_) => sl<HydratedLanguageCubit>(),
),

Directionality #

Use AppLanguageBuilder to wrap your app shell:

AppLanguageBuilder(
  child: MyMaterialApp(),
)

Searchable Language Picker #

Show a searchable modal bottom sheet:

showModalBottomSheet(
  context: context,
  builder: (_) => LanguagePickerBottomSheet(),
);

Toggle Between Locales #

Use the toggle(Locale a, Locale b) method from HydratedLanguageCubit:

context.read<HydratedLanguageCubit>().toggle(Locale('en'), Locale('bn'));

Supported Languages #

This package supports 80+ languages, including all officially supported Flutter localizations:

  • Afrikaans, Amharic, Arabic, Azerbaijani, Belarusian, Bengali, Bosnian, Catalan, Czech, Welsh, Danish, German, Greek, English (US/UK), Spanish, Estonian, Basque, Persian, Finnish, French, Galician, Gujarati, Hebrew, Hindi, Croatian, Hungarian, Armenian, Indonesian, Icelandic, Italian, Japanese, Georgian, Kazakh, Khmer, Kannada, Korean, Kyrgyz, Lao, Lithuanian, Latvian, Macedonian, Malayalam, Mongolian, Marathi, Malay, Burmese, Nepali, Dutch, Norwegian, Odia, Punjabi, Polish, Pashto, Portuguese (all variants), Romanian, Russian, Sindhi, Sinhala, Slovak, Slovenian, Albanian, Serbian, Swedish, Swahili, Tamil, Telugu, Thai, Turkmen, Turkish, Tatar, Ukrainian, Urdu, Uzbek, Vietnamese, Chinese (Simplified, China, Taiwan), Zulu

File Structure #

language_translator/
├── assets/
│   └── supported_locales.dart
├── config/
│   ├── bloc_provider/
│   │   └── language_setting_bloc_provider.dart
│   └── dependency_injection/
│       └── language_setting_get_it_register.dart
├── extension/
│   ├── locale_extensions.dart
│   ├── locale_list_sorting.dart
│   └── translate_string_extension.dart
├── language/
│   ├── app_language.dart
│   ├── app_language_config.dart
│   ├── i_language_config.dart
│   └── initialize_language_config.dart
├── utils/
│   ├── translate.dart
│   ├── app_local_delegate.dart
│   ├── util_load_local_file.dart
│   └── language_label_util.dart
├── view_models/
│   ├── hydrated_language_cubit/
│   │   └── hydrated_language_cubit.dart
│   └── language_selection_cubit/
│       └── language_selection_cubit.dart
├── views/
│   └── screens
│       ├── app_language_builder.dart
│   └── widgets/
│       ├── app_translated_text_view.dart
│       ├── dropdown_language_selector.dart
│       ├── modal_language_selector.dart
│       ├── searchable_language_picker.dart
│       └── toggle_language_button.dart

Contributing #

Feel free to open issues or submit PRs for improvements, additional language support, or feature suggestions.

License #

MIT

0
likes
150
points
598
downloads

Publisher

unverified uploader

Weekly Downloads

A lightweight Flutter package for easy multilingual support, providing string translation with or without context, RTL support, and a custom widget for translated text display.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

country_code_picker, dart_data_type_parser, flutter, flutter_bloc, flutter_localization, get_it_di_global_variable, hydrated_bloc, navigation_without_context, path_provider, provider

More

Packages that depend on language_translator