Wie kann ich HTML-Markup aus meinen Eigenschaftendateien umgestalten?

8

Ich habe kürzlich eine internationalisierte und textlastige Struts 1.1-Webanwendung geerbt. Viele der JSP-Dateien sehen wie folgt aus:

%Vor%

und die Eigenschaftendateien sehen wie folgt aus:

%Vor%

mit den entsprechenden Übersetzungen in N anderen Sprachen (messages_fr.properties, etc).

Probleme:

  1. DRY-Verstoß - Ich habe N-Verweise auf meine Struts-Aktions-URLs statt auf 1, wodurch Refactoring-Aktions-URLs fehleranfällig werden.
  2. Gemischte Probleme - Das Markup meiner Anwendung besteht jetzt aus mehr als nur meinen JSP-Dateien, was es einem Webspezialisten erschwert, das Markup zu optimieren (mit CSS usw.).
  3. Post-translation-Markup - Immer wenn ich neu übersetzten Text erhalte, muss ich entscheiden, was mit dem <a>...</a> Markup umgeben werden soll. Einfach für Englisch, aber weniger für fremde Sprachen.

Ich habe überlegt, Platzhalter in die Nachrichtendatei einzufügen, wie zum Beispiel:

%Vor%

aber dann müssten die Worte "Adresse" und "Kontaktinformationen" irgendwie lokalisiert, mit Markup umwickelt und an mein Nachrichten-Tag übergeben werden - und ich sehe keinen einfachen Weg, dies zu tun.

Was kann ich tun, um dies zu verbessern?

    
Brian Laframboise 16.08.2008, 16:42
quelle

4 Antworten

2
___ qstntxt ___

Ich habe kürzlich eine internationalisierte und textlastige Struts 1.1-Webanwendung geerbt. Viele der JSP-Dateien sehen wie folgt aus:

%Vor%

und die Eigenschaftendateien sehen wie folgt aus:

%Vor%

mit den entsprechenden Übersetzungen in N anderen Sprachen (messages_fr.properties, etc).

Probleme:

  1. DRY-Verstoß - Ich habe N-Verweise auf meine Struts-Aktions-URLs statt auf 1, wodurch Refactoring-Aktions-URLs fehleranfällig werden.
  2. Gemischte Probleme - Das Markup meiner Anwendung besteht jetzt aus mehr als nur meinen JSP-Dateien, was es einem Webspezialisten erschwert, das Markup zu optimieren (mit CSS usw.).
  3. Post-translation-Markup - Immer wenn ich neu übersetzten Text erhalte, muss ich entscheiden, was mit dem %code% Markup umgeben werden soll. Einfach für Englisch, aber weniger für fremde Sprachen.

Ich habe überlegt, Platzhalter in die Nachrichtendatei einzufügen, wie zum Beispiel:

%Vor%

aber dann müssten die Worte "Adresse" und "Kontaktinformationen" irgendwie lokalisiert, mit Markup umwickelt und an mein Nachrichten-Tag übergeben werden - und ich sehe keinen einfachen Weg, dies zu tun.

Was kann ich tun, um dies zu verbessern?

    
___ answer13239 ___

Vielleicht:

%Vor%     
___ qstnhdr ___ Wie kann ich HTML-Markup aus meinen Eigenschaftendateien umgestalten? ___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123jsp ___ JSP (JavaServer Pages) ist eine Java-basierte Ansichtstechnologie, die auf dem Server ausgeführt wird, mit der Sie Text in (clientseitige Sprachen wie HTML, CSS, JavaScript usw.) schreiben und mit Backend-Java-Code interagieren können. ___ answer13250 ___

Ein Ansatz, der Ihnen in den Sinn kommt, ist, dass Sie die übersetzten Ersetzungsparameter, d. h. "Adresse" und "Kontaktinformationen", in einer separaten Eigenschaftendatei speichern können, eine pro Gebietsschema. Lassen Sie dann Ihre Action-Klasse (oder wahrscheinlich eine Hilfsklasse) die Werte aus dem richtigen ResourceBundle für das aktuelle Gebietsschema nachschlagen und übergeben Sie sie an das Nachrichten-Tag.

    
___ answer13359 ___
  

Die Message Message Tag API ermöglicht   nur 5 parametrische Argumente

Ah! Ich mache meine völlige Unkenntnis der Struts API verantwortlich.

Um das Handbuch zu zitieren:

  

Einige der Funktionen in dieser Taglib   sind auch im JavaServer verfügbar   Seiten Standard-Tag-Bibliothek (JSTL). Das   Struts Team fördert den Einsatz der   Standard-Tags über die Struts-spezifischen   Tags, wenn möglich.

Sie könnten das wahrscheinlich mit der Csylcha Taglib machen.

%Vor%

Der Nachteil ist, dass dies kein gültiges XML ist, und das Ziehen der Werte zu Variablen beinhaltet mehr Indirection, Lookups und Ausführlichkeit. Dies ist keine gute Lösung.

Ich kenne Struts nicht, aber wenn es etwas wie JavaServer Faces (der selbe Architekt) ist, dann gibt es wahrscheinlich Unterstützung für das Konfigurieren eines Ersatzsteuerelements. Ich würde entweder das vorhandene Steuerelement durch ein flexibleres ersetzen oder ein neues hinzufügen.

  

Immer wenn ich neu übersetzt bekomme   Text, ich muss entscheiden, was zu umgeben ist   mit dem %code% Markup.

Sie sollten dies auf keinen Fall tun und ich sehe dies als einen Fehler in Ihrem Übersetzungsprozess (Ich bin ein Ex-Lokalisierungsingenieur und ein ehemaliger Entwickler von Lokalisierungstools). Die Zeichen %code% sollten in den Dateien enthalten sein, die an die Übersetzer gesendet werden. Die Lokalisierungsrichtlinien sollten den Kontext der Zeichenfolge und die Bedeutung von Variablen erläutern.

