lookupMessage method
Implementation
@override
String? lookupMessage(String? messageText, String? locale, String? name,
List<Object>? args, String? meaning,
{MessageIfAbsent? ifAbsent}) {
try {
var currentLocale = locale ?? Intl.getCurrentLocale();
var labels = SdkOtaData.getData(currentLocale);
var origArgs = SdkOtaData.getOrigArgs(name);
if (labels == null ||
!labels.containsKey(name) ||
origArgs == null ||
args == null) {
return _messageLookup.lookupMessage(
messageText, locale, name, args, meaning,
ifAbsent: ifAbsent);
}
var label = labels[name];
var labelArgs = label!.getArgs();
var isLabelArgsValid = _validateLabelArgs(origArgs, labelArgs);
if (!isLabelArgsValid) {
_logger.w(
"String '${label.key}' received Over-the-air for locale '$currentLocale' has unsupported placeholders.");
return _messageLookup.lookupMessage(
messageText, locale, name, args, meaning,
ifAbsent: ifAbsent);
}
var argsMap = _mapArgs(origArgs, args);
var translation = label.getTranslation(argsMap);
if (translation == null) {
_logger.w(
"String '${label.key}' received Over-the-air for locale '$currentLocale' has not-well formatted message.");
return _messageLookup.lookupMessage(
messageText, locale, name, args, meaning,
ifAbsent: ifAbsent);
}
return translation;
} catch (e) {
_logger.w('Failed to lookup message.', e);
return _messageLookup.lookupMessage(
messageText, locale, name, args, meaning,
ifAbsent: ifAbsent);
}
}