> ## Documentation Index
> Fetch the complete documentation index at: https://thehyperstack.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Credential Languages

> Write your credential text and email once. Recipients and visitors read them in their own language.

You write a group's title and description, and your email template, once, in your own language. You can then add translations, made by AI or written by you. Hyperstack picks the right one by itself:

* The **credential page** shows the group's text in the visitor's language.
* The **credential email** goes in the recipient's language, when your email template has a translation in it.

Hyperstack speaks 14 languages: English, Arabic (العربية), German (Deutsch), Spanish (Español), French (Français), Irish (Gaeilge), Hindi (हिन्दी), Italian (Italiano), Korean (한국어), Portuguese (Português), Russian (Русский), Swahili (Kiswahili), Tamil (தமிழ்) and Chinese (简体中文).

> [!NOTE]
>
> Group translations are on every plan. Email template translations need custom email content, on the **Premium** and **Enterprise** plans. You need the **Credential issuer** or **Administrator** role to translate a group, and an administrator to change the default language.

## Set your default language

The default language is the language you write in. It is English unless you change it.

**1. Go to Settings → Language**

It is under **Organization**.

**2. Choose the Default language**

![The Language settings with the Default language set to English](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-settings.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=f140865c111f461e4cec3209dd7cb86c)

**3. Click Save changes**

The default language doesn't change or translate your text. It tells Hyperstack what language your text is in. Write your email templates in the default language too.

### A group in another language

If one group is written in another language, for example a French course, set that group's own language.

1. Open the group. Under **More settings**, open **General settings**.
2. Choose its **Language**. **Organization default** uses your default language.
3. Click **Update group**.

![The General settings of a group with Language set to Organization default (English)](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-group-setting.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=147e9f9ff93d1938ca46df8d534f4c70)

The group's language is also used for its credential emails when Hyperstack doesn't know the recipient's language. See [Which language an email goes in](#which-language-an-email-goes-in).

## Translate a group's text

**1. Open the group**

Go to **Credential Groups** and click the group. A new group must be saved first.

**2. Click Review under the description**

The line under the description shows how many languages have a translation, and how many you need to check.

