In GWT lädt man i18n-Strings typischerweise über eine Schnittstelle wie diese:
public interface StatusMessage extends Messages {
String error(String username);
:
}
die dann die eigentlichen Zeichenketten aus einer StatusMessage.property Datei:
error=User: {0} does not have access to resource
Dies ist eine großartige Lösung, aber mein Kunde ist unnachgiebig in seiner Forderung, die i18n-Zeichenfolgen in einer Datenbank zu speichern, damit sie zur Laufzeit geändert werden können (obwohl es keine Voraussetzung ist, dass sie in Echtzeit geändert werden).
Eine Lösung besteht darin, einen asynchronen Dienst zu erstellen, der eine Nachrichten-ID et Gebietsschema des Benutzers und gibt eine Zeichenkette zurück. Ich habe dies implementiert und finde es furchtbar hässlich (es führt eine riesige Menge an zusätzlicher Kommunikation mit dem Server, plus es macht Eigenschaft Platzhalter Ersatz ziemlich kompliziert).
Meine Frage lautet also: Kann ich in einigen nette Art einen benutzerdefinierten Nachrichtenprovider zu implementieren, der die Nachrichten aus dem Backend in einem großen Schwung lädt (für die aktuelle Benutzersitzung). Wenn es auch in den Standard-GWT-Nachrichten-Mechanismus einhaken kann, dann würde ich völlig glücklich sein (d.h. so kann ich eine Schnittstelle wie oben erstellen und halten mit der netten {0}, {1}... Ersetzungsformat der Eigenschaft).
Andere Vorschläge für saubere datenbankgestützte Meldungen in GWT sind ebenfalls willkommen.