Internationalisation and language support¶
The i18n_manager module orchestrates multilingual support across all nodes
that operate with multiple locales. A locale represents the combination of a language
and geographical region, formatted according to established standards:
the ISO 639-1 language code,
followed by an underscore, then the
ISO 3166-1 alpha-2 region code.
Examples include en_US
(English, United States) and en_GB
(English, United Kingdom).
The i18n_manager
serves as the central coordinator for locale management, identifying which locales are universally
available across all internationalisation-capable nodes on the robot.
It provides a unified interface for switching the robot’s active locale,
automatically triggering the loading of appropriate language models across
all supporting modules.
The following components provide internationalisation support:
Depending on your robot, a self presentation such as task_self_presentation_ari module
Custom developed nodes with internationalisation capabilities. Implementation guidelines are provided in Translating your applications.
Note
Modules that are not running (either disabled or stopped) are excluded from locale management.
Consult the The startup process of the robot and application management documentation for guidance on how to configure the modules.
However, if you start a new node that supports internationalisation, it will automatically
be managed by the i18n_manager
, and will be updated the next time the user changes the locale.
A quick way to see the available locales, to check the current active locale and to change the locale is to use the 🚧 On-screen menu for robots equipped with displays. Just click on the top part of the screen and the banner will pop. Otherwise, you can use the instructions below.

Display interface¶
Discovering available locales¶
American English (en_US
) comes pre-installed on every robot. Additional
language support depends on the specific language packages included with your robot configuration.
For additional language requirements, contact PAL support.
Query the complete list of available locales using the service /i18n_manager/get_supported_locales:
$ ros2 service call /i18n_manager/get_supported_locales i18n_msgs/srv/GetLocales {}
This returns locales supported across all internationalisation-enabled nodes. Individual nodes may offer additional locale support beyond the common set. To examine node-specific locale availability, invoke the service within the respective node’s namespace. For instance, to query TTS engine locales:
$ ros2 service call /tts_engine/get_supported_locales i18n_msgs/srv/GetLocales {}
Retrieving the current locale¶
Query the active managed locale by accessing the /i18n_manager/current_system_locale parameter:
$ ros2 param get /i18n_manager current_system_locale
To check the locale of a specific node, get the default_locale
parameter of each of the nodes.
For example, to check the TTS engine locale:
$ ros2 param get /tts_engine default_locale
Note
You can also check the i18n_manager
Diagnostics to see the node status, including the
current locale for each of the nodes that support internationalisation.
Modifying the system locale¶
Programmatically change the system locale using the /i18n_manager/set_default_locale action. This operation attempts to update the locale across all internationalisation-capable nodes. The process continues even if specific nodes don’t support the requested locale, applying a timeout per node to ensure system responsiveness.
Terminal usage example:
$ ros2 action send_goal -f /i18n_manager/set_default_locale i18n_msgs/action/SetLocale "locale: ca_ES"
The system persists locale preferences in ~/.pal/config/00-last-used-locale.yml
,
which takes precedence over the default_system_locale
parameter during startup.
Individual node locales can be modified using the same action within the node’s namespace. For example, to update the TTS engine locale:
$ ros2 action send_goal -f /tts_engine/set_default_locale i18n_msgs/action/SetLocale "locale: ca_ES"
Note
For robots equipped with displays, access locale settings through the 🚧 On-screen menu.
See also¶
💬 Communication on PAL robots