      global _default
  
      # str() is allowing a bytestring message to remain bytestring on Python 2
      eol_message = message.replace(str('\r\n'), str('\n')).replace(str('\r'), str('\n'))
      t = getattr(_active, "value", None)
      if t is not None:
          result = getattr(t, translation_function)(eol_message)
      else:
          if _default is None:
              _default = translation(settings.LANGUAGE_CODE)
          result = getattr(_default, translation_function)(eol_message)
      if isinstance(message, SafeData):
 
</s> remove         if _default is None:
            _default = translation(settings.LANGUAGE_CODE)
        result = getattr(_default, translation_function)(eol_message)
 </s> add         _default = _default or translation(settings.LANGUAGE_CODE)
        translation_object = getattr(_active, "value", _default)

        result = getattr(translation_object, translation_function)(eol_message)

    if len(eol_message) == 0:
        # Returns an empty value of the corresponding type if an empty message
        # is given, instead of metadata, which is the default gettext behavior.
        result = type(message)("")
      global _default
  
      # str() is allowing a bytestring message to remain bytestring on Python 2
      eol_message = message.replace(str('\r\n'), str('\n')).replace(str('\r'), str('\n'))
    if len(eol_message) == 0:
        # Returns an empty value of the corresponding type if an empty message
        # is given, instead of metadata, which is the default gettext behavior.
        result = type(message)("")
    if len(eol_message) == 0:
        # Returns an empty value of the corresponding type if an empty message
        # is given, instead of metadata, which is the default gettext behavior.
        result = type(message)("")
    if len(eol_message) == 0:
        # Returns an empty value of the corresponding type if an empty message
        # is given, instead of metadata, which is the default gettext behavior.
        result = type(message)("")
      else:
          if _default is None:
              _default = translation(settings.LANGUAGE_CODE)
          result = getattr(_default, translation_function)(eol_message)
      if isinstance(message, SafeData):
keep keep keep keep replace replace replace keep keep keep keep keep
 Fixed #23196 -- Short-circuited empty string translation

Translating an empty string used to return the gettext catalog
metadata instead of the empty string.
Thanks Ned Batchelder for the suggestion, Tim Graham for the review
and Anton Berezin and Claude Paroz for contributions to the patch. 
django/utils/translation/trans_real.py