Setting the Language for Error Messages
Contents
MariaDB server error messages are by default in English. However, MariaDB server also supports error message localization in many different languages. Each supported language has its own version of the error message file called errmsg.sys
in a dedicated directory for that language.
Supported Languages for Error Messages
Error message localization is supported for the following languages:
- Bulgarian
- Chinese (from MariaDB 10.4.25, 10.5.16, 10.6.8, 10.7.4, 10.8.3)
- Czech
- Danish
- Dutch
- English
- Estonian
- French
- German
- Greek
- Hindi
- Hungarian
- Italian
- Japanese
- Korean
- Norwegian
- Norwegian-ny (Nynorsk)
- Polish
- Portuguese
- Romanian
- Russian
- Serbian
- Slovak
- Spanish
- Swedish
- Ukrainian
Setting the lc_messages
and lc_messages_dir
System Variables
The lc_messages and lc_messages_dir system variables can be used to set the server locale used for error messages.
The lc_messages system variable can be specified as a locale name. The language of the associated locale will be used for error messages. See Server Locales for a list of supported locales and their associated languages.
The lc_messages system variable is set to en_US
by default, which means that error messages are in English by default.
If the lc_messages
system variable is set to a valid locale name, but the server can't find an error message file for the language associated with the locale, then the default language will be used instead.
This system variable can be specified as command-line arguments to mysqld or it can be specified in a relevant server option group in an option file. For example:
[mariadb] ... lc_messages=fr_CA
The lc_messages system variable can also be changed dynamically with SET GLOBAL. For example:
SET GLOBAL lc_messages='fr_CA';
If a server has the lc_messages system variable set to the fr_CA
locale like the above example, then error messages would be in French. For example:
SELECT blah; ERROR 1054 (42S22): Champ 'blah' inconnu dans field list
The lc_messages_dir system variable can be specified either as the path to the directory storing the server's error message files or as the path to the directory storing the specific language's error message file.
The server initially tries to interpret the value of the lc_messages_dir
system variable as a path to the directory storing the server's error message files. Therefore, it constructs the path to the language's error message file by concatenating the value of the lc_messages_dir system variable with the language name of the locale specified by the lc_messages system variable .
If the server does not find the error message file for the language, then it tries to interpret the value of the lc_messages_dir system variable as a direct path to the directory storing the specific language's error message file.
This system variable can be specified as command-line arguments to mysqld or it can be specified in a relevant server option group in an option file.
For example, to specify the path to the directory storing the server's error message files:
[mariadb] ... lc_messages_dir=/usr/share/mysql/
Or to specify the path to the directory storing the specific language's error message file:
[mariadb] ... lc_messages_dir=/usr/share/mysql/french/
The lc_messages_dir
system variable can not be changed dynamically.
Setting the --language Option
The --language option can also be used to set the server's language for error messages, but it is deprecated. It is recommended to set the lc_messages system variable instead.
The --language option can be specified either as a language name or as the path to the directory storing the language's error message file. See Server Locales for a list of supported locales and their associated languages.
This option can be specified as command-line arguments to mysqld or it can be specified in a relevant server option group in an option file.
For example, to specify a language name:
[mariadb] ... language=french
Or to specify the path to the directory storing the language's error message file:
[mariadb] ... language=/usr/share/mysql/french/
Character Set
The character set that the error messages are returned in is determined by the character_set_results variable, which defaults to UTF8.