2013-10-31 17 views
6

Ho bisogno di inserire un carattere speciale nella traduzione del file html. Il personaggio è uno spazio, serve per cercare di risolvere un altro problema.Inserire caratteri speciali HTML in (i18n) yml

Ma non funziona. Il codice per quel personaggio è visualizzato nell'oggetto dell'e-mail.

Per questo ho inserire queste righe:

pt.yml

subjects: 
    ... 
    release_auto_pause_triggered_html: "%{project_name} %{release_name} - pausa automática   disparada" 

release_mailer.rb

subject = t('subjects.release_auto_pause_triggered_html', project_name: @project.name, release_name: @release.name).html_safe 

Ma l'oggetto della e-mail inviata è la seguente: pausa automática disparada

  • Il "'" I aggiunto solo per fare questo post, ma non darebbe per vedere qui.

ho bisogno di guardare in questo modo: "Pausa automática disparada"

Dove sto andando male?

+1

Rails non decodifica entità HTML. Basta aggiungere un'altra voce di traduzione senza '& nbsp' o sostituirla con uno spazio effettivo [spazio non frazionato] (http://en.wikipedia.org/wiki/Non-breaking_space), ad esempio' \ u00A0'. – Stefan

risposta

8

penso di riuscire a farlo.. Prova questo "pausa automática\xA0disparada"

Source:

Utilizzando scalari con quotatura singola, è possibile esprimere qualsiasi valore che non contenga caratteri speciali. Non si verifica alcuna escaping per gli scalari quotati singoli, tranne per il fatto che una coppia di citazioni adiacenti '' viene sostituita con una virgoletta singola '.

Il doppio quotato è lo stile più potente e l'unico stile in grado di esprimere qualsiasi valore scalare. Gli scalari con doppia quotatura consentono l'escaping. Usando sequenze di escape \ x ** e \ u * *, puoi esprimere qualsiasi carattere ASCII o Unicode.

E here ho trovato il codice necessario

La mia uscita è:

# YML 
title: "Title \xA0 aaa" 
# console 
I18n.t('title') 
=> "Title   aaa" 
+0

* - * Ha funzionato, grazie per il codice, per la spiegazione e la fonte. =] –

1

Dovrebbe funzionare in questo modo. Prova a controllare gli errori di battitura.

Nel tuo esempio

"pausa automática & nbsp '; disparada ""

c'è più ' tra &nbsp e ;

+0

No nel mio codice. Proprio qui. Ho dovuto inserire un 'qui per mostrare il codice. –

Problemi correlati