2011-01-27 15 views
5

Sto provando a localizzare le immagini in JSF e voglio che l'utente sia in grado di impostare le loro impostazioni internazionali sul mio sito. Questa che sto facendo da una chiamata alImmagine i18n in JSF2

FacesContext.getCurrentInstance().getViewRoot().setLocale(_locale); 

che funziona alla grande, con una sola eccezione:

<h:graphicImage library="images" name="pic.gif" /> 

utilizza il Accept-Language inviato nella richiesta del browser per stabilire quali impostazioni internazionali da utilizzare. Posso lavorare intorno a questo inserendo una stringa locale in ogni file .properties e fa riferimento a immagini da

<h:graphicImage library="#{resource.locale}/images" name="pic.gif" /> 

ma poi non c'è ripiego per le singole immagini, in modo da avere una copia di ogni immagine, sia che si tratti è diverso o no, nella directory di ogni locale. Questo è piuttosto complicato, dato che io supporto 9 locali e probabilmente più in futuro. Qualsiasi consiglio sarebbe molto apprezzato.

+0

Attualmente sto esaminando "decorare" ViewHandler per sovrascrivere il metodo [locale Calcolo locale (FacesContext locale)] utilizzando la classe ViewHandlerWrapper. Sembra una soluzione molto promettente, si aggiornerà quando l'ho fatto – theFunkyEngineer

+0

Ignorare ViewHandler ha funzionato per ottenere le impostazioni internazionali dalla posizione corretta, tuttavia, il fallback delle immagini è ancora un problema - utilizzerà una libreria diversa per immagini non localizzate. Pubblicherà la configurazione completa al termine dell'implementazione. – theFunkyEngineer

+0

Vedi la mia osservazione al BalusC di seguito. – rapt

risposta

2

Interessante. Tuttavia, non esiste alcun supporto integrato per questo, non da JSF né dal resto di Java EE. La cosa migliore è quella di creare un Servlet, che conosce il locale fallback e quindi fondamentalmente fa il seguente test:

if (getServletContext().getResource(request.getPathInfo()) == null) { 
    // Display fallback image instead. 
} 

Si potrebbe eventualmente fare questo da un componente JSF personalizzato che fa lo stesso controllo.

+0

BalusC è in effetti il ​​JSF Grand Master, ma in JSF 2 c'è davvero un bel supporto integrato. Leggete la serie in 3 parti: http://technology-for-human.blogspot.com/2010/10 /jsf-20-new-featuers-part-1-of-3.html http://technology-for-human.blogspot.com/2010/10/jsf-20-new-features-part-2-of- 3.html http://technology-for-human.blogspot.com/2010/10/jsf-20-new-features-part-3-of-3.html .... in particolare articolo numero 2. – rapt

+0

@rapt : Si prega di rileggere la domanda. OP lo sa già. Non è proprio adatto al requisito particolare dell'OP. – BalusC

+0

Non penso che OP ne sia a conoscenza. Sta provando a prefissare il percorso dell'immagine con una stringa che corrisponderà alla cartella dell'immagine localizzata. Tuttavia nell'articolo lo fanno senza prefisso. Il framework lo fa automaticamente. Fornisce anche il fall-back automatico a una lingua predefinita. – rapt