这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

80 lines
2.6 KiB

import 'package:core/utils/string.extensions.dart';
import 'package:get/get.dart';
import '../proxy/volo/abp/asp-net-core/mvc/index.dart';
class LocalizationUtils {
static String Function(String resourceName,
String key,
String? defaultValue) createLocalizer(ApplicationLocalizationConfigurationDto? localization) {
return (String resourceName, String key, String? defaultValue) {
if (localization == null || resourceName == '_') return key;
var resource = localization.values?[resourceName];
if (resource == null) return defaultValue ?? key;
return resource[key] ?? defaultValue ?? key;
};
}
static String Function(List<String> resourceNames, List<String> keys, String defaultValue) createLocalizerWithFallback(
ApplicationLocalizationConfigurationDto localization) {
var findLocalization = createLocalizationFinder(localization);
return (List<String> resourceNames, List<String> keys, String defaultValue) {
var localizedText = findLocalization(resourceNames, keys);
return localizedText.localized ?? defaultValue;
};
}
static LocalizedText Function(List<String> resourceNames, List<String> keys) createLocalizationFinder(
ApplicationLocalizationConfigurationDto localization) {
var localize = createLocalizer(localization);
return (List<String> resourceNames, List<String> keys) {
if (localization.defaultResourceName.isNullOrWhiteSpace() == false &&
resourceNames.contains(localization.defaultResourceName!)) {
resourceNames.add(localization.defaultResourceName!);
}
var resourceCount = resourceNames.length;
var keyCount = keys.length;
for (var i = 0; i < resourceCount; i++) {
var resourceName = resourceNames[i];
for (var j = 0; j < keyCount; j++) {
var key = keys[j];
var localized = localize(resourceName, key, null);
if (!localized.isNullOrWhiteSpace()) {
return LocalizedText(
resourceName: resourceName,
key: key,
localized: localized,
);
}
}
}
return LocalizedText();
};
}
}
class LocalizedText {
LocalizedText({
this.resourceName,
this.key,
this.localized,
});
String? resourceName;
String? key;
String? localized;
}
extension AbpTranslationsExtensions on String {
String trFormat([Map<String, String> params = const {}]) {
var trans = tr;
if (params.isNotEmpty) {
params.forEach((key, value) {
trans = trans.replaceAll('{$key}', value);
});
}
return trans;
}
}