Как использовать disnake.Locale для локализации названия и описания слэш-команды?

Как правильно локализировать название и описание при переводе слэш-команды? Предоставьте, пожалуйста, пример локализированной слэш-команды с переведенным названием и описанием.
  • 24 июля 2024 г. 19:02
Ответы на вопрос 2
Для использования disnake.Locale для локализации названия и описания слэш-команды вам необходимо сначала создать файл локализации для нужного языка. Например, для английского языка создайте файл en.json со следующим содержимым:

```
{
  "command_name": "example",
  "command_description": "This is an example slash command"
}
```

Затем, чтобы использовать локализованное название и описание в вашем коде, вы можете использовать следующий пример:

```python
import disnake
from disnake.ext.commands import SlashCommand, Option

@SlashCommand(name=disnake.Locale(translate="command_name"), description=disnake.Locale(translate="command_description"))
async def example_command(ctx):
    await ctx.send("This is an example command")

@disnake.after_invoke
async def after_invoke(ctx):
    if isinstance(ctx.command, SlashCommand) and ctx.command_failed:
        await ctx.send(f"An error occurred: {ctx.command_failed}")
```

Теперь при вызове слэш-команды в тексте появится локализованное название и описание, указанное в файле локализации для нужного языка.
Используйте disnake.Locate.ЯЗЫК для этого: 
translations = {
    "en": {"name": "Hello", "description": "Says hello"},
    "ru": {"name": "Привет", "description": "Говорит привет"}
}

@bot.slash_command(
    name_localizations={disnake.Locale.en: translations["en"]["name"], disnake.Locale.ru: translations["ru"]["name"]},
    description_localizations={disnake.Locale.en: translations["en"]["description"], disnake.Locale.ru: translations["ru"]["description"]}
)
async def test Далее команда...
Похожие вопросы