Command Palette

Search for a command to run...

Packs de langues des présences

Ajoutez des traductions facultatives et typées aux textes d'activité Discord.

Un système runtime distinct

Les packs traduisent les textes envoyés à Discord, comme « Regarde une vidéo » ou « Parcourt Figma ». Ils sont distincts des langues prises en charge pour les métadonnées et les libellés des paramètres.

Les packs sont facultatifs. Une présence sans dossier locales continue d'utiliser ses textes TypeScript inline exactement comme avant.

Structure des fichiers

Une présence localisée fournit les trois dictionnaires runtime :

TEXT
locales/
├── en-US.json
├── fr-FR.json
└── es-ES.json

Chaque fichier doit être un objet JSON plat avec les mêmes clés et uniquement des chaînes. `en-US.json` sert de référence et de repli. Le build rejette le JSON invalide, les locales manquantes, les fichiers inconnus, les valeurs non textuelles et les clés divergentes.

{ "watchingVideo": "Regarde {title}" }

Autocomplétion typée

import type enUS from "./locales/en-US.json"

const locale = await presence.getStrings<typeof enUS>()
const title = document.title

await presence.setActivity({
  details: presence.formatString(locale.watchingVideo, { title }),
})

L'import de type fournit l'autocomplétion dans l'IDE et rejette les clés inconnues sans intégrer le JSON au bundle. Aucune génération de types n'est nécessaire.

Les valeurs dynamiques utilisent des placeholders {name} dans le JSON et presence.formatString(template, params) dans le code.

L'utilisateur peut choisir une langue d'activité globale ou une langue différente pour chaque présence localisée.