Components

T

API reference for the <T> component

Overview

The <T> component is the primary translation method in gt-next.

<T>
    Today, I went to
    {" the shop"}
    <p>
        to <b>buy</b> some <i>shopping</i>.
    </p>
</T>

The <T> component supports translating plain text as well as complex JSX structures. Additionally, it provides features for handling variables, plurals, and context-specific translations.

Build-time Translation: <T> translations occur at build time. This means translation happens before deployment to reduce latency. Be sure to follow the deployment guide here.


Reference

Props

Prop

Type

Descriptions

PropDescription
childrenThe content to be translated. This can include plain text or JSX structures.
idA unique identifier for the translation string. This ensures consistent translation across your app.
contextAdditional context to refine the translation. Useful for resolving ambiguous phrases.

Returns

React.JSX.Element | undefined, containing the rendered translation or fallback content based on the provided configuration.


Behaviour

Production

During the CD process, any children inside <T> will be translated before your application is deployed. This ensures fast load times for all locales, but it can only translate content known at build time.

Once generated, translations are either (1) stored on the CDN or (2) included in your app’s build output, according to your configuration. From there, the translated content is served to your users. If a translation is not found, it will fall back to the original content.

Make sure to follow the deployment guide here.

Development

During development, the <T> function translates content on demand. This is useful for prototyping how your app will look in different languages. Remember to add a Dev API key to your environment to enable this behaviour.

While loading, <T> will return undefined unless the languages are similar (en-US vs en-GB), though this behaviour can be customised with render settings. If an error occurs, <T> will return the original content.

You may see a delay during on-demand translation in development. This delay will not occur in production builds unless content is explicitly being translated on demand, i.e. by using <Tx> or tx.


Examples

Basic usage

The <T> will translate its children.

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

export default function Greeting() {
    return (
        <T>
            Hello, world!
        </T>
    );
}

With variables

You can use the <Var> component to mark children as variables. This lets you flag content that shouldn’t be translated. Typically, <Var> components wrap dynamic content.

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

export default function DynamicGreeting(user) {
    return (
        <T>
            Hello, <Var>{user.name}</Var>!
        </T>
    );
}

With plurals

The <T> component also supports pluralisation using the <Plural> component.

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

export default function ItemCount({ count }) {
    return (
        <T>
            <Plural n={count} 
                singular={<>You have one item.</>} 
                plural={<>You have {count} items.</>} 
            />
        </T>
    );
}

Limitations

The <T> component does not translate dynamic content.

DynamicContent.jsx
import { T } from 'gt-next';

export default function DynamicContent({greeting}) {
    return (
        <T>
            {greeting} {/* will cause an error */}
        </T>
    );
}

The <T> function translates its children.

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

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

const InvalidTranslation = ({ children }) => (<div><b>No translation</b></div>);

export default function Example() {
    return (
        <T>
            <div><b>This is valid!</b></div> {/* will be translated */}

            
            <ValidTranslation>
                Hello, world!  {/* will be translated */}
            </ValidTranslation> 

            <InvalidTranslation /> {/* will not be translated */}
        </T>
    );
}

Note: As a rule of thumb, any content that is literally between the two <T> tags in the file will be translated. You can always add another <T> to translate content that isn’t currently being translated, though nesting <T> components isn’t recommended.


Notes

  • The <T> component is designed for translating content in your application. It is the primary method for localisation in gt-next.
  • Use the <T> component to translate plain text or JSX structures, including variables and pluralisation.
  • If you use the <T> component on the client side, make sure it is wrapped in a <GTProvider> to access the translation context.

Next steps

  • For on-demand translations, see the <Tx> component.
  • For more advanced features, see the <T> reference.
  • To translate strings, see tx, getGT, and useGT.

How is this guide?

T