Question: I want to use gettext for i18n. But I need to translate messeges to a different languages. Is it possible to specify a locale for a one gettext call?

Answer: 
If you use multiple threads then you can use gettext if you use the locale-related facilities specified in POSIX.1-2008 (and implemented in GLIBC 2.3). The key function you would use is [`uselocale`](http://pubs.opengroup.org/onlinepubs/9699919799/functions/uselocale.html), which is a bit like `setlocale` but for the current thread only.

If you are using Windows then you are out of luck--MSVCRT does not provide an equivalent to `uselocale`, and I believe on that platform libintl emulates `setlocale` itself, in a non-thread-safe way IIRC.
> 
> I want to use gettext for i18n. But I need to translate messeges to a different languages. 
> 
> 
> 

If your application is single threaded you may switch locale, otherwise you can't use
gettext library for this purpose.

> 
> Is it possible to specify a locale for a one gettext call?
> 
> 
> 

You may use Unofficial Boost library [Boost.Locale](http://cppcms.sourceforge.net/boost_locale/html/) that supports gettext message catalogs. But it is `C++` only.