# Custom Translations

Custom Translations allow you to personalize the text displayed across your Tebex store to better match your branding or support additional languages. Whether you're localizing your store or simply rewording interface strings, this feature gives you control over most of the platform's messaging.

> ⚠️ **Note:** Not all parts of the store are accessible via translation files. For full control, we recommend using a custom template.

***

### Why Use Custom Translations?

* Support a language that isn't included in the default 30+ languages.
* Modify key phrases like **“Thank you for your purchase”** to align with your tone.
* Adjust placeholder-based messages (e.g., `:username`) for clarity or brevity.

***

### How Translation Files Work

Translation files are written in **JSON** and include two main sections:

#### 1. `meta` object

Describes the locale and rules:

| Field        | Description                                                |
| ------------ | ---------------------------------------------------------- |
| `locale`     | Language/region code (e.g., `fr_FR`, `en_GB`)              |
| `pluralrule` | Rule for plural handling (see below)                       |
| `name`       | Display name for the translation file (Control Panel only) |

#### 2. `translations` object

Contains **key-value pairs** where the **key** is the original English string, and the **value** is your translated or customized version.

***

#### Sample Translation File

```json
jsonCopyEdit{
  "meta": {
    "locale": "fr_FR",
    "pluralrule": "plural=(n > 1)",
    "name": "French Custom"
  },
  "translations": {
    "Welcome": "Salut"
  }
}
```

***

### How Plurals Are Handled

The `pluralrule` field controls how plural forms are interpreted for the selected locale. Most users should:

1. Download a standard translation file (e.g., `fr_FR.json`)
2. Copy the `pluralrule` from that file into your custom version

📘 [View](https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html) the full list of plural rules

***

### Creating Your Custom File

1. Download a standard translation file (e.g., `en_US.json`) from your Control Panel.
2. Open the file using a plain text editor such as **Notepad++**.
3. Modify the `meta` values:
   * Change the locale (e.g., `en_GB`)
   * Update the `name` for internal reference
4. Add your desired string overrides inside the `translations` object.

#### Example:

```json
jsonCopyEdit{
  "meta": {
    "locale": "en_GB",
    "pluralrule": "plural=(n != 1)",
    "name": "English Custom"
  },
  "translations": {
    "Welcome": "Hey there!",
    "Thank you for your purchase": "Thanks for supporting us",
    "Gift this package": "Gift this to a friend"
  }
}
```

***

### Using Placeholders

Some strings include **placeholders**, such as `:username` or `:amount`.

#### Example:

```json
jsonCopyEdit{
  ":username has been banned from this webstore": ":username is banned"
}
```

> ⚠️ **Do not remove placeholders** from your translations. They must remain in the correct position to avoid breaking messages.

***

### Uploading Your Custom Translation

Once your file is complete:

1. Return to **Webstore → Translations** in the Control Panel.
2. Scroll to **Custom Translations**.
3. Upload your `.json` file.

Your custom translations will override the default messages wherever applicable.

***

### Tips

* Use valid JSON syntax—missing commas or brackets will prevent the file from uploading.
* Only include strings you want to override; all other default strings will remain unchanged.
* If a translation key changes due to platform updates, you’ll need to update your file manually.

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tebex.io/creators/tebex-control-panel/webstore/translations-and-languages/custom-translations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
