Dictionary

getTranslations()

API Reference for the getTranslations server-side translation function

Overview

getTranslations() is used to get string translations from the translation dictionary for server-side components.

const d = await getTranslations(); // Get the translation function
d('greeting.hello'); // pass the id to get a translation

getTranslations() supports:

  • Translation of string and jsx content.
  • Variable insertion and conditional logic within translations.
  • Optional id prefixing.

For client-side translations, see useTranslations().

getTranslations() and useTranslations() use a dictionary to store all content for translation. This is different from using the <T> component for translation. If you are interested in only using <T> components for translation, then this document is not relevant.

Reference

Props

PropTypeDefault
id??
string
undefined

Description

PropDescription
idAn optional prefix to prepend to all translation keys. This is useful for working with nested dictionary values.

Returns

A promise of a translation function d() that, given an id, will return the translated version of the corresponding entry

Promise<(id: string, options?: DictionaryTranslationOptions) => React.ReactNode>
NameTypeDescription
idstringThe id of the entry to be translated
options?DictionaryTranslationOptionsTranslation options to customize the behavior of d().

Examples

Basic Usage

Every entry in your dictionary gets translated.

dictionary.jsx
const dictionary = {
  greeting: <>Hello, Alice!</>, 
};
export default dictionary;

When we want to access these entries (on the server side), we call getTranslations(). This returns a function that accepts the key of a translation from the dictionary.

TranslateGreeting.jsx
import { getTranslations } from 'gt-next/server';

export default async function TranslateGreeting() {
  
  const d = await getTranslations(); 

  return (
    <p>
      {d('greeting')} // Hello, Alice // [!code highlight]
    </p>
  );
}

Using variables

In order to pass values, you must (1) assign an identifier and (2) reference the identifier when calling the d() function.

In this example, we use {} to pass variables to the translations. In the dictionary, we assign identifier {userName}.

dictionary.jsx
const dictionary = {
  greeting: "Hello, {userName}!", 
};
export default dictionary;
TranslateGreeting.jsx
import { getTranslations } from 'gt-next/server';

export default async function TranslateGreeting() {
  const d = await getTranslations();
  
  // Hello Alice!
  const greetingAlice = d('greeting', { userName: "Alice" }); 

  return (
    <p>
      {greetingAlice}
    </p>
  );
}

Using prefixes

We can use prefixes to only fetch a subset of the dictionary.

dictionary.jsx
const dictionary = {
  prefix1: { 
    prefix2: { 
      greeting: "Hello, Bob",
    }
  }
};
export default dictionary;

Because we added the value 'prefix1.prefix2' to the getTranslations method, all of the keys are prefixed with prefix1.prefix2:

UserDetails.jsx
import { getTranslations } from 'gt-next/server';

export default function UserDetails() {
  const d = await getTranslations('prefix1.prefix2'); 
  return (
    <div>
      <p>{d('greeting')}</p> // greeting => prefix1.prefix2.greeting // [!code highlight]
    </div>
  );
}

Notes

  • The getTranslations() function allows you to access dictionary translations on the server side.

Next Steps

How is this guide?