дело в том что локаль автоматически подставляется в контекст в момент выполнения мидлвари перед хендлером, а ты меняешь локаль не обновляя контекст, это работает только для следующего вызова мидлвари
в обход абослютно нормально будет если ты подставишь в контекст новое значение сам