Skip to content

Localization (i18n)

Fresh

Supported Languages

LanguageFile
Chinese (Simplified)zh_CN.json
Chinese (Traditional)zh_TW.json (SD 6.8+)
Germande.json
Englishen.json
Frenchfr.json
Japaneseja.json
Koreanko.json
Spanishes.json

File Structure

Place JSON files in the .sdPlugin root:

*.sdPlugin/
├── de.json
├── en.json
├── es.json
├── fr.json
├── ja.json
├── ko.json
├── zh_CN.json
├── zh_TW.json
└── manifest.json

Localizable Manifest Fields

LevelFields
RootName, Description
ActionsName, Tooltip
EncoderLongTouch, Push, Rotate, Touch
StatesName

SOP: Add Localization

Step 1: Define Defaults in Manifest

json
{
  "Name": "Volume Controller",
  "Description": "Control your audio volume",
  "Actions": [{
    "UUID": "com.example.volume.adjust",
    "Name": "Volume control",
    "Tooltip": "Control your volume"
  }]
}

Step 2: Create Language Files

Example de.json (German):

json
{
  "Name": "Lautstarkeregler",
  "Description": "Kontrolle der Audiolautstarke",
  "com.example.volume.adjust": {
    "Name": "Lautstarkeregelung",
    "Tooltip": "Kontrollieren Sie Ihre Lautstarke",
    "States": [
      { "Name": "Stummschaltung aufheben" },
      { "Name": "Stumm" }
    ],
    "Encoder": {
      "TriggerDescription": {
        "LongTouch": "Stumm",
        "Push": "Stummschaltung umschalten",
        "Rotate": "Anpassen",
        "Touch": "Stummschaltung umschalten"
      }
    }
  }
}

Step 3: Add Custom Strings

Add a Localization object for plugin-specific strings:

json
{
  "Localization": {
    "More info": "Weitere Informationen",
    "Save": "Speichern",
    "Reset": "Zurucksetzen"
  }
}

Step 4: Access in Code

typescript
import streamDeck from "@elgato/streamdeck";

streamDeck.i18n.translate("More info");
// "More info"

streamDeck.i18n.translate("More info", "de");
// "Weitere Informationen"

streamDeck.i18n.translate("More info", "es");
// "More info" (falls back — no es.json defined)

Resolution Behavior

When a language file is missing or doesn't contain a key, Stream Deck falls back to manifest values. Language-specific JSON files override manifest entries.