1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/Language.cc
12 #include "zypp/Language.h"
13 #include "zypp/TranslatedText.h"
14 #include "zypp/CapFactory.h"
16 ///////////////////////////////////////////////////////////////////
18 { /////////////////////////////////////////////////////////////////
20 ///////////////////////////////////////////////////////////////////
22 { /////////////////////////////////////////////////////////////////
24 ///////////////////////////////////////////////////////////////////
26 // CLASS NAME : LanguageImpl
28 /** Exposition only. */
29 class LanguageImpl : public LanguageImplIf
32 LanguageImpl( const Locale & locale_r )
37 virtual TranslatedText summary() const
38 { return TranslatedText( _locale.name() ); }
40 virtual TranslatedText description() const
46 ///////////////////////////////////////////////////////////////////
49 /////////////////////////////////////////////////////////////////
51 ///////////////////////////////////////////////////////////////////
54 IMPL_PTR_TYPE(Language);
58 ///////////////////////////////////////////////////////////////////
60 // METHOD NAME : Language::Language
63 Language::Language( const NVRAD & nvrad_r )
64 : ResObject( TraitsType::kind, nvrad_r )
67 ///////////////////////////////////////////////////////////////////
69 // METHOD NAME : Language::~Language
75 Language::Ptr Language::installedInstance( const Locale & locale_r )
77 static std::map<Locale,Ptr> _ptrmap;
78 Ptr ret( _ptrmap[locale_r] );
81 detail::ResImplTraits<detail::LanguageImpl>::Ptr langImpl( new detail::LanguageImpl( locale_r ) );
82 NVRAD dataCollect( locale_r.code() );
84 if ( locale_r.country().hasCode() )
86 // Recommend fallback Language
87 Locale fallback( locale_r.fallback() );
88 if ( fallback != Locale::noCode )
89 dataCollect[Dep::RECOMMENDS].insert( CapFactory().parse( ResTraits<Language>::kind, fallback.code() ) );
92 ret = _ptrmap[locale_r] = detail::makeResolvableFromImpl( dataCollect, langImpl );
97 Language::Ptr Language::availableInstance( const Locale & locale_r )
99 static std::map<Locale,Ptr> _ptrmap;
100 Ptr ret( _ptrmap[locale_r] );
103 detail::ResImplTraits<detail::LanguageImpl>::Ptr langImpl( new detail::LanguageImpl( locale_r ) );
104 NVRAD dataCollect( locale_r.code() );
106 if ( locale_r.country().hasCode() )
108 // Recommend fallback Language
109 Locale fallback( locale_r.fallback() );
110 if ( fallback != Locale::noCode )
111 dataCollect[Dep::RECOMMENDS].insert( CapFactory().parse( ResTraits<Language>::kind, fallback.code() ) );
114 ret = _ptrmap[locale_r] = detail::makeResolvableFromImpl( dataCollect, langImpl );
119 /////////////////////////////////////////////////////////////////
121 ///////////////////////////////////////////////////////////////////