import 'dart:ui' as ui; import 'package:flutter/material.dart'; import 'package:aslan/chatvibe_core/constants/at_global_config.dart'; import 'package:aslan/chatvibe_data/sources/local/data_persistence.dart'; class LocalizationManager with ChangeNotifier { static const List _supportedLanguageCodes = [ 'en', 'ar', 'tr', 'bn', 'id', 'fil', 'ur', 'hi', ]; Locale? _locale; Locale? get locale => _locale; LocalizationManager() { init(); } init() { String language = DataPersistence.getLang(); if (language.isEmpty) { Locale systemLocale = ui.PlatformDispatcher.instance.locale; _locale = Locale(_normalizeLanguageCode(systemLocale.languageCode), ''); } else { _locale = Locale(_normalizeLanguageCode(language), ''); } if (_locale != null) { setLocale(_locale!); } } String _normalizeLanguageCode(String languageCode) { if (languageCode.startsWith("ar")) { return 'ar'; } if (languageCode == 'tl') { return 'fil'; } if (_supportedLanguageCodes.contains(languageCode)) { return languageCode; } return 'en'; } void setLocale(Locale locale) { _locale = locale; ATGlobalConfig.lang = locale.languageCode; DataPersistence.setLang(locale.languageCode); notifyListeners(); } }