lookupMessage method

  1. @override
String? lookupMessage(
  1. String? messageText,
  2. String? locale,
  3. String? name,
  4. List<Object>? args,
  5. String? meaning, {
  6. MessageIfAbsent? ifAbsent,
})

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);
  }
}