forked from baron/baron-sso
37 lines
937 B
Dart
37 lines
937 B
Dart
import 'dart:ui';
|
|
|
|
import 'i18n_data.dart';
|
|
|
|
const _defaultLocale = 'ko';
|
|
const _supportedLocales = ['ko', 'en'];
|
|
|
|
String _resolveLocale() {
|
|
final locale = PlatformDispatcher.instance.locale;
|
|
final code = locale.languageCode.toLowerCase();
|
|
if (_supportedLocales.contains(code)) {
|
|
return code;
|
|
}
|
|
return _defaultLocale;
|
|
}
|
|
|
|
String _formatTemplate(String template, Map<String, String>? params) {
|
|
if (params == null || params.isEmpty) {
|
|
return template;
|
|
}
|
|
var result = template;
|
|
params.forEach((key, value) {
|
|
result = result.replaceAll('{{$key}}', value);
|
|
});
|
|
return result;
|
|
}
|
|
|
|
String tr(String key, {String? fallback, Map<String, String>? params}) {
|
|
final locale = _resolveLocale();
|
|
final map = locale == 'en' ? enStrings : koStrings;
|
|
final value = map[key];
|
|
final template = (value != null && value.isNotEmpty)
|
|
? value
|
|
: (fallback ?? key);
|
|
return _formatTemplate(template, params);
|
|
}
|