A runtime library that supports code generated by monolith_localization at runtime. It dynamically loads localization resources managed per module in Flutter applications and provides type-safe access.

Features

  • Dynamic Locale Switching: Language change support during application runtime
  • Memory Optimization: Load only necessary language resources
  • Flutter Integration: Transparent integration with standard internationalization features
  • Type-safe Access: Runtime type checking through generated Mixin classes
  • Customizable Text Optimization: Support for project-specific text formatting processes

Getting started

This package works in conjunction with code generated by monolith_localization. Usually, developers do not directly operate this package.

# pubspec.yaml
dependencies:
  monolith_localization_runtime: ^1.0.0

Usage

Integration with Generated Code Example:

// app_user_package
import 'package:path/to/gen/strings.dart';

final class _Strings with L10nStringsMixin {
  // Automatic implementation by runtime
}

@internal
final strings = _Strings();

class UserValidator {
  String? validateEmail(String? email) {
    if (email == null || email.isEmpty) {
      return strings.validation_email_required;
    }

    if (!_isValidEmail(email)) {
      return strings.validation_email_invalid;
    }

    return null;
  }
}

Application Integration:

// app/lib/main.dart
import 'package:flutter/material.dart';
import 'package:monolith_localization_runtime/monolith_localization_runtime.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: L10nHelper.localizationsDelegates,
      supportedLocales: L10nHelper.supportedLocales,
      home: HomePage(),
    );
  }
}

Customizing Text Formatting Process:

import 'package:monolith_localization_runtime/monolith_localization_runtime.dart';

Future<void> main() async {
  // Localized text optimization settings
  LocalizeStringDelegate.format = _formatStringResource;
}

/// Project-specific text formatting process
String _formatStringResource({
    required String id,
    required List<String> arguments,
    required String originalFormattedText,
}) {
  // Example of newline character conversion
  return originalFormattedText.replaceAll(r'\n', '\n');
}

Additional information

This library ensures that module-level localization code generated by monolith_localization operates efficiently in actual Flutter applications.