# i18n JSTL Verknüpfung mir der JAR. Wie?



## AyKay (11. Sep 2008)

Hallo zusammen

Thema Internationalisierung. (i18n)

im JSTL benutzt mein System:

```
<fmt:bundle basename="resources/bundles/i18n">
    <fmt:message var="thumbnailText" key="thumbnail.label" />
```
Den key 'thumbnail.label' finde ich in der Datei 'i18n_de.properties', die im Ordner 
'resources/bundles' der JAR Datei 'WEB-INF/lib/i18n.jar' steht.

Das funktioniert auch fein. Diese Software ist jetzt Basis für ein neues Projekt.
Um jetzt neue projektbezogenen Texte und Labels einzuführen, habe ich eine neue 
Datei 'ApplicationResources.properties' angelegt; jetzt im eigenen Projekt-Jar.

Wie kann ich JSTL jetzt sagen, daß da noch eine neue JAR Datei steht, deren Property
Dateien jetzt für Internationalisierung wichtig sind?

Einfaches Einbinden in WEB-INF/lib reicht jedenfalls nicht.

Bin für jeden Hinweis dankbar.

Gruß
André


----------



## HLX (11. Sep 2008)

Wenn du weisst, in welchem Bundle welche Message steht, erzeugst du die Nachricht immer im entsprechenden Bundle, so wie du es in deinem obigen Code schon getan hast (<fmt:bundle>).


----------



## AyKay (11. Sep 2008)

HLX hat gesagt.:
			
		

> Wenn du weisst, in welchem Bundle welche Message steht, erzeugst du die Nachricht immer im entsprechenden Bundle, so wie du es in deinem obigen Code schon getan hast (<fmt:bundle>).



Hi HLX

Danke für den Hinweis.

Tatsächlich habe ich das gemacht. Vielleicht nicht korrekt? Hier der Code:


```
<fmt:bundle basename="resources/bundles/i18n/i18n">
    <fmt:message var="titleText" key="publishLink.config.title" />
```

Mit einer Properties Datei in WEB-INF/lib/<PROJECT-NAME>.jar. Und zwar im Ordner /resources/bundles/i18n namens 'i18n.properties'.
Mit der entsprechenden Zeile:
publishLink.config.title=Just\ another\ title.

Die hieß bei einem anderen Versuch auch mal 'ApplicationResources.properties' (wie oben erwähnt).
Funzt alles nichts. Die Zuordnung JSTL-fmt:bundle zu <PROJECT-NAME>.jar fehlt mir. Die Zuordnung zu 'i18n.jar' scheint implizit da zu sein. Jedenfalls finde ich keine. Ein einfaches Kopieren der <PROJECT-NAME>.jar ins WEB-INF/lib reicht nicht aus.

Gruß
André

PS: Zur Not müssen wir die 'i18n.jar' anfassen und um einen Ordner mit den neuen Properties Dateien erweitern und bei jedem Build komplett neu erzeugen. Und uns bei einem Deploy einer neuen Version der Software, auf der wir aufsetzen, immer höllisch aufpassen, eine neue i18n.jar zu bekommen und vor dem Deploy anzupassen. Lebenslange Wartung wäre das. Nicht gut.


----------



## HLX (11. Sep 2008)

Das JAR ist völlig irrelevant. Die Dateien sollten auf jeden Fall unterschiedlich heißen, sonst wird die zuerst gefundene geladen. Schau nochmal ob du es folgendermaßen implementiert hast:

1) i18n.jar:
    resources/bundles/i18n/i18n.properties
    Inhalt:
    myFirstKey = bla

2)    test.jar:
    resources/bundles/i18n/appResources.properties
    Inhalt:
    mySecondKey = blubb

3) Beide JARs ins lib-Verzeichnis der Web-Anwendung.

4) JSP-Datei

```
<fmt:bundle basename="resources/bundles/i18n/i18n"> 
    <fmt:message var="first" key="myFirstKey" />
</fmt:bundle>
<fmt:bundle basename="resources/bundles/i18n/appResources"> 
    <fmt:message var="second" key="mySecondKey" />
</fmt:bundle>
```


----------



## AyKay (11. Sep 2008)

> Das JAR ist völlig irrelevant. 

Das wäre ja super!

>  Schau nochmal ob du es folgendermaßen implementiert hast:

Ja, genauso habe ich es gemacht. Also ganz konkret der letzte Stand ist:


```
<fmt:bundle basename="resources/i18n/bdficp">
		<fmt:message var="titleText" key="publishLink.config.title" />
```

Mit der Jar-Datei *WEB-INF/lib/<PROJEKT-NAME>.jar* und darin dem Ordner *resources/i18n* und der Datei *bdficp_DE_de.properties* mit der Zeile _publishLink.config.title=Just\ another\ title._. Entspricht, glaube ich, Deinem Muster oben. Funzt leider nicht.

Keine Ahnung...


----------



## HLX (11. Sep 2008)

AndreKuhn hat gesagt.:
			
		

> ...bdficp_DE_de.properties...



Da ist ein "DE" zuviel. 

entweder: bdficp_de.properties
oder: <fmt:bundle basename="resources/i18n/bdficp_DE">


----------



## AyKay (11. Sep 2008)

Habe mal das erste probiert, also bdficp_de.properties - funzt nicht.
Ich bekomme in meinem Dialog: ???publishLink.config.title??? angezeigt.

Beim zweiten das gleiche.

In einer Sache hast Du recht. Es muß heißen: de_DE, nicht DE_de.
Hier beschrieben: http://www.jsptutorial.org/content/internationalization#innerLink2

Tja, es läuft wohl auf das Ändern der i18n.jar hinaus. Blöd das.


----------



## HLX (11. Sep 2008)

Komisch, bin davon ausgegangen dass man sowas nicht braucht .Merkwürdig, das die JSTL da so ne Extrawurst fährt: de_DE... :autsch: 

Vielleicht besorgst du dir mal den Source-Code deiner JSTL-Implementierung und debuggst das Tag. Dann siehst du genau, wie der Zugriff auf die Properties erfolgt und findest vielleicht auch dein Problem.


----------



## AyKay (11. Sep 2008)

Ja, das wäre eine Möglichkeit. Danke für Deine Unterstützung! Wenn ich doch noch fündig werde, poste ich das hier.
bis die Tage
A.


----------



## HLX (12. Sep 2008)

Vielleicht in deinem zusammenhang interessant:
www.java-forum.org/de/topic74803_resource-bundles-punkt-getrennt.html


----------

