diff --git a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp index 0a8170944894c7649e99b382bdc7a9d39a9b4b90..5ee88ee4c26b131a011bd0005378d8031b961421 100644 --- a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp +++ b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.8 2002/12/02 21:58:43 peiyongz + * nls support + * * Revision 1.7 2002/11/12 17:27:12 tng * DOM Message: add new domain for DOM Messages. * @@ -140,27 +143,38 @@ MsgCatalogLoader::MsgCatalogLoader(const XMLCh* const msgDomain) XMLPlatformUtils::panic(XMLPlatformUtils::Panic_UnknownMsgDomain); } - // Try to get the module handle - char* tempLoc = setlocale(LC_ALL, ""); - char catfile[1024]; - - memset(catfile, 0, sizeof catfile); + // Prepare the path info + char catpath[1024]; + memset(catpath, 0, sizeof catpath); char *nlsHome = getenv("XERCESC_NLS_HOME"); - if (nlsHome) { - strcpy(catfile, nlsHome); - strcat(catfile, "/msg/"); + strcpy(catpath, nlsHome); + strcat(catpath, "/msg/"); } - strcat(catfile, "XMLMessages.cat"); + // Prepare user-specified locale specific cat file + char catuser[1024]; + memset(catuser, 0, sizeof catuser); + strcpy(catuser, catpath); + strcat(catuser, "XMLMessages_"); + strcat(catuser, XMLMsgLoader::getLocale()); + strcat(catuser, ".cat"); + + char catdefault[1024]; + memset(catdefault, 0, sizeof catdefault); + strcpy(catdefault, catpath); + strcat(catdefault, "XMLMessages_en_US.cat"); - fCatalogHandle = catopen(catfile , 0); - if ((int)fCatalogHandle == -1) + /** + * To open user-specified locale specific cat file + * and default cat file if necessary + */ + if ( ((int)(fCatalogHandle=catopen(catuser, 0)) == -1) && + ((int)(fCatalogHandle=catopen(catdefault, 0)) == -1) ) { // Probably have to call panic here - printf("Could not open catalog XMLMessages\n"); - // TBD: Tell user what the locale is + printf("Could not open catalog:\n %s\n or %s\n", catuser, catdefault); exit(1); }