00001 /*************************************************************************** 00002 * Copyright (C) 2005-2007 Stefan Schwarzer, Jens Schneider, * 00003 * Matthias Hardt, Guido Madaus * 00004 * * 00005 * Copyright (C) 2007-2008 BerLinux Solutions GbR * 00006 * Stefan Schwarzer & Guido Madaus * 00007 * * 00008 * Copyright (C) 2009-2013 BerLinux Solutions GmbH * 00009 * * 00010 * Authors: * 00011 * Stefan Schwarzer <stefan.schwarzer@diskohq.org>, * 00012 * Matthias Hardt <matthias.hardt@diskohq.org>, * 00013 * Jens Schneider <jens.schneider@diskohq.org>, * 00014 * Guido Madaus <guido.madaus@diskohq.org>, * 00015 * Patrick Helterhoff <patrick.helterhoff@diskohq.org>, * 00016 * René Bählkow <rene.baehlkow@diskohq.org> * 00017 * * 00018 * This library is free software; you can redistribute it and/or * 00019 * modify it under the terms of the GNU Lesser General Public * 00020 * License version 2.1 as published by the Free Software Foundation. * 00021 * * 00022 * This library is distributed in the hope that it will be useful, * 00023 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00025 * Lesser General Public License for more details. * 00026 * * 00027 * You should have received a copy of the GNU Lesser General Public * 00028 * License along with this library; if not, write to the * 00029 * Free Software Foundation, Inc., * 00030 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * 00031 **************************************************************************/ 00032 00033 #ifndef MMSTRANSLATOR_H_ 00034 #define MMSTRANSLATOR_H_ 00035 00036 #include <map> 00037 #include <string> 00038 #include <sigc++/sigc++.h> 00039 00040 #include "mmsconfig/mmsconfigdata.h" 00041 00042 #define TRANSLATION_FILE_NAME "translation" 00043 00044 class MMSTranslator { 00045 private: 00046 /** 00047 * This maps country codes (i.e. de for germany) to 00048 * an index for vectors in MMSTRANSLATION_FILES and 00049 * MMSTRANSLATION_MAP. 00050 */ 00051 //typedef std::map<std::string, int> MMSTRANSLATION_INDEX; 00052 typedef std::map<MMSLanguage, int> MMSTRANSLATION_INDEX; 00053 00054 /** 00055 * Vector containing all processed translation files. 00056 */ 00057 typedef std::vector<std::string> MMSTRANSLATION_FILES; 00058 00059 /** 00060 * Map that associates a string to translate to a vector 00061 * containing the translation of all processed languages. 00062 */ 00063 typedef std::map<std::string, vector<std::string> > MMSTRANSLATION_MAP; 00064 00065 //! first time MMSTranslator will be constructed? 00066 static bool firsttime; 00067 00068 static MMSLanguage sourcelang, targetlang; 00069 static int sourceIdx, targetIdx; 00070 static MMSTRANSLATION_INDEX transIdx; 00071 static MMSTRANSLATION_MAP transmap; 00072 static bool addtranslations; 00073 static MMSTRANSLATION_FILES files; 00074 00075 void loadTranslations(); 00076 void processFile(const string &file); 00077 void addMissing(const string &phrase, const bool completemiss = false); 00078 00079 public: 00080 MMSTranslator(); 00081 ~MMSTranslator(); 00082 00083 void translate(const std::string &source, std::string &dest); 00084 bool setTargetLang(MMSLanguage lang); 00085 MMSLanguage getTargetLang(); 00086 00087 static sigc::signal<void, MMSLanguage> onTargetLangChanged; 00088 }; 00089 00090 #endif /* MMSTRANSLATOR_H_ */