X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FConfig%2FConfig_Translator.cpp;h=e9764a5be99aada81a9204e743568a74996d9248;hb=06e7f5859095193fc7f498bd89a7d28009794f53;hp=f21e8f6486dbe3eade7dda6ad7f9f189a649e3ad;hpb=69ed966e5a75e545b5e9ae71499fd08790819484;p=modules%2Fshaper.git diff --git a/src/Config/Config_Translator.cpp b/src/Config/Config_Translator.cpp index f21e8f648..e9764a5be 100644 --- a/src/Config/Config_Translator.cpp +++ b/src/Config/Config_Translator.cpp @@ -1,8 +1,21 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: Config_Translator.cpp -// Created: 31 May 2016 -// Author: Vitaly SMETANNIKOV +// Copyright (C) 2014-2023 CEA, EDF +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #include "Config_Translator.h" #include "Config_XMLReader.h" @@ -11,18 +24,35 @@ #include #include +#ifdef WIN32 +#pragma warning(disable : 4996) // for sprintf +#endif + +// LCOV_EXCL_START +/** + * \class Config_TSReader + * \ingroup Config + * \brief Class for reading translations from TS files (an XML format). + */ class Config_TSReader : public Config_XMLReader { public: + /// Constructor + /// \param theTSFile name of TS file Config_TSReader(const std::string& theTSFile) : Config_XMLReader(theTSFile) {} + /// Returns content of TS file const Config_Translator::Translator& translator() const { return myTranslator; } + /// Returns codecs defined in TS files + const Config_Translator::Dictionary& codecs() const { return myCodecs; } + protected: /// Overloaded method. Defines how to process each node virtual void processNode(xmlNodePtr theNode); private: Config_Translator::Translator myTranslator; + Config_Translator::Dictionary myCodecs; }; void Config_TSReader::processNode(xmlNodePtr theNode) @@ -35,6 +65,7 @@ void Config_TSReader::processNode(xmlNodePtr theNode) aName = ""; } else if (isNode(theNode, "name", NULL)) { aName = getContent(theNode); + myCodecs[aName] = encoding(); } else if (isNode(theNode, "message", NULL)) { aSource = ""; } else if (isNode(theNode, "source", NULL)) { @@ -50,6 +81,8 @@ void Config_TSReader::processNode(xmlNodePtr theNode) //****************************************************************************** //****************************************************************************** Config_Translator::Translator Config_Translator::myTranslator; +Config_Translator::Dictionary Config_Translator::myCodecs; + #ifdef _DEBUG #ifdef MISSED_TRANSLATION Config_Translator::Translator Config_Translator::myMissed; @@ -78,18 +111,23 @@ bool Config_Translator::load(const std::string& theFileName) } } + const Dictionary aCodecs = aReader.codecs(); + Dictionary::const_iterator aDictIt; + for (aDictIt = aCodecs.cbegin(); aDictIt != aCodecs.cend(); aDictIt++) { + myCodecs[aDictIt->first] = aDictIt->second; + } return true; } +// LCOV_EXCL_STOP -std::string Config_Translator::translate(std::shared_ptr theInfo) +std::string Config_Translator::translate(const Events_InfoMessage& theInfo) { - std::string aContext = theInfo->context(); - std::string aMessage = theInfo->message(); - std::list aParameters = theInfo->parameters(); + std::string aContext = theInfo.context(); + std::string aMessage = theInfo.messageString(); + std::list aParameters = theInfo.parameters(); return translate(aContext, aMessage, aParameters); } - std::string insertParameters(const std::string& theString, const std::list& theParams) { std::string aResult = theString; @@ -99,7 +137,7 @@ std::string insertParameters(const std::string& theString, const std::list& theParams) { if (myTranslator.count(theContext) > 0) { @@ -121,7 +159,8 @@ std::string Config_Translator::translate(const std::string& theContext, if (theParams.size() > 0) { aTranslation = insertParameters(aTranslation, theParams); } - return aTranslation; + if (aTranslation.size() > 0) + return aTranslation; } } std::string aMsg = theMessage; @@ -136,6 +175,18 @@ std::string Config_Translator::translate(const std::string& theContext, return aMsg; } +// LCOV_EXCL_START +std::string Config_Translator::codec(const std::string& theContext) +{ + return (myCodecs.count(theContext) > 0)? myCodecs[theContext] : "UTF-8"; +} + +std::string Config_Translator::codec(const Events_InfoMessage& theInfo) +{ + return codec(theInfo.context()); +} +// LCOV_EXCL_STOP + #ifdef _DEBUG #ifdef MISSED_TRANSLATION void Config_Translator::saveMissedTranslations() @@ -152,7 +203,7 @@ void Config_Translator::saveMissedTranslations() std::ofstream oFStream; // Delete old file - int aa = remove(aFile.c_str()); + remove(aFile.c_str()); oFStream.open(aFile, std::ofstream::out | std::ofstream::app); if (oFStream.is_open()) {