---
title: "Language manager"
description: "Review translation contexts and immediate, debounced, and bulk write boundaries."
canonical: https://docs.ordering.co/docs/products/dashboard/settings/language-manager/
---

# Language manager

Use **Language manager** to review and update translation keys and text for a selected product context. This is a live content-management tool: changing a translation can affect language shown to users of the relevant product.

> **Availability**
>
> Language manager is available to Dashboard administrators from **Settings** > **Language manager**. It is different from the separate **Languages** feature that can appear when the project configuration exposes it.

## Choose the language and product context

1. Open **Settings** and select **Language manager**.
2. If the product selector is shown, choose the product context you intend to review.
3. If the language selector is shown, choose the language whose translation text you want to review.
4. Use **Search** to find a loaded key or its text.
5. Choose the list or spreadsheet view according to the task.

Available product contexts vary with project configuration, enabled add-ons, and available app/site types. Website and API are always available in the reviewed interface; other products can be conditional. The language selector is shown only when the current project returns more than one enabled language.

![Language manager showing a product selector, language selector, search, and translation table](https://docs.ordering.co/img/docs/dashboard/settings/language-manager-overview.jpg)

> **Context selector boundary**
>
> The product and language selectors choose the records loaded for this editor. This screen does not expose default-language, enable/disable-language, create-language, or delete-language controls.

## Existing translation records

List view renders a **Key** and editable **Text** for each returned record. Search filters the already-loaded key and text/value data in the client.

> **Edits save automatically**
>
> For an existing row, the table uses a debounced update after an input change and then passes that record to the translation update controller. This debounce does not describe the creation flow; there is no final Save button or preview transaction for an existing row.

Spreadsheet view classifies edited rows as additions or updates and sends them to the bulk-translations path. Its existing-key column is read-only, but the grid is not a staging-only surface.

## Creation and prefix behavior

List view exposes **Add new key**. For a creation row, clicking outside after a nonempty change invokes its create path; the API may still reject an incomplete key/value pair. In product-context mode the controller adds an uppercase product prefix when absent and sends `version: v2` with the selected product. This is an immediate-write boundary, not a draft workflow.

## Product and language gates

- Website and API contexts are enabled in the fixed UI source.
- Customer App, Dashboard, Business App, Driver App, Kiosk App, and franchise contexts can be conditional on the returned project configuration and enabled add-ons.
- The separate language selector appears only when the current project returns more than one enabled language.

The available add-ons, sites, apps, languages, and translations depend on the project's configuration. Check the options shown in the target project before changing language settings.

## Available actions

Language Manager supports individual updates and creation, plus bulk updates and additions. It does not provide a delete action. Translation values may contain unpublished copy, URLs, placeholders, identifiers, or sensitive text.

---

**Related guides:** [Settings logs](https://docs.ordering.co/docs/products/dashboard/settings/settings-logs/) · [Platform settings](https://docs.ordering.co/docs/products/dashboard/settings/platform-settings/)

## Language manager capabilities

#### 🛠️ Step-by-Step Instructions:

1. **Access:** In the side panel, go to **Settings** and click **Language manager** (1).

2. **Product Selection:** Use the dropdown menu (2) to select the specific app or product you wish to modify (for example, _Customer App, Website, Dashboard_).

3. **Search:** Use the search bar (3) to find an existing variable by its technical name (**Key**) or by the current **Text** it displays.

4. **Add New Variable:** If the text you need doesn't exist yet, click on **+ Add new key** (4).

5. **Assign Key:** In the **Key** column (5), enter the technical name for the variable (e.g., ORDERING\_APP\_YOUR\_ORDER\_RECEIVED).

- _Tip: Use uppercase and underscores for consistency._

1. **Assign Text:** In the **Text** column (6), type the actual message or phrase that users will see on the screen.

![Screenshot](https://docs.ordering.co/assets/images/b4bee3a25dca8b3e7e9524c8-998af35a12ee5db8aab81718a58f9f42.png)

---

#### ✍️ Important Notes:

- **Existing translation:** Editing an existing row uses the debounced update path; there is no final **Save** button.

- **New key:** Clicking outside a creation row after a nonempty change invokes the create path. An incomplete key/value pair can still be rejected.

- **Language Selection:** Double-check that you have the correct language selected (top right, next to the search bar) before making any edits.

---

#### 💡 Best Practices:

- **Case Sensitivity:** Usually, system keys are case-sensitive; it's best to follow the existing naming convention.

- **Testing:** Use an approved verification appropriate to the affected product. A refresh alone does not establish propagation or confirm how the text renders.
