2013-09-03 7 views
5

Ich entwickle einen API Server in Go und der Server (im Moment) behandelt alle Übersetzungen für Clients. Wenn ein API-Client bestimmte Daten abruft, fragt er auch nach den Übersetzungen, die für den angegebenen Abschnitt verfügbar sind.Ausgabe aller Sprachzeichenfolgen in Revel?

Idealerweise möchte ich die folgende Ordnerstruktur haben:

/messages 
    /home.en 
    /home.fr 
    /home.sv 
    /news.en 
    /news.fr 
    /news.sv 

Wo news und home sind verschiedene Module.

Jetzt die Frage, die ich für Revel habe, ist es möglich, ALLE Sprachzeichenfolgen für ein bestimmtes Modul und gegebenes Gebietsschema abzurufen? Zum Beispiel ziehen Sie alle Home-Strings für en-US.

EDIT:

Ich möchte die Ausgabe (etwas, das ich an den Client zurückgeben kann) einen Schlüssel: Wert Zeichenfolge von Übersetzungen.

Jede Anleitung wäre willkommen.

+0

speichern Sie alle en-US, en-UK, en-AU usw. in den Ordnern 'home.en' oder' news.en'? Oder werden sie in Ordner wie "home.en-US" und "home.en-UK" aufgeteilt? Ich versuche nur herauszufinden, ob Sie einfach alle Dateien von 'fmt.Sprintf ("/messages /% s.% S ", Modul, Gebietsschema)' öffnen können. – Intermernet

+0

Nun, pro Revel Vorschlag würde jedes Gebietsschema einen anderen Abschnitt innerhalb der gleichen Datei haben. Momentan erwarte ich nicht, dass es viele Unterschiede gibt, wie zum Beispiel "Postleitzahl" oder "Postleitzahl". Daher kann ich keine Notwendigkeit für eine separate Datei pro Gebietsschema garantieren. Wenn das beantwortet. – Peter

Antwort

3

Es scheint mir, dass revel messagesbasierte Übersetzung verwendet (genau wie gettext tut), so benötigen Sie die ursprüngliche Zeichenfolge, um die Übersetzung zu erhalten. Diese Zeichenfolgen werden in den Konfigurationsobjekten gespeichert, die selbst in messages von i18n.go gespeichert sind, sortiert nach Sprache.

Wie Sie sehen können, wird diese Zuordnung nicht exportiert, sodass Sie nicht darauf zugreifen können. Der beste Weg , um dies zu beheben, ist eine Funktion für das, was Sie wollen (erhalten die Konfiguration durch die Bereitstellung einer Sprache) oder eine der vorhandenen Funktionen zu exportieren und eine Pull-Anfrage für Revel zu erstellen.

Sie umgehen dies kann den Code von loadMessageFile oder durch Ihre Version von Revel gabeln und loadMessageFile oder parseMessagesFile durch Kopieren exportieren. Dies ist auch eine große Chance eine Pull-Anforderung zu erstellen.

Beachten Sie, dass die Lokalisierungen in einem INI-Dateiformat gespeichert werden, das von robfig/config, geparst wird, so dass das manuelle Analysieren ebenfalls eine Option ist (obwohl nicht empfohlen).