/** * Sets current (default) ICU locale * * @param loc new locale (a single character string) * @return nothing (\code{R_NilValue}) * * @version 0.1-?? (Marek Gagolewski) */ SEXP stri_locale_set(SEXP loc) { const char* qloc = stri__prepare_arg_locale(loc, "locale", false); /* this is R_alloc'ed */ UErrorCode status = U_ZERO_ERROR; uloc_setDefault(qloc, &status); STRI__CHECKICUSTATUS_RFERROR(status, {/* do nothing special on err */}) // error() allowed here return R_NilValue;
MojDb::MojDb() : m_purgeWindow(PurgeNumDaysDefault), m_loadStepSize(LoadStepSizeDefault), m_isOpen(false) { MojLogTrace(s_log); UErrorCode error; uloc_setDefault("en_US", &error); }
int cpp_main(int /*argc*/, char * /*argv*/[]) { #ifdef BOOST_HAS_ICU // // We need to set the default locale used by ICU, // otherwise some of our tests using equivalence classes fail. // UErrorCode err = U_ZERO_ERROR; uloc_setDefault("en", &err); if(err != U_ZERO_ERROR) { std::cerr << "Unable to set the default ICU locale to \"en\"." << std::endl; return -1; } #endif #ifdef TEST_THREADS try{ get_array_data(); // initialises data. } catch(const std::exception& e) { std::cerr << "TSS Initialisation failed with message: " << e.what() << std::endl; return -1; } std::list<boost::shared_ptr<boost::thread> > threads; for(int i = 0; i < 5; ++i) { try{ threads.push_back(boost::shared_ptr<boost::thread>(new boost::thread(&run_tests))); } catch(const std::exception& e) { std::cerr << "<note>Thread creation failed with message: " << e.what() << "</note>" << std::endl; } } std::list<boost::shared_ptr<boost::thread> >::const_iterator a(threads.begin()), b(threads.end()); while(a != b) { (*a)->join(); ++a; } #else run_tests(); #endif return error_count; }
// --------------------------------------------------------------------------- // Public Constructors and Destructor // --------------------------------------------------------------------------- ICUMsgLoader::ICUMsgLoader(const XMLCh* const msgDomain) :fLocaleBundle(0) ,fDomainBundle(0) { /*** Validate msgDomain ***/ if (!XMLString::equals(msgDomain, XMLUni::fgXMLErrDomain) && !XMLString::equals(msgDomain, XMLUni::fgExceptDomain) && !XMLString::equals(msgDomain, XMLUni::fgXMLDOMMsgDomain) && !XMLString::equals(msgDomain, XMLUni::fgValidityDomain) ) { XMLPlatformUtils::panic(PanicHandler::Panic_UnknownMsgDomain); } /*** Resolve domainName ***/ int index = XMLString::lastIndexOf(msgDomain, chForwardSlash); char* domainName = XMLString::transcode(&(msgDomain[index + 1]), XMLPlatformUtils::fgMemoryManager); ArrayJanitor<char> jan1(domainName, XMLPlatformUtils::fgMemoryManager); /*** Location resolution priority 1. XMLMsgLoader::getNLSHome(), set by user through XMLPlatformUtils::Initialize(), which provides user-specified location where the message loader shall retrieve error messages. 2. environment var: XERCESC_NLS_HOME 3. path $XERCESCROOT/msg ***/ char locationBuf[1024]; memset(locationBuf, 0, sizeof locationBuf); const char *nlsHome = XMLMsgLoader::getNLSHome(); if (nlsHome) { strcpy(locationBuf, nlsHome); strcat(locationBuf, U_FILE_SEP_STRING); } else { nlsHome = getenv("XERCESC_NLS_HOME"); if (nlsHome) { strcpy(locationBuf, nlsHome); strcat(locationBuf, U_FILE_SEP_STRING); } else { nlsHome = getenv("XERCESCROOT"); if (nlsHome) { strcpy(locationBuf, nlsHome); strcat(locationBuf, U_FILE_SEP_STRING); strcat(locationBuf, "msg"); strcat(locationBuf, U_FILE_SEP_STRING); } else { /*** leave it to ICU to decide where to search for the error message. ***/ setAppData(); } } } /*** Open the locale-specific resource bundle ***/ strcat(locationBuf, BUNDLE_NAME); UErrorCode err = U_ZERO_ERROR; uloc_setDefault("root", &err); // in case user-specified locale unavailable err = U_ZERO_ERROR; fLocaleBundle = ures_open(locationBuf, XMLMsgLoader::getLocale(), &err); if (!U_SUCCESS(err) || fLocaleBundle == NULL) { /*** in case user specified location does not work try the dll ***/ if (strcmp(locationBuf, BUNDLE_NAME) !=0 ) { setAppData(); err = U_ZERO_ERROR; fLocaleBundle = ures_open(BUNDLE_NAME, XMLMsgLoader::getLocale(), &err); if (!U_SUCCESS(err) || fLocaleBundle == NULL) { XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); } } else { XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); } } /*** Open the domain specific resource bundle within the locale-specific resource bundle ***/ err = U_ZERO_ERROR; fDomainBundle = ures_getByKey(fLocaleBundle, domainName, NULL, &err); if (!U_SUCCESS(err) || fDomainBundle == NULL) { XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); } }