Boost logo

Boost Users :

Subject: [Boost-users] [boost.locale] Conversion exception when generator class object extracts locale class object for russian utf-8 strings
From: NtVisigoth (ntvisigoth_at_[hidden])
Date: 2012-07-05 15:46:00


Hello, everyone!

When using boost::locale with the russian language of the string in UTF-8
encoding I get an error while getting the locale.
An exception with the message e.what(): "Conversion failed" is thrown

My code is not very different from that in the examples:

#define TR(S) boost::locale::translate(S).str()**const std
::string strDefaultLangId( "en" );**int main( int argc, char * argv[] )**{**
    using namespace std;** using namespace boost::locale;** int
exitCode = EXIT_SUCCESS;** try** {** generator gen;**
        gen.add_messages_path("g:\\source\\boost_locale\\languages\\");**
        gen.add_messages_domain("messages");** std
::string language( argc == 2 ? argv[1] : strDefaultLangId.c_str() );**
        std::locale loc = gen( language );** locale::global( loc );**
        std::wstring s = TR(L"hello world");** wcout << s << endl;**
    }** catch( exception& e )** {** cout << "Error : "
<< e.what() << endl;** exitCode = EXIT_FAILURE;** }** catch
( ... )** {** cout << "Unknown error" << endl;**
        exitCode = EXIT_FAILURE;** }** return exitCode;**}

The path to the file with the russian
language: "g:\source\boost_locale\languages\ru\LC_MESSAGES\messages.mo"

What could be wrong?
* Is it necessary to use any backends?
* Is it yet necessary to call imbue on the stream? But I'd like avoid it
because I am going to write the log using glog.



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net