Components

Tx

Referencia de API del componente <Tx>

Descripción general

El componente <Tx> traduce contenido JSX en tiempo de ejecución.

<Tx>
    Hoy, fui a
    {" la tienda"}
    <p>
        para <b>comprar</b> algunos <i>víveres</i>.
    </p>
</Tx> 

El componente <Tx> admite traducir tanto texto plano como estructuras JSX complejas. Además, ofrece funciones para manejar variables, plurales y traducciones específicas según el contexto. <Tx> solo funciona del lado del servidor.

Traducción en tiempo de ejecución: Las traducciones con <Tx> se realizan en tiempo de ejecución. Esto significa que la traducción se ejecutará en vivo.


Referencias

Props

Prop

Type

Descripciones

PropDescripción
childrenEl contenido que se traducirá. Puede incluir texto sin formato o estructuras JSX.
contextContexto adicional para afinar la traducción. Útil para resolver frases ambiguas.
localeUn locale opcional para usar en la traducción. De manera predeterminada, será el locale más preferido del navegador que sea compatible con tu app.

Comportamiento

<Tx> traduce JSX en tiempo de ejecución. Esto significa que las traducciones se realizan en vivo, por lo que puedes traducir contenido que solo se conoce en tiempo de ejecución. La desventaja es que, al esperar a que se cargue una traducción a demanda, se introduce una demora y el proceso es significativamente más lento.

Durante la carga, <Tx> devolverá undefined a menos que los idiomas sean similares (en-US vs en-GB), aunque este comportamiento se puede personalizar con la configuración de renderizado. Si ocurre un error, <Tx> devolverá el contenido original.

Nuestra recomendación es traducir todo lo posible en tiempo de compilación usando <T>, getGT o useGT, y usar traducciones a demanda, como <Tx> y tx, solo cuando sea necesario.

Asegúrate de seguir la guía de implementación aquí.


Ejemplos

Uso básico

El componente <Tx> traducirá su children en tiempo de ejecución.

SimpleTranslation.jsx
import { Tx } from 'gt-next';

export default function Greeting() {
    return (
        <Tx id="greeting">
            ¡Hola, mundo!
        </Tx> 
    );
}

Con variables

Puedes usar el componente <Var> para marcar los children como variables. Esto te permite indicar contenido que no debe traducirse.

DynamicGreeting.jsx
import { Tx, Var } from 'gt-next';

export default function DynamicGreeting(user) {
    return (
        <Tx>
            Hola, <Var>{user.name}</Var>
        </Tx>
    );
}

Con plurales

El componente <T> también admite pluralización con el componente <Plural>.

ItemCount.jsx
import { Tx, Plural } from 'gt-next';

export default function ItemCount({ count }) {
    return (
        <Tx>
            <Plural n={count}  
                singular={<>Tienes un artículo.</>}  
                plural={<>Tienes artículos.</>}  
            />  
        </Tx>
    );
}

Limitaciones

La función <Tx> solo traduce a sus elementos descendientes.

Example.jsx
import { Tx } from 'gt-next';

const ValidTranslation = ({ children }) => (<div><b>{children}</b></div>);

const InvalidTranslation = ({ children }) => (<div><b>Sin traducción</b></div>);

export default function Example() {
    return (
        <Tx>
            <div><b>¡Esto es válido!</b></div> // se traducirá 

            <ValidTranslation> // se traducirá 
                ¡Hola, mundo!
            </ValidTranslation>

            <InvalidTranslation /> // no se traducirá
        </Tx>
    );
}

Nota: Una buena regla general es que cualquier contenido que esté literalmente entre los dos <Tx> del archivo se traducirá. Siempre puedes agregar otro <Tx> para traducir el contenido que no se esté traduciendo, aunque no se recomienda anidar componentes <Tx>.


Notas

  • El componente <Tx> está diseñado para traducir contenido en tu aplicación en tiempo de ejecución.
  • Usa el componente <Tx> para traducir texto sin formato o estructuras JSX, incluidas variables y pluralización.

Próximos pasos

  • Para Buildtime Translation, consulta el componente <T>.
  • Para funciones más avanzadas, consulta la referencia de <T>.
  • Para traducir cadenas, consulta tx, getGT y useGT.

¿Qué te ha parecido esta guía?

Tx