2011-01-27 16 views
5

Görüntüleri JSF'de yerelleştirmeye çalışıyorum ve kullanıcının kendi yerel ayarını siteme ayarlayabilmesini istiyorum. Bu benim bir istisna dışında,Resim I18n, JSF2

harika çalışıyor
FacesContext.getCurrentInstance().getViewRoot().setLocale(_locale); 

çağrısıyla yapıyorum:

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

kullanılacak yereli belirlemek için tarayıcının isteğinde gönderilen Accept-Language kullanır. Ben

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

tarafından görüntüleri her .properties dosyasında bir yerel dize yerleştirerek ve başvurarak bu geçici bir çözüm ama sonra tek tek görüntüler için hiçbir geri düşmeyi yoktur, bu yüzden, her görüntünün bir kopyasına sahip olabilir bunun olmadığını her yerel ayar dizininde farklı ya da değil. Bu 9 yerel ve muhtemelen daha fazla gelecekte desteklediğim için oldukça zahmetli. Herhangi bir tavsiye çok takdir edilecektir.

+0

Şu anda ViewHandlerWrapper sınıfını kullanarak [public Locale calculateLocale (FacesContext context)] yöntemini geçersiz kılmak için "decorating" ViewHandler içine bakıyorum. Bu çok umut verici bir çözüm gibi görünüyor, ben – theFunkyEngineer

+0

Overriding ViewHandler yaptığım zaman güncelleme doğru yerel yerden almak için çalıştı, ancak, görüntü geri dönüş hala bir sorun - olmayan yerelleştirilmiş görüntüler için farklı bir kütüphane kullanıyor olacak. Uygulama bittiğinde tam yapılandırmayı gönderir. – theFunkyEngineer

+0

Aşağıdaki BalusC'ye dikkatimi çek. – rapt

cevap

2

İlginç bir sorun. Bununla birlikte, JSF tarafından ya da Java EE'nin kalıntısı tarafından değil, bunun için yerleşik bir destek yoktur. Yapabileceğiniz en iyi şey geri dönüş yerel bilen bir Servlet oluşturmaktır ve bu nedenle temelde aşağıdaki testi yapar: Sonunda aynı kontrol yapan özel bir MTU bileşeni tarafından bu yapabileceğini

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

.

+0

BalusC gerçekten JSF Grand Master'tır, ancak JSF 2'de bunun için çok güzel bir yerleşik destek bulunmaktadır. Lütfen 3 bölümlük diziyi okuyun: 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 .... özellikle makale sayısı 2. – rapt

+0

@rapt : Lütfen soruyu tekrar okuyun. OP zaten bunun farkında. OP'nin özel gereksinimi için yeterince uygun değil. – BalusC

+0

OP'nin bunun farkında olduğunu sanmıyorum. Görüntü yolunu yerelleştirilmiş görüntü klasörüne karşılık gelecek bir dizeyle öneklemeye çalışıyor. Ancak makalede öneklemeden yaparlar. Çerçeve otomatik olarak yapar. Ayrıca varsayılan bir dile otomatik geri dönüş sağlar. – rapt