2008-08-19 8 views
9

In GWT muss ich angeben, welche Ländereinstellungen in meiner Anwendung unterstützt werden. Der Code wird in verschiedenen Dateien kompiliert, eine für jedes Gebietsschema (neben anderen Versionen), aber ich muss meinen Kunden eine einzige URL geben. Diese URL soll eine Seite sein, die entsprechend dem vom Browser bevorzugten Gebietsschema angezeigt werden soll. Ich möchte keinen HTTP-Parameter für das Gebietsschema haben, da ich das Gebietsschema bevorzugen möchte, das vom Browser bevorzugt wird. Wie kann dies in GWT codiert werden?Wie bekomme ich Informationen zum Gebietsschema für eine GWT-Anwendung?

Sollte ich versuchen, dies mit Apache Rewrite-Regeln zu versuchen? Ich habe es mir angewöhnt, aber ich denke, dass ich in einer Rewrite-Regel nicht auf solche Parameter zugreifen kann.

Vielen Dank, Giuseppe

Antwort

3

Wenn ich nicht in der Dokumentation nicht richtig lese ich glaube nicht, dass Sie nichts zu tun haben.

GWT and Locale

Durch eine Client-Eigenschaft locale machen, der Standard-Startprozess in gwt.js wählt die entsprechende lokalisierte Version einer Anwendung, Benutzerfreundlichkeit bietet (es ist einfacher, als es klingen mag!), Optimierte Leistung und minimale Skriptgröße.

Die Art, wie ich es gelesen habe, solange Ihr Modul alle Ländereinstellungen hinzugefügt hat, sollte es automatisch sein?

+1

In diesem Dokument spricht über das Hinzufügen? Locale = foo zu jeder URL. Dieser "manuelle" Zusatz ist schlecht, da der Browser bereits eine Liste der gewünschten Locales sendet. –

5

GWT hat gute Unterstützung für die Internationalisierung. Siehe hierzu link. Der Befehl i18nCreator kann Ihnen dabei helfen, die Internationalisierungsinfrastruktur ähnlich wie ProjectCreator und applicationCreator die GWT-Anwendung einzurichten.

Wenn Sie statische Zeichenfolgen (d. H. Ungültiger Eintrag!) Haben, die internationalisiert werden müssen, benötigen Sie keine zusätzlichen Flags für den Befehl i18nCreator, um die Eigenschaftendateien und die Infrastruktur zu erstellen.

Wenn Sie Zeichenfolgen haben, die Parameter akzeptieren müssen (z. B. Hello {0}), müssen Sie das Flag -createMessages an den Befehl i18nCreator übergeben, um die Eigenschaftendateien und die Infrastruktur zu erstellen.

Jetzt Ihr Modul benötigt das i18n-Modul in Ihrem MyApplication.gwt.xml enthalten:

<inherits name="com.google.gwt.i18n.I18N"/> 

Definieren Sie eine Java-Schnittstelle im selben Paket wie Ihr Eigentum in Dateien, die Konstanten oder Nachrichten und definiert Methoden (Name erweitert stimmt mit den Eigenschaftseinträgen überein), die alle den String zurückgeben.

MyConstants.properties enthält:

errorMessage=Invalid Entry! 

MyConstants.java enthält:

import com.google.gwt.i18n.client.Constants; 

public interface myConstants extends Constants { 
    String errorMessage(); 
} 

Sie jetzt internationalisierten Strings von Ihnen Anwendung zuzugreifen:

public class MyApplication implements EntryPoint { 
    private static final MyConstants constants = (MyConstants)GWT.create(MyConstants.class); 

    public void onModuleLoad() { 
     final Label errorMessage = new Label(constants.errorMessage); 
    } 
} 

GWT implementiert die Schnittstelle für Sie automatisch.

Sie können Nachrichten auf ähnliche Weise erhalten.

Hoffentlich kann dies Ihnen den Einstieg erleichtern.

13

Ich hatte das gleiche Problem wie du, aber da ich das aktuelle Gebietsschema wirklich wissen muss (ich benötige einen zweiten Server für Daten, die ich lokalisierbar sein möchte), fand ich diese Klasse: com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale(). Das sollte Ihnen geben, was GWT derzeit verwendet.

+0

epesuig Ich weiß, dass Sie bereits die Antwort haben, aber wie ich auf dieser Seite fühlte, als ich nach einer Lösung suchte, sagte ich, dass andere Personen wahrscheinlich auch hier fallen werden. BR –

3

prüfen diese com.google.gwt.i18n.client.LocaleInfo.getCurrentLocale()

2
<inherits name="com.google.gwt.i18n.I18N"/> 

<!-- Use browser-specified locale for i18n --> 
<set-configuration-property name="locale.useragent" value="Y"/> 

<!-- Specify locales your application support --> 
<extend-property name="locale" values="en"/> 
<extend-property name="locale" values="de_DE"/> 
<extend-property name="locale" values="ru_RU"/> 
Verwandte Themen