2012-02-28 9 views
6

He añadido el servicio de traductor para mi proyecto Symfony2. Lo uso tanto en controladores como en twig plantillas. Está bien configurado y todas las etiquetas {% trans %} funcionan como corresponde. Pero en algunos casos necesito usar la etiqueta {% transchoice %}, y no está obteniendo la traducción. Aquí hay un ejemplo de mi código.Symfony2 transchoice tag

{% transchoice post['comments']['count'] %} 
    {0} Comments| {1} Comment| ]1,Inf] Comments 
{% endtranschoice %} 

También he intentado escribir esto en una línea.

Obtengo la opción correcta para el recuento de comentarios, pero la palabra en sí no se traduce. Al igual que el traductor no puede encontrar la traducción correspondiente. En el messages.de.yml tengo

Comment: "Kommentar" 
Comments: "Kommentare" 

¿Es algo malo con mi sintaxis transchoice? Tal vez necesito colocar espacios en algún lugar, o algo así?

Respuesta

10

En el archivo de traducción, debe escribir lo siguiente:

{0} Comments| {1} Comment| ]1,Inf] Comments: "{0} Kommentare| {1} Kommentar| ]1,Inf] Kommentare" 

ACTUALIZACIÓN: Un ejemplo xliff que funciona para mí:

 <trans-unit id="search.results.summary"> 
      <source>search.results.summary</source> 
      <target>{0}Pas d'annotations trouvée pour "%search_text%"|{1}Une annotation trouvée pour "%search_text%"|]1,Inf]%search_count% annotations trouvées pour "%search_text%"</target> 
     </trans-unit> 

¿Cómo lo uso:

<h2>{{ 'search.results.summary' | transchoice(search_count, { 
'%search_text%': search_text, 
'%search_count%': search_count}) }}</h2> 

Como ve, no uso el compl la notación registrada como la fuente de mi traducción, ya que es bastante inútil y haría que la plantilla sea menos legible. En cambio, pongo una cadena separada por puntos que representa el valor semántico de mi cadena.

En su caso, supongo que lo correcto a utilizar sería algo como esto:

comment.summary: "{0} Kommentare|{1} Kommentar|]1,Inf] Kommentare" 

y

{% transchoice post['comments']['count'] %} 
    'comment.summary' 
{% endtranschoice %} 

Buena suerte.

+0

que no será correcto para la opción de traducción. Por cierto, esto ni siquiera se puede analizar en ramita. – ArVan

+0

¿Por qué dices que esto no será correcto? No estoy familiarizado con yml para las traducciones, pero usé esto con xliff, y funciona (y lo analiza bastante bien). Tal vez tendrás que ajustar algunas cosas. Por cierto, reutilicé lo que escribiste, por lo que si no analiza, es * tu * culpa. Y creo que no se analiza debido a los espacios entre las tuberías y los soportes. Actualizaré mi publicación con un ejemplo de xliff que funcione para mí, espero que te ayude. – greg0ire

+0

Ahora eso funciona. El único problema es que en caso de que falte una traducción, se mostrará el texto 'comment.summary' ... – ArVan