Hlavní menu
Nástroje
|
WebFav.I18n History
Hide minor edits - Show changes to markup
22 February 2007, 17:39
by Ľubomír Kováč -
Changed lines 41-48 from:
Když jen upravíte jazykové hlášky a nezměníte klíče, tak se bez restartu budou zobrazovat staré jazykové hlášky.
to:
Když jen upravíte jazykové hlášky a nezměníte klíče, tak se bez restartu budou zobrazovat staré jazykové hlášky.
Pozor! Nebezpečí!
Ve verzi 6.2.2 sem narazil na napříjemné chování. Když zadáte escape sekvenci zanku v UTF-8 a místo \uXXXX zadáte třeba \uXXX , tak se vám už po restartu servru nepodaří přihlásit se a dostat se do systému.
V adresáři WEB-INF/classes/ si ale můžete najít posledně upravovaný properties soubor přeložený do class a tam ho smazat. Se štěstím se to povede. Bohužel se může stát, že dojde k revertu databáze podle poslední exportované verze.
Další možnost je dostat se do OpenCMS přez plugin do Eclipse? LaughingPanda a tam dohledat chybu a opravit ji, nebo se nabourat přímo do databáze (to ale budete muset být už opravdu zoufalí).
17 December 2006, 13:08
by Ľubomír Kováč -
Changed lines 2-3 from:
Vytvoříme si nový modul?. Necháme si vygenerovat základní adresáře pro práci. Pracovat budeme v adresáři pages . Naše I18N? *.properties soubory budou uložené v adresáři classes/{jmeno-modulu}/ . Kde jmeno-modulu je adresářová struktúra odpovídající balíkům javovovských tříd podle zadaného názvu modulu např: cz.zcu.fav.kiv .
to:
Vytvoříme si nový modul?. Necháme si vygenerovat základní adresáře pro práci. Pracovat budeme v adresáři pages . Naše I18N? *.properties soubory budou uložené v adresáři classes/{jmeno-modulu}/ . Kde jmeno-modulu je adresářová struktúra odpovídající balíkům javovských tříd podle zadaného názvu modulu např: cz.zcu.fav.kiv .
17 December 2006, 13:06
by Ľubomír Kováč -
Changed lines 2-3 from:
Vytvoříme si nový modul?. Necháme si vygenerovat základní adresáře pro práce. Pracovat budeme v adresáři pages . Naše I18N? *.properties soubory budou uložené v adresáři classes/{jmeno-modulu}/ . Kde jmeno-modulu je adresářová struktúra odpovídající balíkům javovovských tříd podle zadaného názvu modulu např: cz.zcu.fav.kiv .
to:
Vytvoříme si nový modul?. Necháme si vygenerovat základní adresáře pro práci. Pracovat budeme v adresáři pages . Naše I18N? *.properties soubory budou uložené v adresáři classes/{jmeno-modulu}/ . Kde jmeno-modulu je adresářová struktúra odpovídající balíkům javovovských tříd podle zadaného názvu modulu např: cz.zcu.fav.kiv .
13 December 2006, 18:58
by Ľubomír Kováč -
Changed lines 39-40 from:
Po každé úpravě *.properties souborů je NUTNÉ restartovat server. Jinak se *.properties nepřeloží a zobrazí se 500, protože server vyhodil výjimku, že nezná nové klíče.
to:
Po každé úpravě *.properties souborů je NUTNÉ restartovat server. Jinak classloader nezná *.properties a zobrazí se 500, protože server vyhodil výjimku, že nezná nové klíče.
13 December 2006, 03:11
by Ľubomír Kováč -
Changed lines 27-35 from:
to:
Scriplet dáva více volnosti v tom jak zvolit zdroje. Je možné se napojit najednou na několik zdrojů a podobně. K tomu samému slouží i taglib JSTL. Následující funguje v JSP bez problémů, bohužel OpenCMS si s tím neumělo poradit a tak je to jenom přání, aby to fungovalo.
V obou následujích případech předpokladám, že už máme získaný řetězec locale .
- Použijeme
taglib fmt a to: <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %> . Přidáme do kontextu náš řetězec locale : pageContext.setAttribute("locale", locale); a můžeme definovat lokalizaci: <fmt:setLocale value="${locale}" /> . Teď už jenom definujeme zdroj <fmt:setBundle basename="cz.zcu.fav.kiv.TestBundle" /> a voláme naše lokalizované texty: <fmt:message key="test.value01" />
- Použijeme jinou verzi
fmt , která umožní použití direktív v definici locale a to <%@ taglib prefix="fmt_rt" uri="http://java.sun.com/jstl/fmt_rt" %> . Teď už můžeme použít: <fmt_rt:setLocale value="<%=locale%>" /> . Vše ostatní je stejné jako v předchozím bode.
Kdybychom chtěli definovat více basename tak můžeme použít ještě atribut var : <fmt:setBundle basename="cz.zcu.fav.kiv.TestBundle" var="test" /> a pak když hledáme hlášku, tak přídáme atribut: <fmt:message key="test.value01" bundle="${test}"/> .
13 December 2006, 02:26
by Ľubomír Kováč -
Changed line 19 from:
to:
Changed line 27 from:
to:
13 December 2006, 02:24
by Ľubomír Kováč -
Added lines 1-33:
Vytvoříme si nový modul?. Necháme si vygenerovat základní adresáře pro práce. Pracovat budeme v adresáři pages . Naše I18N? *.properties soubory budou uložené v adresáři classes/{jmeno-modulu}/ . Kde jmeno-modulu je adresářová struktúra odpovídající balíkům javovovských tříd podle zadaného názvu modulu např: cz.zcu.fav.kiv .
Dál se samožrejmě můžeme zanořovat a vytvářet pod-adresáře podle libosti a podle toho rozlišit co k čemu náleží.
- V
classes/{jmeno-modulu}/ vytvoříme
TestBundle.properties - defaultní jazyková mutace. Když není specifiková jazyková mutace, nebo hláška není nalezena v některé konkrétní jazykové mutace, nebo požadovaná jazyková mutace neexistuje, tak se použije tato jazyková verze.
TestBundle_de.properties - německá jazyková mutace
TestBundle_en.properties - anglická jazyková mutace
- V každém z vytvořených souborů si vytvoříme následující řádky
test.value01=*** , *** je text v dané jazykové mutaci (ahoj, Hallo, hello)
test.value02=*** , *** je text v dané jazykové mutaci (soused, Nachbar, neighbour)
Máme připravené lokalizované texte, které budeme zobrazovat podle lokalizace uživatelského prohlížeče.
V adresáři pages vytvoříme .jsp soubor. Máme několik možností jak zobrazit lokalizované texty:
- Scriplet
- JSTL
TODO
Scriplet
- Definujeme se nějakým způsobem lokalizaci, např.:
Locale locale = Locale.ENGLISH; nebo Locale locale = new Locale("cs"); nebo jiným způsobem, který nám vyhovuje.
- Nalezneme zdroj:
String bundle = jmeno-modulu + ".TestBundle";
- Spojíme se se zdrojem jazykových hlášek:
ResourceBundle testBundle = PropertyResourceBundle.getBundle( bundle, locale );
- Upravíme import:
<% page import="java.util.ResourceBundle, java.util.PropertyResourceBundle" %>
- Dál už voláme jazykové hlášky podle klíčů:
<%= testBundle.getString("test.value01") %>
JSTL
Chyby
Když zadáte špatně zdroj, tak se místo lokalizovaného textu zobrazí text: ???test.value01??? . Když však zadáte špatně klíč, tak server reaguje trošku radikálněji a to chybovou hláškou a chybou 500.
Důležité
Po každé úpravě *.properties souborů je NUTNÉ restartovat server. Jinak se *.properties nepřeloží a zobrazí se 500, protože server vyhodil výjimku, že nezná nové klíče.
Když jen upravíte jazykové hlášky a nezměníte klíče, tak se bez restartu budou zobrazovat staré jazykové hlášky.
|