Files
panel/docs/contributing/i18n.md
Amir2012 474d8d8b5e Improve docs grammar (#109)
* Improve docs grammar

* Update docs/features/oauth2-configuration.md

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-07-23 01:11:50 +03:00

4.2 KiB

sidebar_position, title
sidebar_position title
1 Localization

Remnawave is available in multiple languages. We use Crowdin to manage translations.

Currenly the following languages are available:

  • English
  • Chinese
  • Russian
  • Persian

:::warning

Please do not directly modify localization files in pull requests - they are meant to be edited only using Crowdin.

:::

How to contribute

First of all you need to join our Telegram group: Join link.

Ping admins in the group and ask them to add you to the project.

You will need a Crowdin account with a valid email address to join the project. One of the maintainers will invite you to the Crowdin team.

After that you can start translating the text.

How to translate

There are two options when it comes to making translations. Lets take a look at both.

Option 1: Translate in the Crowdin website

This is the simplest way to translate the text - you don't even need a running Remnawave instance.

  1. Go to Crowdin and login/create an account with your email address.
  2. Select your target language.
  3. Translate the text.
  4. Click the "Save" button.
  5. Wait for the translation to be approved.
  6. Approved translations will be automatically deployed to the dev-branch.

<img src={require('/contributing/i18n/i18n_1.webp').default} width="100%" style={{borderRadius: '8px'}} alt="First steps" />

Option 2: In-Context Translation

This one can be a little bit tricky.

You are going to need a running Remnawave dev-branch instance.

Check your docker-compose file to make sure you are using the dev branch image.

  remnawave:
    // highlight-next-line-green
    image: remnawave/backend:dev
    container_name: "remnawave"
    hostname: remnawave
    restart: always
    ports:
      - "127.0.0.1:3000:3000"
    env_file:
      - .env
    networks:
      - remnawave-network
    depends_on:
      remnawave-db:
        condition: service_healthy
      remnawave-redis:
        condition: service_healthy

Edit the .env file and add the following line:

IS_CROWDIN_EDITOR_ENABLED=true

:::warning

Before you start translating run "docker pull" to make sure you have the latest dev image.

:::

:::danger

This .env variable will work only with the dev-branch and it has no effect on the stable branch instances. :::

Restart the Remnawave container.

docker compose down && docker compose up -d && docker compose logs -f -t

Now open the panel in your browser and you will see something like this:

<img src={require('/contributing/i18n/i18n_2.webp').default} width="100%" style={{borderRadius: '8px'}} alt="First steps" />

Select the language you want to translate into and login to your Crowdin account. You will be redirected back to the panel.

<img src={require('/contributing/i18n/i18n_4.webp').default} width="100%" style={{borderRadius: '8px'}} alt="First steps" />

You might encounter this warning, skip it for now.

Login to Remnawave dashboard and in the language switcher select Crowdin.

<img src={require('/contributing/i18n/i18n_5.webp').default} width="100%" style={{borderRadius: '8px'}} alt="First steps" />

Now you can translate the text in the comfort of your browser.

<img src={require('/contributing/i18n/i18n_6.webp').default} width="100%" style={{borderRadius: '8px'}} alt="First steps" />

You can see borders on translated/untranslated text, click on it to edit.

<img src={require('/contributing/i18n/i18n_7.webp').default} width="100%" style={{borderRadius: '8px'}} alt="First steps" />

Don't forget to click Save to save your translations.

Issues

Infinite loading screen

<img src={require('/contributing/i18n/i18n_3.webp').default} width="100%" style={{borderRadius: '8px'}} alt="First steps" />

Sometimes you might encounter an infinite loading screen in the Crowdin iframe, as depicted above.

Currently there is no sure-fire way to fix this.

Possible workarounds:

  • Try using a vanilla Chrome browser without any extensions
  • Try to reload the page 5-10 times
  • Try to open the panel in a new tab (a few times)
  • Open Devtools (F12), navigate to the Network tab and check "Disable cache", then reload the page a couple of times