Armazenando em cache uma ação em um site multilíngue usando a API em cache do Play Framework

Para armazenar em cache ações por rótulo e idioma por um determinado número de segundos, escrevi o seguinte método auxiliar (em que rótulo, é o nome que dou à minha ação):

def cacheResponseFor(label: String, duration: Int)(action: EssentialAction) = { 
   Cached({r: RequestHeader => (label + getLanguage(r))}, duration){ action }
}

def getLanguage(request: RequestHeader): String = {
   request.cookies
     .get(helpers.SessionHelpers.LANGUAGE_SESSION)
        .map(_.value)
          .getOrElse(helpers.LanguageHelpers.FRENCH)
}

Mas estou experimentando algo estranho, quando tento armazenar em cache umAction para os anos 60 e, enquanto isso, mudar para o francês do inglês, por exemplo, eu continuo recebendo a versão em francês dos anos 60 e depois muda para o inglês.

Depois de investigar, achei esse métodogetLanguage não é chamado em cada chamada para essa ação como se a chave fosse avaliada somente após o término do período de armazenamento em cache.

Isso não está certo, eu gostaria dissocacheResponseFor ser chamado toda vez que solicito minha página, o idioma é avaliado usandogetLanguage e recebo a versão em cache correta, ou seja, devo terminar com duas ações em cache (uma por idioma).

Estou esquecendo de algo?

questionAnswers(2)

yourAnswerToTheQuestion