docs: def replace_word_tokens(string, language):
      """
      Given a string and an ISO 639-2 language code,
      return the string with the words replaced with
      an operational equivalent.
      """
      words = mathwords.word_groups_for_language(language)
  
      # Replace operator words with numeric operators
      operators = words['binary_operators'].copy()
      if 'unary_operators' in words:
          operators.update(words['unary_operators'])
  
      for operator in list(operators.keys()):
          if operator in string:
              string = string.replace(operator, operators[operator])
  
      # Replace number words with numeric values
      numbers = words['numbers']
      for number in list(numbers.keys()):
          if number in string:
              string = string.replace(number, str(numbers[number]))
  
      # Replace scaling multipliers with numeric values
      scales = words['scales']
      end_index_characters = mathwords.BINARY_OPERATORS
      end_index_characters.add('(')
  
      word_matches = find_word_groups(string, list(scales.keys()))
  
      for match in word_matches:
          string = string.replace(match, '(' + match + ')')
  
      for scale in list(scales.keys()):
          for _ in range(0, string.count(scale)):
              start_index = string.find(scale) - 1
              end_index = len(string)
  
              while is_int(string[start_index - 1]) and start_index > 0:
                  start_index -= 1
  
              end_index = string.find(' ', start_index) + 1
              end_index = string.find(' ', end_index) + 1
  
              add = ' + '
              if string[end_index] in end_index_characters:
                  add = ''
  
              string = string[:start_index] + '(' + string[start_index:]
              string = string.replace(
                  scale, '* ' + str(scales[scale]) + ')' + add,
                  1
              )
  
      string = string.replace(') (', ') + (')
  
      return string