> For the complete documentation index, see [llms.txt](https://vitrina-blogerov.gitbook.io/bloggers-showcase/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vitrina-blogerov.gitbook.io/bloggers-showcase/product-docs/product-docs-en/localization/working-with-multiple-language-versions.md).

# Working with multiple language versions

Bloggers Bot Platform allows you to run several language versions on one server and one domain. At the same time, each version remains independent.

{% hint style="success" %}
One server and one domain provide convenient infrastructure. Separate databases, bots, settings, and administrators give independence for each market.
{% endhint %}

### General diagram

```mermaid
flowchart TD
    A["Domain example.com"] --> B["Caddy edge"]
    B --> C["/bloggers/ru/"]
    B --> D["/bloggers/en/"]
    B --> E["/bloggers/zh/"]
    B --> F["/bloggers/ar/"]
    C --> C1["RU backend + bot + db"]
    D --> D1["EN backend + bot + db"]
    E --> E1["ZH backend + bot + db"]
    F --> F1["AR backend + bot + db"]
```

A single folder is used on the server:

```
/opt/bloggers_platform/
```

Inside it are the shared edge layer and separate applications:

```
/opt/bloggers_platform/edge
/opt/bloggers_platform/apps/ru
/opt/bloggers_platform/apps/en
/opt/bloggers_platform/apps/zh
/opt/bloggers_platform/apps/ar
```

### What is shared and what is separate

{% tabs %}
{% tab title="Shared" %}
The shared items are the domain, Caddy on ports `80` and `443`, the language selection or automatic detection page, error pages, the shared content management utility, and the shared uninstall script.
{% endtab %}

{% tab title="Separate" %}
For each version, the backend, Telegram bot, PostgreSQL database, Docker volume, `.env`, assets, content, AI settings, administrators, bot users, and channel settings are started separately.
{% endtab %}
{% endtabs %}

### Installing a new version

One installation adds or updates one language version.

The installer asks for:

* version language;
* domain;
* login and password of the first administrator;
* Telegram bot token;
* installation token.

After that, the installer downloads the required archive, creates `.env`, starts the containers, initializes the database, creates the administrator, and configures the Telegram bot button.

{% hint style="info" %}
If there are already other languages on the server, they remain separate. The shared edge config is updated to take the newly installed version into account.
{% endhint %}

### Team's daily work

The team logs into the admin panel of the required version and works only with its data.

Example:

```
https://example.com/bloggers/en/admin
```

From this admin panel, the team manages the English bloggers database, English AI prompts, the English Telegram bot, and the settings of the English market.

<details>

<summary>How to switch between markets</summary>

To manage another version, you need to open its separate address. For example, `/bloggers/ru/admin` for the Russian version, or `/bloggers/ar/admin` for the Arabic one.

Going to another admin panel means working with another database and other settings.

</details>

### Transferring content between versions

The command used for transfer is:

```bash
sudo /opt/bloggers_platform/content.sh
```

The tool can export content from one version and import it into another.

Temporary backups are created before import. This reduces the risk of data loss if the transfer is performed incorrectly.

{% hint style="warning" %}
The transfer replaces the content tables of the target version. Before importing, it is important to make sure that the correct source and the correct target version are selected.
{% endhint %}

### What is transferred

When content is transferred, the following are copied:

* categories;
* tags;
* bloggers;
* blogger-tag links;
* social networks and metrics;
* AI search settings;
* safe storefront and bot settings;
* related files from `assets`, if they are used in the content.

Content is transferred without automatic translation.

### What is not transferred

The following are not copied:

* administrators;
* Telegram bot users;
* Telegram bot token;
* channel ID or link;
* JWT settings;
* database secrets;
* secret AI API keys.

{% hint style="success" %}
This protects the access credentials and private data of each version. Even after content transfer, the language versions remain independent.
{% endhint %}

### Recommended process for a new market

1. Install a new language version.
2. Check that it opens at its own address.
3. Choose a content setup scenario: manually, via content transfer, or via catalog base transfer.
4. Adapt the texts, prices, prompts, and media for the market.
5. Check the Telegram bot, AI selection, channel, and list of administrators.

<details>

<summary>What to check after transfer</summary>

Check card texts, categories, tags, prices, market currency expectations, AI prompts, Telegram bot messages, publication channel, and list of administrators.

</details>

### Practical meaning

Several language versions make it possible to run an international platform without mixing data.

Each market can develop at its own pace, with its own team, its own bot, its own catalog, and its own communications.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://vitrina-blogerov.gitbook.io/bloggers-showcase/product-docs/product-docs-en/localization/working-with-multiple-language-versions.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
