这是基于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.
 
 
 
 
 
 

67 lines
2.3 KiB

import 'package:core/utils/string.extensions.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;
}