2013-09-03 17 views
5

Sto sviluppando un server API in Go e il server (al momento) gestisce tutte le traduzioni per i client. Quando un client API recupera dati particolari, richiede anche le traduzioni disponibili per la sezione specificata.Mostra tutte le stringhe della lingua in Revel?

Idealmente voglio avere la seguente struttura di cartelle:

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

Dove news e home sono moduli distinti.

Ora la domanda che ho per Revel è possibile recuperare TUTTE le stringhe di lingua per un dato modulo e le impostazioni locali? Ad esempio, tira tutte le stringhe di casa per en-US.

EDIT:

vorrei l'uscita (qualcosa che posso tornare al client) una chiave: Valore stringa delle traduzioni.

Qualsiasi consiglio sarebbe apprezzato.

+0

memorizzi tutto di en-US, en-UK, en-AU ecc. Nelle cartelle 'home.en' o' news.en'? O saranno separati in cartelle come 'home.en-US' e' home.en-UK'? Sto solo cercando di determinare se puoi semplicemente aprire tutti i file da 'fmt.Sprintf ("/messages /% s.% S ", module, locale)'. – Intermernet

+0

Bene, per suggerimento di Revel ogni locale avrebbe una sezione diversa all'interno dello stesso file. Attualmente non prevedo che ci siano molte differenze solo cose come "codice postale" o "codice postale". Quindi non posso garantire la necessità di un file separato per locale. Se questo risponde. – Peter

risposta

3

Mi sembra che revel usi la traduzione basata su messaggi (proprio come fa gettext), quindi è necessario lo la stringa originale per ottenere la traduzione. Queste stringhe sono memorizzate in oggetti Config, , che sono essi stessi memorizzati in messages di i18n.go, ordinati per lingua.

Come si può vedere, questa mappatura non viene esportata, quindi non è possibile accedervi. Il modo migliore per risolvere questo problema è scrivere una funzione per ciò che si desidera (ottenere la configurazione fornendo una lingua) o esportando una delle funzioni esistenti e creare una richiesta pull per revel.

Si può risolvere questo copiando il codice di loadMessageFile o fork la versione di Revel ed esportazione loadMessageFile o parseMessagesFile. Questa è anche una grande opportunità per creare una richiesta di pull.

Si noti che le localizzazioni sono memorizzate in un formato di file INI analizzato da robfig/config, quindi l'analisi manuale è anche un'opzione (sebbene non consigliata).

Problemi correlati