2011-03-24 28 views
30

esta es una pregunta simple pero realmente no puedo encontrar la respuesta en alguna parte. ¿Cómo se manejan las traducciones de líneas múltiples en i18n en Rails?Multiline I18n en Rails 3

Lo que actualmente tengo es algo así como:

error: 
    code: "This is the first line of the text and at some point it becomes too big. 
      So now i continue here." 

Esto funciona, supongo que porque se traduce en html donde los espacios no importan si no en una etiqueta pre. Sin embargo, creo que esta no es la forma correcta. Y si es así, ¿cuál es la forma correcta de hacerlo?

Respuesta

68

Esto realmente no es una pregunta I18n como probablemente una pregunta yaml. ¿Has probado:

body : | 
    This is a multi-line string. 
    "special" metacharacters may 
    appear here. The extent of this string is 
    indicated by indentation. 

coloqué lo anterior en test.yml y en el IRB:

irb(main):012:0> x= YAML.load(IO.read('test.yml')) 
=> {"body"=>"This is a multi-line string.\n\"special\" metacharacters may\nappear here. The extent of this string is\nindicated by indentation.\n"} 
irb(main):013:0> x["body"] 
=> "This is a multi-line string.\n\"special\" metacharacters may\nappear here. The extent of this string is\nindicated by indentation.\n" 

Para su ejemplo específico tratar:

error: 
    code: | 
    Some really 
    long error 
    message here 
+0

añade la palabra clave yaml – Spyros

+1

podría dar más detalles un poco ? ¿Cuál es la idea? Pones un | y luego su cadena a continuación con la misma sangría? Realmente no puedo hacer que funcione. – Spyros

+0

Actualizado mi respuesta. Sí, usted usa un | después de la tecla e iniciar el texto multilínea sangrado y mantener la sangría para la cadena larga. –