Spring Boot i18n

Diskutiere Spring Boot i18n im Allgemeines EE Bereich.
S

Schuriko

In einer Thymlef - Web - Anwendung habe ich in src\main\ressources die Dateien

  • messages.properties
  • messages_en.properties
  • messages_de.properties
Der Inhalt dieser Dateien ist identisch
Code:
app.name=Editor
app.verson=V1.0
Die Datei ist ISO-8859-1

Meine Thymlef sieht wie folgt aus:
Code:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <title th:text="${title == null} ? #{app.name} + ' ' + #{app.version} : #{app.name} + ' ' + #{app.version} + ' - ' + #{${title}}">Title</title>
    
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    
        <link rel="stylesheet"
            href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <link th:href="@{/css/style.css}" rel="stylesheet" media="screen" />
    
        <!-- JQuery  -->
        <script
            src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
        <!-- Bootstrap  -->
        <script
            src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
        <!-- JQuery UI  -->
        <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    
        <!-- Own Actions -->
        <script th:src="@{/js/actions.js}"></script>
    </head>

    <body>
        Editor
    </body>
</html>
Ausgeben tut er allerdings "??app.name_en_US??". Anscheinend habe ich irgendetwas übersehen, Wer kann mir sagen was?
 
J

JustNobody

Hast Du denn das auch konfiguriert? Auf die Schnelle habe ich das z.B. einmal unter https://im-coder.com/i18n-in-spring-boot-thymeleaf.html gefunden.

Ginge aber auch mit spring profiles und einer yaml Config (https://www.marcelustrojahn.com/2016/12/springboot-thymeleaf-i18n-internationalization/)

Die Links sind einfach nur erste Treffer und nicht unbedingt sehr gut. Aber mir geht es erst einmal um die Frage, ob Du da was gemacht hast oder nicht oder wie Du meinst, der Applikation gesagt zu haben, das zu nutzen....
 
T

thecain

Das ist Quatsch. Das sind offizielle i18n Standards bei Java. Wenn en_US nicht definiert ist, sollte en verwendet werden.
 
T

TM69

@JustNobody das ist völliger Nonsens. Es funktioniert auch ohne messageSource, wie @thecain schon feststellt. Die Funktion messageSource aus https://im-coder.com/i18n-in-spring-boot-thymeleaf.html wird nur benötigt, wenn du

  1. eine andere Codierung für deine Properties Dateien hast
  2. wenn deine Properties Dateien in einem anderen Ordner und nicht in dem Standardorder src/main/resources befinden.
  3. weitere (abweichende) Angabe treffen willst
Standardmäßig wird message_en_us.properties verwendet. Nur wenn diese Datei nicht existiert, wird message_en verwendet und wenn diese auch nicht existiert die default message.properties.

Was mir auf den ersten Blick auffällt, ist das du "app.verson" in deiner properties hast. Du aber in der HTML - Datei "app.version" verwendest.
 
J

JustNobody

@JustNobody das ist völliger Nonsens.
Ich finde es immer toll, wenn Leute so freundliche Aussagen machen ...

Es funktioniert auch ohne messageSource, wie @thecain schon feststellt.
... und dann nicht einmal Postings verstehen .... @thecain bezog sich zumindest nach meinem Verständnis nicht auf meinen Beitrag ....

Die Funktion messageSource aus https://im-coder.com/i18n-in-spring-boot-thymeleaf.html wird nur benötigt, wenn du

  1. eine andere Codierung für deine Properties Dateien hast
  2. wenn deine Properties Dateien in einem anderen Ordner und nicht in dem Standardorder src/main/resources befinden.
  3. weitere (abweichende) Angabe treffen willst
Standardmäßig wird message_en_us.properties verwendet. Nur wenn diese Datei nicht existiert, wird message_en verwendet und wenn diese auch nicht existiert die default message.properties.
Danke für Ergänzung. Aber Punkt 2 ist schlicht scheiße formuliert. Wenn Du hier schon so auftrittst, dann solltest Du korrekte Formulierungen verwenden. Wenn mein Build die Ressourcen nicht in src/main/resources behandelt, dann bringt es eben absolut nichts, wenn die Dateien in src/main/resources liegen!
Was mir auf den ersten Blick auffällt, ist das du "app.verson" in deiner properties hast. Du aber in der HTML - Datei "app.version" verwendest.
Was aber nicht die Kernursache sein kann, da ja app.name auch problematisch ist.

Und da eben genau dies schon nicht klappt, muss bei den von Dir genannten Punkten irgendwo der Wurm drin sein. Und schon wird aus meinem angeblichen Nonsense eine möglicherweise hilfreiche Information. Dies dürfte auf jeden Fall mehr helfen als nur der Typo in version...
 
mrBrown

mrBrown

Aber Punkt 2 ist schlicht scheiße formuliert. Wenn Du hier schon so auftrittst, dann solltest Du korrekte Formulierungen verwenden. Wenn mein Build die Ressourcen nicht in src/main/resources behandelt, dann bringt es eben absolut nichts, wenn die Dateien in src/main/resources liegen!
War eher drauf bezogen, dass die Datei direkt in den Resourcen liegen muss, und nicht in zB src/main/resources/i18n/ :)
 
