Если вы используете несколько потоков, вы можете использовать gettext, если вы используете средства, связанные с локалью, указанные в POSIX.1-2008 (и реализованные в GLIBC 2.3). Ключевой функцией, которую вы бы использовали, является uselocale
, что немного похоже на setlocale
, но только для текущего потока.
Если вы используете Windows, то вам не повезло - MSVCRT не предоставляет эквивалент uselocale
, и я полагаю, что на этой платформе libintl эмулирует сам setlocale
, не потокобезопасным способом IIRC.