Транслитер, где ошибка?
В срезах. Обе границы среза должны указываться абсолютно, а у вас индекс сбрасывается в 1 каждый раз. Такой изнаночный срез будет возвращать пустую строку.
"abcdef"[3:2] -> ""
Один вопрос почему вам нежен такой сложный алгоритм транслейтера если можно зделать проще?:def transliter(string):
  l_dict = {'a':'а','b':'б','v':'в','g':'г','d':'д','e':'e',
      'zh':'ж','z':'з','i':'и','y':'й','k':'к','l':'л','m':'м','n':'н',
      'o':'о','p':'п','r':'р','s':'с','t':'т','u':'у','f':'ф','kh':'х',
      'ts':'ц','ch':'ч','sh':'ш','shch':'щ','ъ':'','ie':'ы','ь':'','ei':'э',
      'yu':'ю','ja':'я'}
  translit_string = []

  for char in string:
    translit_string.append(l_dict[char])
  return "".join(translit_string)
  
  
print(transliter("opa")