00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00012 #ifndef ZYPP_TRANSLATEDTEXT_H 00013 #define ZYPP_TRANSLATEDTEXT_H 00014 00015 #include <iosfwd> 00016 #include <map> 00017 #include <list> 00018 #include <set> 00019 #include <string> 00020 00021 #include "zypp/base/PtrTypes.h" 00022 #include "zypp/Locale.h" 00023 00025 namespace zypp 00026 { 00027 00029 // 00030 // CLASS NAME : TranslatedText 00031 // 00034 class TranslatedText 00035 { 00036 friend std::ostream & operator<<( std::ostream & str, const TranslatedText & obj ); 00037 00038 public: 00040 class Impl; 00041 00042 public: 00044 TranslatedText(); 00046 explicit 00047 TranslatedText(const std::string &text, const Locale &lang = Locale()); 00049 explicit 00050 TranslatedText(const std::list<std::string> &text, const Locale &lang = Locale()); 00052 ~TranslatedText(); 00053 00055 bool empty() const ; 00056 00058 static const TranslatedText notext; 00059 00060 public: 00061 00063 std::string asString( const Locale &lang = Locale() ) const 00064 { return text(lang); } 00065 00066 std::string text( const Locale &lang = Locale() ) const; 00067 std::set<Locale> locales() const; 00068 00069 void setText( const std::string &text, const Locale &lang = Locale()); 00070 void setText( const std::list<std::string> &text, const Locale &lang = Locale()); 00071 00072 Locale detectLanguage() const; 00073 00074 private: 00076 RWCOW_pointer<Impl> _pimpl; 00077 }; 00079 00081 inline std::ostream & operator<<( std::ostream & str, const TranslatedText & obj ) 00082 { return str << obj.asString(); } 00083 00085 } // namespace zypp 00087 #endif // ZYPP_TRANSLATEDTEXT_H