Comportamiento de Envolvimiento de <T>
Comportamiento específico de cómo la herramienta CLI envuelve el componente `<T>`
Descripción general
Esta página describe el comportamiento exacto de cómo la herramienta CLI envuelve el componente <T>
.
Como regla general, la CLI envolverá el componente <T>
alrededor de cualquier contenido estático y significativo.
También envolverá un componente <Var>
alrededor de cualquier subcontenido dinámico contenido dentro de un componente <T>
.
Por ejemplo, lo siguiente será envuelto en un componente <T>
:
<div>Hello, world!</div> -> <T id="SOME_ID"><div>Hello, world!</div></T>
pero lo siguiente no:
<div><img src="logo.png" /></div> -> <div><img src="logo.png" /></div>
La herramienta CLI siempre se asegurará de que la salida final sea JSX válido y use correctamente el componente <T>
.
En algunos casos, como con operadores lógicos, alguna intervención humana podría ser útil para asegurar mejores traducciones con más contexto.
Por favor reporta cualquier error o comportamiento inesperado en Github.
Expresiones JSX
La CLI envolverá automáticamente las expresiones {...}
en componentes <Var>
.
Esto es porque las expresiones son típicamente dinámicas.
<div>Hello, {name}</div> -> <T id="SOME_ID"><div>Hello, <Var>{name}</Var></div></T>
El contenido contenido dentro de un componente <Var>
no será traducido.
Si deseas traducir contenido dinámico, deberías usar el componente <Tx>
en su lugar.
Contenido estático en expresiones JSX
La excepción a la regla de envolver expresiones es cuando la expresión contiene contenido estático.
Por ejemplo, lo siguiente no será envuelto en un componente <Var>
:
<p>{"Hello," + " World!"}</p> -> <T id="SOME_ID"><p>{"Hello," + " World!"}</p></T>
Literales de plantilla en expresiones JSX
La CLI envolverá los literales de plantilla que contengan quasis (${}
) en un componente <Var>
, ya que pueden ser dinámicos.
<p>{`${temp}`}</p> -> <T id="SOME_ID"><p><Var>{`${temp}`}</Var></p></T>
Operadores lógicos
Las expresiones JSX que contengan operadores lógicos como &&
, ||
, y ?
serán envueltas en un componente <Var>
,
si un componente <T>
es necesario en el nivel superior. (es decir, si hay otro contenido significativo fuera de la expresión)
<div>Hello, {name && {name}} World!</div>
<T id="SOME_ID">
<div>Hello, <Var>{name && {name}}</Var> World!</div>
</T>
Dentro de la expresión, el CLI tratará los elementos como si fueran completamente independientes del resto de la expresión.
Esto significa que serán envueltos en sus propios componentes <T>
(para asegurar que todo el contenido sea traducible)
<div>{name ? <>Hello, </> : <>Goodbye, </>}</div>
<T id="SOME_ID">
<div>
<Var>
{name ? <T id="HELLO"><>Hello, </></T> : <T id="GOODBYE"><>Goodbye, </></T>}
</Var> World!
</div>
</T>
En casos como estos, deberías usar un componente <Branch>
o <Plural>
en su lugar.
La herramienta CLI actualmente no usa automáticamente estos componentes en un componente <T>
, por lo que necesitarás cambiar el código manualmente.
El ejemplo anterior debería reescribirse como:
<T id="SOME_ID">
<div>
<Branch branch={name == null}
true={<>Hello, </>}
false={<>Goodbye, </>}
/>
World!
</div>
</T>
¿Qué te parece esta guía?