# Internationalization

Disagreement can translate command names, descriptions and other text using JSON translation files.

## Providing Translations

Use `disagreement.i18n.load_translations` to load a JSON file for a locale.

```python
from disagreement import i18n

i18n.load_translations("es", "path/to/es.json")
```

The JSON file should map translation keys to translated strings:

```json
{
  "greet": "Hola",
  "description": "Comando de saludo"
}
```

You can also set translations programmatically with `i18n.set_translations`.

## Using with Commands

Pass a `locale` argument when defining an `AppCommand` or using the decorators. The command name and description will be looked up using the loaded translations.

```python
@slash_command(name="greet", description="description", locale="es")
async def greet(ctx):
    await ctx.send(i18n.translate("greet", ctx.locale or "es"))
```

If a translation is missing the key itself is returned.