![The group's description with the line Translated into 4 of 13 languages, 1 to check, Review](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-group-line.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=e23c19b61276b6a95d12b0e05aa1627c)

**3. Choose a language and click Translate**

The **Translations** panel lists the 13 other languages with their state. Click a language to see your original next to its translation.

* **Translate**: AI translates the title and description in a few seconds.
* **Write it myself**: type your own translation.
* **Translate all missing**: translates every language that has no translation or an out-of-date one. You can close the panel while it works.

![The Translations panel: the list of languages with their states, and Irish selected with Translate and Write it myself](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-sheet.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=e3e75de4a728f361c4cd20a2cea52c4e)

Translations save at once. Credential pages use them, also the pages of credentials you issued before.

The AI keeps your formatting, such as bold text and lists. Names of people, brands and courses can still change. Ask someone who reads the language to check the translation, and edit it if needed.

### Translation states

| State | What it means | Shown to visitors |
| - | - | - |
| **Missing** | No translation yet. | No. They see the original, with a **Translate** button. |
| **Auto** | Made by AI. | Yes |
| **Edited** | Written or changed by your team. Hyperstack never overwrites it. | Yes |
| **Out of date** | Made by AI, and you changed the original after that. | No. Translate it again. |
| **Check** | Edited by your team, and you changed the original after that. | Yes, until you change it. |

### Edit a translation

Click **Edit**, change the title or the description, then click **Save translation**. The translation is now **Edited**.

![Editing the German translation: the original in English above, and the German title and description below](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-sheet-editing.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=f3feddc827e777ea682faa014d81e446)

To go back to the AI's translation, click **Reset to automatic**. AI translates the original again and replaces your edit.

### When you change the original

When you change the group's title or description:

* **Auto** translations become **Out of date**. Visitors no longer see them. Click **Translate** to make a new one.
* **Edited** translations become **Check**. Visitors still see them. Open each one and click:
  * **Mark as checked** if the translation still fits.
  * **Use new translation** to replace it with a new AI translation.
  * **Edit** to change it yourself.

![A Spanish translation to check, with Mark as checked, Use new translation and Edit](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-sheet-check.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=0ba488f4513bcea6b3c6878dd89dfc60)

## What visitors see

The credential page follows the visitor's language: the one they chose at the bottom of the page, or else their browser's language. The page's own words were already translated. Now the group's title and description are too.

* **A translation is saved**: the page shows it at once, with **Translated · Show original**. **Also in** lists the other languages the group has, to switch by hand.
* **No translation is saved**: the page shows your original with a **Translate** button. AI translates the text for the visitor, and Hyperstack saves it. Later visitors see it at once, and it shows as **Auto** in your Translations panel. You can edit it there.
* **The visitor reads the group's language**: the page shows your original.

![A credential page in French, with the group title and description translated, Translated · Show original, and Also in: English · Arabic](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-page-french.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=12253519ef55e92abcd5a7e8b31585b6)

![A credential page for a German visitor, with a Translate button above Also in](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-page-translate.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=d1d9e2a8b7b18ce4a73bc48d39bdd92a)

Visitors who read the group's language see the page as before. When the group has translations, the page also shows the **Also in** line.

> [!TIP]
>
> To open a credential page in one language, add `?lang=` and the [language code](#language-codes) to its link, for example `?lang=fr`.

## Send the email in the recipient's language

The whole email goes in one language: the subject, your text, the buttons, the footer and the dates. For this, the group needs your own [email template](https://thehyperstack.com/docs/tutorials/customization-and-branding/email-customization.md), with a translation in that language. The built-in default email is in English only.

### Translate an email template

**1. Open the template**

Go to **Settings → Email Templates** and click the template. A new template must be saved first.

**2. Click Review under the email**

![The Edit email template dialog with the line Translated into 3 of 13 languages, 1 to check, Review under the email](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-template-line.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=b95ed0e121bb1f768087e3d83a1cd966)

**3. Translate the subject and the body**

The panel works as it does for groups. AI keeps the attributes in square brackets, such as `[recipient_name]`, exactly as they are. Keep them as they are when you edit too.

![The Translations panel of an email template, with the French subject and body](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-template-sheet.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=6d341f7a6e1df7529dc4c6e465a2c8ed)

### Preview the email in a language

**Preview in**, above the email, shows the saved template in another language: your translated text, our buttons and footer, and the date.

![The email template preview in French, with the Read in line, the French text and the French buttons](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-template-preview.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=cda130c9e5c6f27113f085a96dfc7570)

If the template has no translation in that language, the preview says so. That email goes out as written.

![Preview in Deutsch: No saved translation in Deutsch. This email goes out in English.](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-template-fallback.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=04a77caef9556646d1e575a95bf6efe7)

### Which language an email goes in

Hyperstack takes the first language it has from this list:

1. **The credential's language**, when you set one. See [Choose a credential's language](#choose-a-credentials-language).
2. **The recipient's own language**. Hyperstack learns it when the recipient:

   * chooses a language in their [wallet](https://thehyperstack.com/docs/tutorials/recipients/wallet.md#choose-your-language), or
   * clicks a language in the **Read in** line of an email, or
   * opens a credential from an email's button. Their browser's language is used only if nothing else is known.

   It is kept for the email address, for every organization that issues to that address.
3. **The group's language**.
4. **Your default language**.

If your template has a translation in that language, the email goes in it. If not, the email goes as written, as it did before.

When the template has at least one translation, the email starts with a **Read in** line. It lists the email's language and the other languages of the template. A click opens the credential page in that language, and the recipient's next emails go in it.

![A credential email in French: Lire en: Français, English, Arabic at the top, then the French text, buttons, rating and footer](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-email-french.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=c2d2242887c75adce7117ceaf796cebe)

`[group_title]` and `[group_description]` in the email use the group's translation in the email's language, when it has one.

## Choose a credential's language

Most of the time you can leave it on **Automatic**. Set a language when you know what the recipient reads, for example for a course taught in Spanish.

### When you issue

* **Add by hand**: under the recipients, click **change** next to **Language: Automatic**, and choose a language. It is used for every recipient you type in.

  ![Add by hand with the line Language: Automatic · change under the recipients](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-issue.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=8b0fe207e9661ad6cf45f502146ac9dc)

* **Upload a spreadsheet**: add a column named **Language** to your file, with a language for each row. Use a [code](#language-codes) such as `fr`, or a name such as `French` or `Français`. Leave a cell empty for automatic. The column is not in the CSV and Excel templates: add it yourself.

  The Studio matches the column by itself only when every value in it is a language. Otherwise, match it under **Match columns**. A row with a value that is not a language is marked: fix it before you continue.

* **API and AI assistants**: send `language`. See [Use the API or an AI assistant](#use-the-api-or-an-ai-assistant).

Credentials that apps issue for you, such as Moodle, LTI, forms or Zapier, are automatic.

### After you issue

Open the credential, click **Edit details** and change **Language**. Then **Resend invitation** to send the email in the new language.

![Edit details of a credential with Language set to Français](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-credential-edit.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=b8e1210baa15a86f8aedcd77e07382bd)

Once you set a credential's language, or give a group a language other than your default, the **Credentials** table has a **Language** column and a **Language** filter. Credentials without a language show **Automatic**.

![The Credentials table with the Language filter and a Language column: Italiano, Automatic, Chinese, Arabic, Automatic, Français](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-credentials-list.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=006cafe1716d321a7802d46df326135f)

## Where the credential's language shows

When a credential has a language, these use the group's translation in that language:

* The group title and description on the certificate and badge, through `[group_title]` and `[group_description]`. The other words on your design stay as you designed them.
* The title of **Add to LinkedIn Profile**.
* The name and description in the [Open Badges](https://thehyperstack.com/docs/api-guide/open-badges.md) downloads, which also say the language.
* The title and description that search engines and link previews show.

![A credential page in English whose certificate shows the group title in French, the credential's language](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-design.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=2a7434e77836501aa9ad05f591575420)

For an automatic credential, all of these stay in the group's language, as before.

In the wallet, recipients see credential titles in the language they chose there, when your group has a translation in it.

![Two wallet cards in French: one with the French title, one still in English because its group has no French translation](https://mintcdn.com/hyperstack/omKvZhQOkBUlN6Ui/images/languages-wallet.webp?fit=max\&auto=format\&n=omKvZhQOkBUlN6Ui\&q=85\&s=9eb49528b58632e1b8c5005091264b01)

## What is not translated

* Skill and knowledge tags
* Transcripts
* Fixed words on a design
* Google Wallet passes
* Your showcase page and pathways
* The built-in default email

## Language codes

| Language | Code |
| - | - |
| English | `en` |
| Arabic (العربية) | `ar` |
| German (Deutsch) | `de` |
| Spanish (Español) | `es` |
| French (Français) | `fr` |
| Irish (Gaeilge) | `ga` |
| Hindi (हिन्दी) | `hi` |
| Italian (Italiano) | `it` |
| Korean (한국어) | `ko` |
| Portuguese (Português) | `pt` |
| Russian (Русский) | `ru` |
| Swahili (Kiswahili) | `sw` |
| Tamil (தமிழ்) | `ta` |
| Chinese (简体中文) | `zh-CN` |

## Use the API or an AI assistant

* [Issue Credential](https://thehyperstack.com/docs/api-guide/create-credential.md) and [Generate Credential](https://thehyperstack.com/docs/api-guide/generate-credential.md) take an optional `language`: a code such as `fr`, or a name such as `French`. Leave it out, or send it empty, for automatic. An unknown value returns `400` with `invalid_language`, and no credential is made.
* The [MCP server](https://thehyperstack.com/docs/api-guide/mcp-server.md#credential-languages) takes `language` on each row of `issue_credentials` and on `update_credential`.

## Limits

* AI can't translate a text longer than 12,000 characters. Write that translation yourself.
* Each team member can translate a limited number of times a minute and a day. Visitors' **Translate** buttons have their own limit. When a limit is reached, try again later.
* If a translation fails, nothing is saved. Click **Translate** again.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.