internacionalización en JSF con entradas de ResourceBundle que se cargan desde la base de datos

Estoy trabajando en un proyecto Java EE6 usando JPA / EJB / JSF y estoy teniendo problemas para diseñar soporte de múltiples idiomas para entidades. Hay tres entidades relevantes:

Idioma (tiene id)
Competencia (tiene id)
Nombre de competencia (tiene referencia de competencia, referencia de idioma y una cadena)

Competencia tiene una referencia de uno a muchos a CompetenceName implementado con un Mapa, que contiene un objeto para cada Idioma que existe un nombre para una Competencia. Tenga en cuenta que se crean competenciasdinamicamente y sus nombres no pueden existir en un paquete de recursos.

Al enumerar las Competencias en una página web, quiero que se muestren con el idioma del usuario actualmente conectado, esto se almacena en un Bean administrado con alcance de sesión.

¿Hay alguna buena manera de lograr esto sin romper un buen diseño MVC? Mi primera idea fue obtener el bean de ámbito de sesión directamente de un método "getName" en la entidad Competence a través de FacesContext, y buscarlo en el mapa de CompetenceNames de la siguiente manera:

public class Competence
{
...
@MapKey(name="language")
@OneToMany(mappedBy="competence", cascade=CascadeType.ALL, orphanRemoval=true)
private Map<Language, CompetenceName> competenceNames;

public String getName(String controller){
    FacesContext context = FacesContext.getCurrentInstance();
    ELResolver resolver = context.getApplication().getELResolver();
    SessionController sc = (SessionController)resolver.getValue(context.getELContext(), null, "sessionController");
    Language language = sc.getLoggedInUser().getLanguage();
    if(competenceNames.get(language) != null)
        return competenceNames.get(language).getName();
    else
        return "resource missing";
}

Esta solución se siente extremadamente cruda ya que la entidad se basa en la capa Controlador y tiene que buscar un controlador de sesión cada vez que quiero su nombre. Una solución más compatible con MVC sería tomar un parámetro Language, pero esto significa que cada llamada de JSF tendrá que incluir el idioma obtenido del bean administrado con ámbito de sesión que tampoco parece una buena solución.

¿Alguien tiene alguna idea o patrones de diseño para este problema?

Respuestas a la pregunta(2)

Su respuesta a la pregunta