initTranslation<T extends MlTranslation> static method
Implementation
static (T, TranslationLanguage?) initTranslation<T extends MlTranslation>(
T translation,
) {
if (box == null || !box!.isOpen) {
throw Exception('''
Translator has not been initialized.
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Translator.init();
runApp(const MyApp());
}
''');
}
final source = (box!.get(kSource) as Map?)?.cast<String, dynamic>();
// Save translation source to db if it is first run.
if (source == null) {
box!
..put(kSource, translation.toJson())
..put(kSourceLanguage, translation.sourceLanguage);
return (translation, null);
}
MlTranslation? sourceTranslation;
try {
sourceTranslation = translation.fromJson(source);
} catch (_) {
sourceTranslation = null;
}
// Translation source has been changed
if (sourceTranslation != translation) {
// Target language name
final targetLanguage = box!.get(kTargetLanguage) as String?;
box!
..put(kSource, translation.toJson())
..put(kSourceLanguage, translation.sourceLanguage);
if (targetLanguage != null) {
TranslationLanguage? translationLanguage;
try {
translationLanguage = TranslationLanguage.fromJson(targetLanguage);
} catch (_) {
translationLanguage = null;
}
return (translation, translationLanguage);
}
} else {
final target = (box!.get(kTarget) as Map?)?.cast<String, dynamic>();
if (target != null) {
final targetTranslation = translation.fromJson(target) as T;
return (targetTranslation, null);
}
}
return (translation, null);
}