LocalizationConfiguration Cluster

Cluster ID: 0x002B  |  Endpoint: Endpoint 0 (Root / Node level)

LocalizationConfiguration manages the device's language and regional settings. It enables the controller (App / voice assistant) to query which languages the device supports and switch the device's current language locale. Language tags follow the BCP 47 standard (e.g. "en-US", "zh-CN").

This Cluster is very simple — only 2 attributes, no commands. Language switching is done by directly writing the ActiveLocale attribute.

When to Use

When users switch device language in the App (e.g. changing a door lock's voice prompts from English to Chinese), they are writing a new ActiveLocale value to this Cluster. It can also be used to automatically set the device language to match the phone's system language after commissioning.

Attribute Overview

LocalizationConfiguration has only two attributes, both mandatory. Click an attribute ID to jump to its detailed description.

ID Name Type Access Description
0x00 ActiveLocale string Read/Write Currently active language locale (BCP 47 tag)
0x01 SupportedLocales list<string> Read-only List of all language locales supported by the device

ActiveLocale (Current Language Region)

The device's currently active language locale tag, in BCP 47 format (e.g. "en-US", "zh-CN"). Writing a new value switches the device language, but the written value must be in the SupportedLocales list; otherwise the device will return CONSTRAINT_ERROR.

BCP 47 Tag Format

BCP 47 language tags consist of a language code and an optional region code, connected by a hyphen. Common examples:

  • en-US — English (United States)
  • zh-CN — Simplified Chinese (Mainland China)
  • zh-TW — Traditional Chinese (Taiwan)
  • ja-JP — Japanese (Japan)
  • de-DE — German (Germany)

Write example (switching device to Simplified Chinese):

{
  "writeRequests": [{
    "attributePath": {
      "endpointId": 0,
      "clusterId": "0x002B",
      "attributeId": "0x00"        // ActiveLocale
    },
    "attributeValue": "zh-CN"      // Switch to Simplified Chinese
  }]
}

SupportedLocales (Supported Language List)

Read-only attribute, returning the list of all language locale tags supported by the device. List content is determined by device firmware; Apps cannot modify it. Before switching languages, read this attribute first to confirm the device supports the target language.

Note

Support lists vary widely across devices. Low-cost devices may only support one language ["en-US"], while high-end devices may support over a dozen. Always check this list before switching languages to avoid errors from writing unsupported values.

Commands

LocalizationConfiguration Cluster does not define any commands. All operations are done through direct attribute reads/writes — read SupportedLocales to check supported languages, write ActiveLocale to switch language. This is one of the simplest interaction patterns in Matter.

Example Data

Reading LocalizationConfiguration Cluster attributes of a smart door lock device:

{
  // --- Attributes ---
  "0x0": "en-US",           // ActiveLocale = current language locale
  "0x1": [                  // SupportedLocales = device supported language list
    "en-US",
    "zh-CN",
    "zh-TW",
    "ja-JP",
    "ko-KR",
    "de-DE",
    "fr-FR"
  ]
}

Real-world Scenarios

Scenario 1: Automatically Set Device Language After Commissioning

After device commissioning, the App automatically aligns the device language with the phone's system language, avoiding manual setup:

  1. Get the phone's system language (e.g. "zh-CN")
  2. Read the device's SupportedLocales attribute to get the supported list
  3. Check if the system language is in the supported list:
    • Exact match takes priority ("zh-CN")
    • If no exact match, try language prefix matching (any item starting with "zh")
    • If neither matches, keep the device's default language without modification
  4. After a successful match, Write to ActiveLocale to complete the switch
Scenario 2: App Language Settings UI

Provide a "Language Settings" option on the device details page for manual language selection:

  1. Enter the device language settings page, read SupportedLocales to render the options list
  2. Read ActiveLocale to mark the currently selected item
  3. After the user selects a new language, Write to ActiveLocale
  4. Refresh UI after successful write; if CONSTRAINT_ERROR is returned, notify the user that the language is not supported

It is recommended to convert BCP 47 tags to user-readable language names (e.g. display "zh-CN" as "Simplified Chinese"), instead of showing raw tags directly.

Developer Advice

LocalizationConfiguration affects the device's own language behavior (e.g. voice prompts, screen display text), not the App's UI language. After switching, the device may need a few seconds to load internal language resources, during which the device behavior may briefly remain in the old language.