J

JustNobody

War eher drauf bezogen, dass die Datei direkt in den Resourcen liegen muss, und nicht in zB src/main/resources/i18n/ :)
Ja, das war mir schon klar. Aber dennoch ist es nur dann wirklich korrekt, wenn angegeben wird, wo die Datei nach dem Buildvorgang liegen muss. Ohne Informationen zum verwendeten Build Tool ist die Aussage, dass etwas unter src/main/resources liegt, schlicht nicht aussagekräftig.

BTW @Schuriko:c\main\ressources ist ein Tippfehler oder ist der Ordner wirklich ressources was in Ordnung sein kann, so er als Ordner für Ressourcen vom Build Tool verwendet wird.
 
T

TM69

@mrBrown: korrekt.

Ich finde es immer toll, wenn Leute so freundliche Aussagen machen ...
Dieses bezog sich darauf, wie ein auch näher erklärt, darauf das man für i18n die Angaben nicht zwangsläufig benötigt, wie der Artikel versucht zu assoziieren.

... und dann nicht einmal Postings verstehen .... @thecain bezog sich zumindest nach meinem Verständnis nicht auf meinen Beitrag ....
Ich glaube schon das er sich auf deinen Beitrag bezog.

Danke für Ergänzung. Aber Punkt 2 ist schlicht scheiße formuliert. Wenn Du hier schon so auftrittst, dann solltest Du korrekte Formulierungen verwenden. Wenn mein Build die Ressourcen nicht in src/main/resources behandelt, dann bringt es eben absolut nichts, wenn die Dateien in src/main/resources liegen!
Was möchtest Du uns denn mitteilen????? O.O

Was aber nicht die Kernursache sein kann, da ja app.name auch problematisch ist.

Und da eben genau dies schon nicht klappt, muss bei den von Dir genannten Punkten irgendwo der Wurm drin sein. Und schon wird aus meinem angeblichen Nonsense eine möglicherweise hilfreiche Information. Dies dürfte auf jeden Fall mehr helfen als nur der Typo in version...
Nur weil DU dich angegriffen fühlst, was mich persönlich wenig tangiert, war dieses auch nur eine Feststellung, dass mein Typo nur eine kleine Korrektur war, und bewusst keine Lösung darstellt.

Ich sehe aber auch nicht wo deine 1. Posting eine Lösung darstellen sollte, wenn wir schon mal dabei sind.
 
Zuletzt bearbeitet von einem Moderator:
J

JustNobody

Es ist schön, das Du dies glaubst. Du darfst auch glauben, was immer Du möchtest. Nur bitte erläutere dann doch einmal, in wie weit "wenn en_US nicht definiert ist, sollte en verwendet werden." sich auf meinen Beitrag beziehen kann. Das wird Dir dann ja einfach fallen, dies zu begründen ...
 
T

thecain

@TM69 und @JustNobody ich bezog mich auf den Beitrag von @krgewb der jetzt weg ist. Wo etwas drin stand von wegen es gibt verschiedene Kürzel mit eng und deu oder so...

Jetzt ist er wegeditiert.
 
T

TM69

Es ist schön, das Du dies glaubst. Du darfst auch glauben, was immer Du möchtest. Nur bitte erläutere dann doch einmal, in wie weit "wenn en_US nicht definiert ist, sollte en verwendet werden." sich auf meinen Beitrag beziehen kann. Das wird Dir dann ja einfach fallen, dies zu begründen ...
Ich gehe jetzt mal davon aus das du mich meintest: Weil dieses so definiert ist, dass Standardmässig en_US verwendet wird, und wenn dieses nicht angegeben ist halt en, wie oben schon erklärt.

Was ich nur nicht verstehe ist, wie du einen Bezug zwischen "wenn en_US nicht definiert ist, sollte en verwendet werden." und deinem 1. Posting herstellst?
 
J

JustNobody

Ich gehe jetzt mal davon aus das du mich meintest: Weil dieses so definiert ist, dass Standardmässig en_US verwendet wird, und wenn dieses nicht angegeben ist halt en, wie oben schon erklärt.