Sie können die Eigenschaftenpakete bei der Rückgabe programmgesteuert validieren. String-spezifische Regex können den Trick machen. Es liegt nicht außerhalb der Möglichkeiten, dass "Adresse" und "Kontaktinformationen" während der Übersetzung die Reihenfolge wechseln.

Die einfachste Lösung besteht darin, die zu rendernden Nachrichten neu zu gestalten:

%Vor%

Ich akzeptiere, dass dies in keinem Fall eine Lösung sein kann und dass Ihr UI-Designer Zähne spuckt.

    
___ antwort13381 ___
  

Vermeiden Sie es, Links innerhalb von long zu erstellen   Textblöcke. Bevorzugen Sie kürzeren Text   das kann als logisch abgeschlossen wirken   und unabhängige Verbindung.

Im Allgemeinen wird es zu weniger Problemen führen. Manchmal müssen Sie Ihr UI-Design kompromittieren, um die Lokalisierung zu ermöglichen. Manchmal müssen Sie Ihren Lokalisierungsprozess kompromittieren, um die Benutzeroberfläche anzupassen.

Jedes Mal, wenn ein Entwickler Post-Translation-Strings manuell manipuliert, ist dies eine Quelle potenziell teurer Fehler. Ausschneiden / Einfügen oder Bearbeiten von Zeichenfolgen kann zu Zeichenfehlern, fehlplatzierten Zeichenfolgen usw. führen. Ein Übersetzungsfehler erfordert die Teilnahme von externen Parteien, um Fehler zu beheben, die mit Kosten verbunden sind und Zeit benötigen.

Wenn man darüber nachdenkt, ist etwas weniger hässlich:

%Vor%

... aber ich bin kein UI-Designer.

    
___ tag123struts ___ Das Apache Struts-Webframework ist eine kostenlose Open-Source-Lösung zum Erstellen von Java-Webanwendungen. ___ tag123internationalisierung ___ Internationalisierung (i18n: repräsentiert "internationalisierung" als "ich", gefolgt von 18 weiteren Buchstaben, gefolgt von "n") ist der Prozess der Planung und Implementierung von Produkten und Dienstleistungen so dass sie leicht an bestimmte lokale Sprachen und Kulturen angepasst werden können, ein Prozess namens Lokalisierung. Der Internationalisierungsprozess wird manchmal als Übersetzungs- oder Lokalisierungsaktivierung bezeichnet. ___
McDowell 16.08.2008, 21:59
quelle
1

Ein Ansatz, der Ihnen in den Sinn kommt, ist, dass Sie die übersetzten Ersetzungsparameter, d. h. "Adresse" und "Kontaktinformationen", in einer separaten Eigenschaftendatei speichern können, eine pro Gebietsschema. Lassen Sie dann Ihre Action-Klasse (oder wahrscheinlich eine Hilfsklasse) die Werte aus dem richtigen ResourceBundle für das aktuelle Gebietsschema nachschlagen und übergeben Sie sie an das Nachrichten-Tag.

    
John Topley 16.08.2008 17:40
quelle
0

Vielleicht:

%Vor%     
McDowell 16.08.2008 16:55
quelle
0
  

Die Message Message Tag API ermöglicht   nur 5 parametrische Argumente

Ah! Ich mache meine völlige Unkenntnis der Struts API verantwortlich.

Um das Handbuch zu zitieren:

  

Einige der Funktionen in dieser Taglib   sind auch im JavaServer verfügbar   Seiten Standard-Tag-Bibliothek (JSTL). Das   Struts Team fördert den Einsatz der   Standard-Tags über die Struts-spezifischen   Tags, wenn möglich.

Sie könnten das wahrscheinlich mit der Csylcha Taglib machen.

%Vor%

Der Nachteil ist, dass dies kein gültiges XML ist, und das Ziehen der Werte zu Variablen beinhaltet mehr Indirection, Lookups und Ausführlichkeit. Dies ist keine gute Lösung.

Ich kenne Struts nicht, aber wenn es etwas wie JavaServer Faces (der selbe Architekt) ist, dann gibt es wahrscheinlich Unterstützung für das Konfigurieren eines Ersatzsteuerelements. Ich würde entweder das vorhandene Steuerelement durch ein flexibleres ersetzen oder ein neues hinzufügen.

  

Immer wenn ich neu übersetzt bekomme   Text, ich muss entscheiden, was zu umgeben ist   mit dem <a>...</a> Markup.

Sie sollten dies auf keinen Fall tun und ich sehe dies als einen Fehler in Ihrem Übersetzungsprozess (Ich bin ein Ex-Lokalisierungsingenieur und ein ehemaliger Entwickler von Lokalisierungstools). Die Zeichen {0} sollten in den Dateien enthalten sein, die an die Übersetzer gesendet werden. Die Lokalisierungsrichtlinien sollten den Kontext der Zeichenfolge und die Bedeutung von Variablen erläutern.

Sie können die Eigenschaftenpakete bei der Rückgabe programmgesteuert validieren. String-spezifische Regex können den Trick machen. Es liegt nicht außerhalb der Möglichkeiten, dass "Adresse" und "Kontaktinformationen" während der Übersetzung die Reihenfolge wechseln.

Die einfachste Lösung besteht darin, die zu rendernden Nachrichten neu zu gestalten:

%Vor%

Ich akzeptiere, dass dies in keinem Fall eine Lösung sein kann und dass Ihr UI-Designer Zähne spuckt.

    
McDowell 16.08.2008 20:56
quelle