Add flutter_localizations + intl, 12 ARB files (en/ru/es/de/fr/it/pt/zh/ja/ko/ar/hi), replace all hardcoded Russian UI strings with AppLocalizations, detect system locale on first launch, localise bottom nav bar labels, document rule in CLAUDE.md. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
1.3 KiB
Dart
43 lines
1.3 KiB
Dart
import 'dart:ui' show PlatformDispatcher;
|
|
|
|
import 'package:firebase_core/firebase_core.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import 'app.dart';
|
|
import 'core/locale/language_provider.dart';
|
|
import 'core/storage/local_preferences.dart';
|
|
import 'core/storage/local_preferences_provider.dart';
|
|
import 'firebase_options.dart';
|
|
|
|
void main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
await Firebase.initializeApp(
|
|
options: DefaultFirebaseOptions.currentPlatform,
|
|
);
|
|
|
|
final sharedPreferences = await SharedPreferences.getInstance();
|
|
|
|
// Detect system language on first launch.
|
|
const supportedLanguageCodes = {
|
|
'en', 'ru', 'es', 'de', 'fr', 'it', 'pt', 'zh', 'ja', 'ko', 'ar', 'hi',
|
|
};
|
|
final systemLanguageCode = PlatformDispatcher.instance.locale.languageCode;
|
|
final initialLanguage = supportedLanguageCodes.contains(systemLanguageCode)
|
|
? systemLanguageCode
|
|
: 'en';
|
|
|
|
runApp(
|
|
ProviderScope(
|
|
overrides: [
|
|
localPreferencesProvider.overrideWithValue(
|
|
LocalPreferences(sharedPreferences),
|
|
),
|
|
languageProvider.overrideWith((ref) => initialLanguage),
|
|
],
|
|
child: const App(),
|
|
),
|
|
);
|
|
}
|