Was ich nur nicht verstehe ist, wie du einen Bezug zwischen "wenn en_US nicht definiert ist, sollte en verwendet werden." und deinem 1. Posting herstellst?
Ok, das mit Dir wird mir jetzt schlicht zu blöd. Den Zusammenhang hast Du aufgebracht, denn Du hast ja auch behauptet: "Ich glaube schon das er sich auf deinen Beitrag bezog."

Und dann zeige ich auf, dass es Gründe gibt, die das Gegenteil zeigen und dann kommt das? Also Dir irgendwas zu entgegnen bringt irgendwie nichts, daher stelle ich das jetzt erst einmal ein...
 
T

TM69

Ok, das mit Dir wird mir jetzt schlicht zu blöd. Den Zusammenhang hast Du aufgebracht, denn Du hast ja auch behauptet: "Ich glaube schon das er sich auf deinen Beitrag bezog."

Und dann zeige ich auf, dass es Gründe gibt, die das Gegenteil zeigen und dann kommt das? Also Dir irgendwas zu entgegnen bringt irgendwie nichts, daher stelle ich das jetzt erst einmal ein...
Dann drücke dich klarer aus. Wenn du Fehler in meinen Aussagen siehst, dann fordere ich dich jetzt hier auf dieses zu Beweisen, andernfalls solltest du mal über deine Argumentation und Wissensstand nachdenken.
 
J

JustNobody

Was soll ich beweisen? Meine Aussage war eigentlich klar und deutlich. Wenn du zu blöd bist, dann ist es nicht mein Problem! Aber extra für Anfänger wie dich:
Du hast in deinem Punkt gesagt, dass die Datei in src/main/resources liegen soll. Und das ist natürlich nicht exakt und setzt eine build Konfiguration voraus, die die Sourcen von dort eben nimmt und behandelt.

Das muss aber nicht zwingend der Fall sein! Mach einfach ein IntelliJ Projekt und markiere andere Ordner als resource Ordner. Oder übersetze es mit ant ohne dass du da die Ressourcen mit betrachtest.

Ist nur wirklich mehr als trivial. Und ein Beweis kannst du dir selbst basteln: Bau dir ein kleines ant Filet zum bauen des Projektes und packt die Ressourcen einfach nicht an ... dann liegen sie in dem Ordner wie von dir gefordert und es reicht eben nicht.
 
T

TM69

Was soll ich beweisen? Meine Aussage war eigentlich klar und deutlich. Wenn du zu blöd bist, dann ist es nicht mein Problem! Aber extra für Anfänger wie dich:
Du hast in deinem Punkt gesagt, dass die Datei in src/main/resources liegen soll. Und das ist natürlich nicht exakt und setzt eine build Konfiguration voraus, die die Sourcen von dort eben nimmt und behandelt.

Das muss aber nicht zwingend der Fall sein! Mach einfach ein IntelliJ Projekt und markiere andere Ordner als resource Ordner. Oder übersetze es mit ant ohne dass du da die Ressourcen mit betrachtest.

Ist nur wirklich mehr als trivial. Und ein Beweis kannst du dir selbst basteln: Bau dir ein kleines ant Filet zum bauen des Projektes und packt die Ressourcen einfach nicht an ... dann liegen sie in dem Ordner wie von dir gefordert und es reicht eben nicht.
Nur weil DU kein deutsch verstehst, eindeutig fehlenden Wissensstand aufweist, und darauf auf beleidigende Art reagierst macht dich gerade einfach nur lächerlich.

Ich zitiere hier jetzt mal:
By default, a Spring Boot application will look for message files containing internationalization keys and values in the src/main/resources folder.
Ich habe nirgendwo geschrieben, dass, wie Du anscheinend versuchst, mir zu unterstellen "Das muss aber nicht zwingend der Fall sein..". Bereits in meinem ersten Beitrag habe ich dieses erwähnt.
 
Zuletzt bearbeitet:
J

JustNobody

Also wenn Du zitierst, dann gib doch bitte auch die Quelle an.

Ich nehme mal an, dass Du das Zitat von Baeldungs Guide hast und da geht es um ein reines maven Projekt. Dies ist aber hier im Thread nirgends vorgegeben gewesen. Ob hier also maven benutzt wird oder nicht ist also offen.

Du setzt also schlicht Dinge voraus, die nicht klar gegeben sind. Und ich habe nur auf diese Ungenauigkeit hingewiesen. Nicht mehr und nicht weniger.

Und die beleidigende Art ging doch von Dir aus. Also was willst Du eigentlich von mir? Hast Du nichts konstruktives beizutragen?
 
Thema: 

Spring Boot i18n

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben