localizationService property
String
localizationService
getter/setter pair
Implementation
String localizationService = '''
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../app/data/local/my_shared_pref.dart';
import 'ar_Ar_translation.dart';
import 'ar_En_translation.dart';
class LocalizationService extends Translations {
// prevent creating instance
LocalizationService._();
static LocalizationService? _instance;
static LocalizationService getInstance() {
_instance ??= LocalizationService._();
return _instance!;
}
// default language
// todo change the default language
static Locale defaultLanguage = supportedLanguages['en']!;
// supported languages
static Map<String, Locale> supportedLanguages = {
'en': const Locale('en', 'US'),
'ar': const Locale('ar', 'AR'),
};
// supported languages fonts family (must be in assets & pubspec yaml) or you can use google fonts
static Map<String, TextStyle> supportedLanguagesFontsFamilies = {
// todo add your English font families (add to assets/fonts, pubspec and name it here) default is poppins for english and cairo for arabic
'en': const TextStyle(fontFamily: 'Poppins'),
'ar': const TextStyle(fontFamily: 'Cairo'),
};
@override
Map<String, Map<String, String>> get keys => {
'en_US': enUs,
'ar_AR': arAR,
};
/// check if the language is supported
static isLanguageSupported(String languageCode) =>
supportedLanguages.keys.contains(languageCode);
/// update app language by code language for example (en,ar..etc)
static updateLanguage(String languageCode) async {
// check if the language is supported
if (!isLanguageSupported(languageCode)) return;
// update current language in shared pref
await MySharedPref.setCurrentLanguage(languageCode);
if (!Get.testMode) {
Get.updateLocale(supportedLanguages[languageCode]!);
}
}
/// check if the language is english
static bool isItEnglish() =>
MySharedPref.getCurrentLocal().languageCode.toLowerCase().contains('en');
/// get current locale
static Locale getCurrentLocal() => MySharedPref.getCurrentLocal();
}
''';