Files
fcs/lib/localization/app_translations.dart

43 lines
1.2 KiB
Dart
Raw Normal View History

2020-09-04 15:30:10 +06:30
import 'dart:async';
import 'dart:convert';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
class AppTranslations {
2021-09-10 12:02:08 +06:30
late Locale locale;
static late Map<dynamic, dynamic> _localisedValues;
2020-09-04 15:30:10 +06:30
AppTranslations(Locale locale) {
this.locale = locale;
}
2021-09-10 12:02:08 +06:30
static AppTranslations? of(BuildContext context) {
2020-09-04 15:30:10 +06:30
return Localizations.of<AppTranslations>(context, AppTranslations);
}
static Future<AppTranslations> load(Locale locale) async {
AppTranslations appTranslations = AppTranslations(locale);
String jsonContent = await rootBundle
.loadString("assets/local/localization_${locale.languageCode}.json");
_localisedValues = json.decode(jsonContent);
return appTranslations;
}
get currentLanguage => locale.languageCode;
2021-09-10 12:02:08 +06:30
String text(String key, {List<String>? translationVariables}) {
2022-04-05 11:25:37 +06:30
String? value = _localisedValues[key];
2020-09-04 15:30:10 +06:30
if (value == null) {
return "$key not found";
}
if (translationVariables != null) {
translationVariables.asMap().forEach((i, s) {
2022-04-05 11:25:37 +06:30
value = value!.replaceAll("{$i}", s);
2020-09-04 15:30:10 +06:30
});
}
2022-04-05 11:25:37 +06:30
return value!;
2020-09-04 15:30:10 +06:30
}
}