Locale API
The Locale API provides multi-language support with localized strings for the BlueBus user interface.
Supported languages
BlueBus supports 9 languages:
| Language | Code |
|---|
| English | 0 |
| German | 1 |
| French | 2 |
| Italian | 3 |
| Spanish | 4 |
| Polish | 5 |
| Russian | 6 |
| Swedish | 7 |
| Ukrainian | 8 |
The active language is stored in EEPROM at address CONFIG_SETTING_LANGUAGE_ADDRESS and can be changed through the vehicle menu system.
Functions
LocaleGetText
Returns localized text string for the current language.
char * LocaleGetText(uint16_t stringId);
String identifier constant (see String IDs below)
Pointer to localized string in current language
Example:
// Get localized "Settings" text
char *settingsText = LocaleGetText(LOCALE_STRING_SETTINGS);
// Display on UI
BMBTHeaderWriteText(bmbt, settingsText);
String IDs
String identifiers for localized text:
Menu and navigation
LOCALE_STRING_MAIN_MENU // "Main Menu"
LOCALE_STRING_MENU_MAIN // "Main"
LOCALE_STRING_MENU_DASHBOARD // "Dashboard"
LOCALE_STRING_BACK // "Back"
LOCALE_STRING_SETTINGS // "Settings"
LOCALE_STRING_ABOUT // "About"
Settings categories
LOCALE_STRING_SETTINGS_ABOUT // "About"
LOCALE_STRING_SETTINGS_AUDIO // "Audio Settings"
LOCALE_STRING_SETTINGS_CALLING // "Calling Settings"
LOCALE_STRING_SETTINGS_COMFORT // "Comfort Settings"
LOCALE_STRING_SETTINGS_UI // "UI Settings"
LOCALE_STRING_SETTINGS_TIME // "Time Settings"
LOCALE_STRING_SETTINGS_NAV // "Navigation Settings"
Bluetooth and audio
LOCALE_STRING_BLUETOOTH // "Bluetooth"
LOCALE_STRING_AUDIO // "Audio"
LOCALE_STRING_DEVICES // "Devices"
LOCALE_STRING_NO_DEVICE // "No Device"
LOCALE_STRING_CLEAR_PAIRINGS // "Clear Pairings"
LOCALE_STRING_PAIRING_OFF // "Pairing: Off"
LOCALE_STRING_PAIRING_ON // "Pairing: On"
LOCALE_STRING_NOT_PLAYING // "Not Playing"
LOCALE_STRING_UNKNOWN_ARTIST // "Unknown Artist"
LOCALE_STRING_UNKNOWN_TITLE // "Unknown Title"
Audio settings
LOCALE_STRING_AUTOPLAY_OFF // "Autoplay: Off"
LOCALE_STRING_AUTOPLAY_ON // "Autoplay: On"
LOCALE_STRING_DSP_DEFAULT // "DSP: Default"
LOCALE_STRING_DSP_ANALOG // "DSP: Analog"
LOCALE_STRING_DSP_DIGITAL // "DSP: Digital"
LOCALE_STRING_VOL_OFFSET // "Volume Offset"
LOCALE_STRING_VOLUME_NEG_DB // "Volume: -X dB"
LOCALE_STRING_VOLUME_POS_DB // "Volume: +X dB"
LOCALE_STRING_VOLUME_24_DB // "Volume: -24 dB"
LOCALE_STRING_VOLUME_0_DB // "Volume: 0 dB"
LOCALE_STRING_REV_VOL_LOW_ON // "Reverse Vol Lower: On"
LOCALE_STRING_REV_VOL_LOW_OFF // "Reverse Vol Lower: Off"
Telephony
LOCALE_STRING_CALLING // "Calling"
LOCALE_STRING_CALL // "Call"
LOCALE_STRING_HANDSFREE_OFF // "Handsfree: Off"
LOCALE_STRING_HANDSFREE_ON // "Handsfree: On"
LOCALE_STRING_MIC_GAIN // "Mic Gain"
LOCALE_STRING_MODE_DEFAULT // "Mode: Default"
LOCALE_STRING_MODE_TCU // "Mode: TCU"
LOCALE_STRING_MODE_NO_MUTE // "Mode: No Mute"
LOCALE_STRING_MODE_ANALOG // "Mode: Analog"
LOCALE_STRING_VOICE_ASSISTANT // "Voice Assistant"
Comfort features
LOCALE_STRING_COMFORT // "Comfort"
LOCALE_STRING_BLINKERS // "Blinkers"
LOCALE_STRING_LOCK_OFF // "Lock: Off"
LOCALE_STRING_LOCK_10KMH // "Lock: 10 km/h"
LOCALE_STRING_LOCK_20KMH // "Lock: 20 km/h"
LOCALE_STRING_UNLOCK_OFF // "Unlock: Off"
LOCALE_STRING_UNLOCK_POS_0 // "Unlock: Position 0"
LOCALE_STRING_UNLOCK_POS_1 // "Unlock: Position 1"
LOCALE_STRING_PARK_LAMPS_ON // "Park Lamps: On"
LOCALE_STRING_PARK_LAMPS_OFF // "Park Lamps: Off"
UI settings
LOCALE_STRING_UI // "UI"
LOCALE_STRING_LANG // "Language"
LOCALE_STRING_DASHBOARD // "Dashboard"
LOCALE_STRING_DASH_OBC_ON // "Dashboard OBC: On"
LOCALE_STRING_DASH_OBC_OFF // "Dashboard OBC: Off"
LOCALE_STRING_BMBT_OFF_ON // "Monitor Off: On"
LOCALE_STRING_BMBT_OFF_OFF // "Monitor Off: Off"
LOCALE_STRING_METADATA_OFF // "Metadata: Off"
LOCALE_STRING_METADATA_PARTY // "Metadata: Party"
LOCALE_STRING_METADATA_CHUNK // "Metadata: Chunk"
Temperature display
LOCALE_STRING_TEMPS_OFF // "Temps: Off"
LOCALE_STRING_TEMPS_COOLANT // "Temps: Coolant"
LOCALE_STRING_TEMPS_AMBIENT // "Temps: Ambient"
LOCALE_STRING_TEMPS_OIL // "Temps: Oil"
Time settings
LOCALE_STRING_TIME // "Time"
LOCALE_STRING_AUTOTIME // "Auto Time"
LOCALE_STRING_AUTOTIME_DST // "DST"
LOCALE_STRING_AUTOTIME_OFFSET // "Offset"
LOCALE_STRING_AUTOTIME_MANUAL // "Manual"
LOCALE_STRING_AUTOTIME_NOSIGNAL // "No Signal"
Navigation settings
LOCALE_STRING_NAV // "Navigation"
LOCALE_STRING_AUTOZOOM // "Auto Zoom"
LOCALE_STRING_NAV_MAP // "Map"
LOCALE_STRING_NAV_SILENT // "Silent"
LOCALE_STRING_NAV_RANGE // "Range"
LOCALE_STRING_PDC // "PDC"
About screen
LOCALE_STRING_FW // "Firmware"
LOCALE_STRING_SN // "Serial Number"
LOCALE_STRING_BUILT // "Built"
Common
LOCALE_STRING_ON // "On"
LOCALE_STRING_OFF // "Off"
LOCALE_STRING_DEFAULT // "Default"
LOCALE_STRING_AUTO // "Auto"
Constants
#define LOCALE_STRING_MAX_INDEX 87 // Maximum string ID
Usage example
// Build a settings menu with localized text
void BuildSettingsMenu() {
// Menu title
char *title = LocaleGetText(LOCALE_STRING_SETTINGS);
// Menu items
char *audio = LocaleGetText(LOCALE_STRING_SETTINGS_AUDIO);
char *calling = LocaleGetText(LOCALE_STRING_SETTINGS_CALLING);
char *comfort = LocaleGetText(LOCALE_STRING_SETTINGS_COMFORT);
char *ui = LocaleGetText(LOCALE_STRING_SETTINGS_UI);
// Display menu...
}
// Display current setting value
void DisplayAutoplaySetting(uint8_t enabled) {
char *text;
if (enabled) {
text = LocaleGetText(LOCALE_STRING_AUTOPLAY_ON);
} else {
text = LocaleGetText(LOCALE_STRING_AUTOPLAY_OFF);
}
DisplayText(text);
}
Translation coverage
All string IDs have translations for all 9 supported languages. Fallback to English occurs if a translation is missing.
Language can be changed at runtime through the vehicle menu system. The change takes effect immediately without requiring a restart.
See also