# About Copying Existing Bot Scenario

Kwizbot supports multilingualism, allowing creating scenarios for different languages. When creating a scenario in one language, you can translate it to other languages while preserving scenario structure and logic.

---

## Context and Problem

In many cases, you need to create multilingual scenarios:
- Different languages for different regions
- Content localization for better understanding
- Support for multiple languages in one bot
- Preserving structure during translation

Multilingualism solves this task by allowing creating scenarios for different languages while preserving structure and logic.

---

## Key Concepts

### Switching Between Languages

In the lower left corner of the scenario, there is an icon for switching between bot language versions. You can add/remove languages in bot settings.

### Translation Process

1. Create scenario in one language
2. Switch to the next bot language version
3. Make changes to corresponding blocks that need translation
4. Save the scenario

### Visual Indicators

- **Red color** — untranslated text in scenario blocks
- **Gray color** — translated text after filling fields
- **Empty fields** — when opening block editing in a new language version

---

## Approach Options

### Manual Translation vs Automatic Translation

**Manual Translation:**
- ✅ Pros: Accuracy, quality control, context consideration
- ❌ Cons: Slowness, requires language knowledge

**Automatic Translation:**
- ✅ Pros: Speed
- ❌ Cons: Possible errors, lack of context

**Why we use manual translation:**
Manual translation ensures better quality and context consideration, which is important for effective communication with users.

---

## Adopted Solutions

### What Needs to Be Translated

**Needs translation:**
- Message texts
- Button texts
- Block names (if used in messages)
- Text in action blocks (if contains text for user)

**Does not need translation:**
- Action block names
- JSON configurations (except text for user)
- Block aliases
- Technical parameters

### Using Placeholders

Placeholders (for example, `{{user_name}}`) work the same for all languages. You only need to translate text around placeholders.

---

## Implications for Users and Implementation

### For Integrators

When translating a scenario, it's important to:

1. **Check all blocks** — for presence of untranslated texts (red color)
2. **Translate text around placeholders** — preserving the placeholders themselves
3. **Preserve structure** — do not change logic and block aliases
4. **Check translation** — for correctness and context compliance

### Common Errors

**Error:** Some blocks are not translated  
**Problem:** Forgot to translate text in some blocks  
**Solution:** Check all blocks for red color and translate untranslated text

**Error:** Placeholders do not work after translation  
**Problem:** Accidentally deleted or changed placeholders  
**Solution:** Check preservation of placeholders in translated texts

**Error:** Scenario structure broke after translation  
**Problem:** Changed aliases or block structure  
**Solution:** Check preservation of aliases and structure during translation

---

## Usage Examples

### Translation with Placeholders

**Ukrainian version:**
```
Привіт, {{user_name}}! Як справи?
```

**English version:**
```
Hello, {{user_name}}! How are you?
```

### Automatic Language Detection

The system can automatically detect user language based on:
- Messenger settings
- User's first message
- Bot settings

---

## Related Documents

- **How-to:** [Add Translations](/en/scenariodialog/how-to/add-translations.md) — detailed instruction on adding translations

