Il secondo ha una migliore possibilità di essere corretto. Quando capitalizzare e quando non dipende dal locale in modo da non poter sapere se t(:hello).capitalize
produrrà un risultato corretto senza guardare il contesto circostante. Un approccio migliore rispetto sia sarebbe quella di includere il contesto nel simbolo, qualcosa di simile:
t(:hello_button)
e poi nel tuo inglese YAML:
hello_button: "Hello"
In questo modo le traduzioni possono utilizzare qualsiasi caso è appropriato per la lingua in questione. Inoltre, a volte l'inglese usa la stessa parola per due cose quando altre lingue usano parole diverse: considera arancione il colore e arancione il frutto; da qui l'importanza del contesto nelle tue traduzioni.
Inoltre, capitalize
funziona solo su caratteri ASCII a meno che non si passi un mb_chars
nel mix:
> 'µ'.capitalize
=> "µ"
> 'µ'.mb_chars.capitalize.to_s
=> "Μ"
non si potrebbe incontrare un leader µ
ma semplici accenti all'inizio delle parole sono abbastanza comuni:
> 'éclair'.capitalize
=> "éclair"
> 'éclair'.mb_chars.capitalize.to_s
=> "Éclair"
Questo è solo graffiare la superficie delle difficoltà che dovrai affrontare assumendo che tutte le lingue si comportino come l'inglese. Attendi fino a quando non inizi a occuparti di pluralization rules.
La regola di base in L10N è di trattare le stringhe rivolte all'utente come bit di dati opachi che estraggono da un database di qualche tipo e mostrano all'utente senza alcuna interazione intermedia. Sì, questo rende il tuo codice più complicato ma la correttezza è un po 'importante.
Mentre io sono qui, il tentativo di tradurre singole parole tende a produrre un pasticcio incomprensibile, avrai risultati migliori se si traduce intere frasi.
fonte
2012-08-29 01:53:16
Vale la pena notare che il linguaggio può diventare molto complesso molto velocemente. Questo è un esempio piuttosto semplice. Avete casi d'uso più realistici? – tybro0103