Almacenamiento en caché de una acción en un sitio web multilingüe utilizando la API en caché de Play Framework

Para almacenar en caché las acciones por etiqueta e idioma durante un número determinado de segundos, escribí el siguiente método auxiliar (donde etiqueta, es el nombre que le doy a mi acción):

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)
}

Pero estoy experimentando algo extraño, cuando trato de almacenar un cachéAction para los años 60 y, mientras tanto, cambio de inglés a francés, por ejemplo, sigo obteniendo la versión en francés para los años 60 y luego cambia a inglés.

Después de investigar, encontré ese métodogetLanguage no se llama en cada llamada a esa acción como si la clave se evaluara solo después de que finaliza el período de almacenamiento en caché.

Esto no está bien, me gustaría estocacheResponseFor para ser llamado cada vez que solicito mi página, el idioma se evalúa usandogetLanguage y obtengo la versión en caché correcta, es decir, debería terminar con 2 acciones en caché (una por idioma).

¿Me estoy perdiendo de algo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta