# 5. How to Manage Translations

Short UI elements—like button labels, menu items, and field names—are handled in **Settings &gt; Translations**. This section lets you review, edit, and add translations for all “labels” (internal identifiers) used throughout the CRM. Keeping these up to date ensures that every small piece of text in the interface is fully localized.

**Why Use Translations?**

1. **Consistent UI**: Make sure every button or menu item appears correctly in each active language.
2. **Rapid Updates**: Quickly fix typos or change wording without redeploying code.
3. **Custom Elements**: Add new labels (for custom development) and translate them for your users.

##### Viewing &amp; Searching Existing Translations

Go to ****⚙️ Settings** → **Translations**.** You’ll see a table with two main columns:  
**Label**: the internal key (e.g., `totalLeads`).  
**Text**: the currently translated string, along with language badges (`En`, `Bg`, etc.).

##### Editing a Translation

Click the **Edit** icon on the right of the row you want to update.

In the panel that appears:  
**Label** (read-only) shows which key you’re editing.  
**Languages** badges indicate which target languages have entries.  
**Text** field: enter or update the translated string for the selected language.

**Clone translations from** To copy all existing text from another language into your current locale (without translating), open the “Select” dropdown, pick the source language (e.g. English), and click **Clone**. This instantly duplicates those fields as-is.

**Translating flow** To programmatically generate translations, click **Translate** in the drawer header, then choose your provider (OpenAI, etc.) from the **Integration** dropdown. The system will pull translated strings and populate every field.

> **Tip:** Cloning and translating are independent—feel free to clone first and then auto-translate, or translate first and use cloning to reset individual entries.

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-594" dir="auto" id="bkmrk-you-aren%E2%80%99t-limited-t"></article>Click **Save** to apply the changes.  
**To easily search for elements**, use the **Search** field at the top to find a specific item. Typing part of a label filters the list in real time.

<p class="callout info">**Note**: Adding custom elements is intended for development purposes only. The translation object label should be added to the code by developers. Otherwise, if you add a label just with this functionality, it will not be displayed anywhere on the page.</p>

##### Cloning &amp; Translating with the Widget

To speed up localization, you can bulk-copy all strings from an existing language and even drive translations for specific integrations right from a single button:

**Open the translation drawer:** Go to **Settings → Translations**, click the ✏️ **Edit** icon on any row.  
The side-panel shows the **Label**, language badges, and a **Text** field.

**Clone translations from another language:** Click **Clone translation from** beneath the language badges.  
In the **Clone from** modal, select the source language (e.g. English → Spanish).  
Click **Clone** to populate the panel with every string from that language.  
Tweak any entries as needed, then hit **Save** to commit all at once.

**Use the unified “Translate” button: Translate** opens the modal with a top-level dropdown labeled **Integration**—but this actually lists your configured translation engines (e.g. OpenAI, Google Translate, DeepL).  
Select the engine you want (e.g. “OpenAI”).  
Click **Translate** to pull in its suggested strings for your current locale.  
As before, adjust any text in the drawer and press **Save** to store them.

##### Adding a New Translation

**To add a custom element:**

1. Click the +**Add Translation** button in the upper right corner.
2. In the **Add translation** panel:  
    **Label**: enter a unique key (e.g., `newButtonLabel`).  
    **Languages**: check each language you want to provide.  
    **Text**: fill in the translation for each selected language.
3. **Clone translations from** To copy all existing text from another language into your current locale (without translating), open the “Select” dropdown, pick the source language (e.g. English), and click **Clone**. This instantly duplicates those fields as-is.
4. **Translating flow** To programmatically generate translations, click **Translate** in the drawer header, then choose your provider (OpenAI, etc.) from the **Integration** dropdown. The system will pull translated strings and populate every field.
5. Click **Save**. The new label now appears in the table, ready to be referenced in code.

##### Deleting a Translation

Click the **Delete** (trash) icon on the row you wish to remove.  
Confirm the deletion in the prompt.

<p class="callout warning">You can also delete current items using the **Delete** icon. It is not recommended to delete items already defined in the system.</p>

##### Best Practices &amp; Conclusion

1. **Batch your changes:** When rolling out a new feature or language, edit multiple translations at once to maintain consistency.
2. **Coordinate with developers:** Ensure that any custom labels added here are actually referenced in the codebase.
3. **Review periodically:** As UI evolves, legacy labels may become obsolete—clean them up to keep the table manageable.

By centrally managing your short-text translations, you guarantee that every button, tooltip, and menu option in your CRM remains clear, accurate, and localized for all users.