2015-05-12 11 views
6

Per esempio:È possibile avere trattini in una chiave yaml da utilizzare nel mio file it.yml I18n?

en: 
    foobar-does-not-work: 'This is my value' 

Poi se lo faccio:

t(foobar-does-not-work) # => returns nil 

Questo non analizzerà in yml di Ruby. C'è un modo per farlo funzionare? Le mie chiavi si basano su URL che contengono trattini (-).

+0

Penso che usare i trattini in una chiave sia permesso e non dovrebbe dare problemi. Sei sicuro che siano i trattini? – zwippie

+0

@zwippie Sono positivo. Ruby non lo permette. – Trip

+0

Beh, l'ho provato e il mio Ruby (versione) lo consente. In quale versione di Ruby sei? – zwippie

risposta

5

Quale versione di ruby ​​stai usando? Puoi mostrarci il tuo codice e l'errore?

Funziona per me:

> require 'yaml' 
> YAML.load_file('foo.yml') 
{"en"=>{"foobar-does-not-work"=>"This is my value"}} 

E funziona quando lo aggiungo alla mia en.yml:

> I18n.t('foobar-does-not-work') 
=> "This is my value" 

Avete controllato il valore di I18n.locale?

+0

Hmm interessante. Sì, sembra funzionare in console come il tuo esempio. Ma per qualche motivo quando lo faccio attraverso il mio en.yml (il file di Il8n), non verrà caricato. Aggiornata la mia domanda – Trip

1

Penso che stiate usando il tasto sbagliato quando chiamate il metodo t. Rimuovi 'en' dalla chiave. Dovrebbe essere:

t('foobar-does-not-work') 
+0

Punto eccellente. Ho appena controllato il mio codice e mi sono reso conto che l'ho incluso solo nell'esempio. Ancora non sembra funzionare anche con l'en rimosso – Trip

1

Chiaramente c'è un problema di fondo che deve essere eliminato. C'è un ottimo strumento che analizza il tuo iAM YAML come app Rails, che ho trovato estremamente utile nel debug.

Installa ed esegui questa gemma i18n-tasks: https://github.com/glebm/i18n-tasks.

Per creare una relazione completa dei componenti i18n:

$ i18n-tasks health 

Dal loro spec:

This gem analyses code statically for key usages, such as I18n.t('some.key'), in order to: 

Report keys that are missing or unused. 
Pre-fill missing keys, optionally from Google Translate. 
Remove unused keys. 
Thus addressing the two main problems of i18n gem design: 

Missing keys only blow up at runtime. 
Keys no longer in use may accumulate and introduce overhead, without you knowing it. 

Non sono sicuro che la gemma era destinato a essere usato come strumento di debug in i18n, ma ho trovato che è utile per il debug di difficile trovare problemi in i18n.

Problemi correlati