2012-06-11 6 views
23

Tengo un archivo terms.en.yml con un poco de localización, por ejemplo:Cómo dividir las líneas en los archivos de localización .yml en los rieles?

en: 
    devise: 
    registrations: 
     terms: 
     text: 'This agreement was written in English (US). To the extent any translated version of this agreement conflicts with the English version, the English version controls. Please note that Section 16 contains certain changes to the general terms for users outside the United States.\n\ Some new line' 

¿Cómo podría romper una línea o crear un párrafo allí?

Aquí hay algo de información pero no me ayudó, había estado haciendo algo mal. http://yaml.org/spec/1.1/#b-paragraph-separator

+0

Como está utilizando rieles que necesita para utilizar algunas precauciones tanto sobre raíles lado YAML. Vea mi respuesta a continuación para obtener más detalles y considere marcarla como la respuesta correcta. Gracias. –

Respuesta

45

Esto funciona para mí:

en: 
    hello: "Hello world" 
    bye: | 
    Bye! 
    See you! 
    error: > 
    Something happend. 
    Try later. 

Uso:

irb(main):001:0> I18n.t 'bye' 
=> "Bye!\nSee you!\n" 
irb(main):002:0> I18n.t 'error' 
=> "Something happend. Try later.\n" 
+0

Esto establece la cadena correcta, pero idear no crea HTML '
' s, por lo que no tiene ningún efecto? – amoebe

+1

Use el ayudante 'simple_format' para eso? –

+2

De esta manera, solo tiene saltos de línea en el código YAML, pero no en el resultado HTML. Intenté esto en un archivo .yml normal con Rails 4.2.6 y no funciona, ambos "|" y opciones ">". Vea mi respuesta a continuación para obtener más detalles y considere marcarla como la respuesta correcta. Gracias. –

7

Si usted quiere tener saltos de línea en el código, pero no en la salida:

en: 
    devise: 
    registrations: 
     terms: 
     text: > 
      This agreement was written in English (US). 
      To the extent any translated version of this 
      agreement conflicts with the English version, 
      the English version controls. Please note 
      that Section 16 contains certain changes to 
      the general terms for users outside the 
      United States. 

      Some new line 
6

I considere que su respuesta es:

"¿Cómo escribir una frase/párrafo en archivo .yml (YAML) con líneas de corte y hacer que los rieles de salida (HTML) contengan esas líneas de corte?"

Así que para mí el objetivo es escribir una frase dentro del archivo .yml (YAML) con líneas de corte, para comprender fácilmente el resultado final y luego tener ese resultado exacto en nuestro HTML, generado por Rails.

Para eso necesitamos algunas precauciones sencillas tanto en el archivo .yml como en nuestro archivo .html.erb | .slim.

Así como lo hago.

welcome_page.html.slim

h4.white = t('welcome_html') 

Por favor, tenga en cuenta que aquí la parte final _html. Si su clave de traducción finaliza con _html, obtiene escaparse de forma gratuita. Fuente: http://guides.rubyonrails.org/i18n.html#using-safe-html-translations

en.yml

en: 
    welcome_html: | 
    Welcome on StackOverflow!</br> 
    This is your personal dashboard! 

Así que ahora dentro de nuestro archivo .yml podemos utilizar < etiqueta/br> HTML que se escapó. Para leer y entender fácilmente cómo aparecerá el resultado que nos gustaría utilizar el "|" opción yaml que nos permite tener líneas de corte también dentro del archivo .yml. Pero recuerda que "|" La opción aquí es solo para nosotros, ser más legible y amigable para el desarrollador. "|" ¡La opción YAML no afectará la salida! También podemos utilizar otras opciones YAML como éstas:

en: 
    welcome_html: > 
    Welcome on StackOverflow!</br> 
    This is your personal dashboard! 

o:

en: 
    welcome_html: 
    Welcome on StackOverflow!</br> 
    This is your personal dashboard! 

o:

en: 
    welcome_html: "Welcome on StackOverflow!</br>This is your personal dashboard!" 

Todos ellos producen el mismo resultado, por lo que ahora su página HTML reflejará esa línea de ruptura.

0

La respuesta de Diego D con _html ya que el prefijo YAML funciona en su mayoría, pero cuando no (por ejemplo, en una alerta flash) también puede intentar usar .html_safe en su cadena localizada en la plantilla.

Así como un ejemplo:

<% flash.each do |name, msg| -%> 
    <%= content_tag :div, msg.html_safe, class: name %> 
<% end -%> 
Cuestiones relacionadas