code: def check_i18n():
      
      while True:
          try:
              token_type, text, _, _, line = yield
          except GeneratorExit:
              return
  
          if text == "def" and token_type == tokenize.NAME:
              # explicitly ignore function definitions, as oslo defines these
              return
          if (token_type == tokenize.NAME and
                  text in ["_", "_LI", "_LW", "_LE", "_LC"]):
  
              while True:
                  token_type, text, start, _, _ = yield
                  if token_type != tokenize.NL:
                      break
              if token_type != tokenize.OP or text != "(":
                  continue  # not a localization call
  
              format_string = ''
              while True:
                  token_type, text, start, _, _ = yield
                  if token_type == tokenize.STRING:
                      format_string += eval(text)
                  elif token_type == tokenize.NL:
                      pass
                  else:
                      break
  
              if not format_string:
                  raise LocalizationError(
                      start, "H701: Empty localization string")
              if token_type != tokenize.OP:
                  raise LocalizationError(
                      start, "H701: Invalid localization call")
              if text != ")":
                  if text == "%":
                      raise LocalizationError(
                          start,
                          "H702: Formatting operation should be outside"
                          " of localization method call")
                  elif text == "+":
                      raise LocalizationError(
                          start,
                          "H702: Use bare string concatenation instead of +")
                  else:
                      raise LocalizationError(
                          start, "H702: Argument to _, _LI, _LW, _LC, or _LE "
                          "must be just a string")
  
              format_specs = FORMAT_RE.findall(format_string)
              positional_specs = [(key, spec) for key, spec in format_specs
                                  if not key and spec]
              # not spec means %%, key means %(smth)s
              if len(positional_specs) > 1:
                  raise LocalizationError(
                      start, "H703: Multiple positional placeholders")
docs: Generator that checks token stream for localization errors.
  
      Expects tokens to be ``send``ed one by one.
      Raises LocalizationError if some error is found.