1
0
forked from baron/baron-sso

feat: i18n 개선 및 userfront 로그인/로케일 보완

This commit is contained in:
Lectom C Han
2026-02-12 21:25:26 +09:00
parent b6d3b69cda
commit dfa2fc2406
60 changed files with 5724 additions and 1734 deletions

View File

@@ -1,40 +1,18 @@
import 'dart:ui';
import 'package:easy_localization/easy_localization.dart';
import 'i18n_data.dart';
final _koreanPattern = RegExp(r'[가-힣]');
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;
String tr(String key, {String? fallback, Map<String, String>? params}) {
try {
if (fallback != null && _koreanPattern.hasMatch(fallback)) {
fallback = null;
}
final translated = key.tr(namedArgs: params);
if (translated == key && fallback != null && fallback.isNotEmpty) {
return fallback;
}
return translated;
} catch (_) {
return fallback ?? key;
}
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);
}