27#include <com/sun/star/i18n/Transliteration.hpp>
34TransliterationWrapper::TransliterationWrapper(
35 const Reference< XComponentContext > & rxContext,
37 : xTrans( Transliteration::
create(rxContext) ),
42TransliterationWrapper::~TransliterationWrapper()
46OUString TransliterationWrapper::transliterate(
const OUString& rStr,
LanguageType nLang,
47 sal_Int32 nStart, sal_Int32 nLen,
48 Sequence <sal_Int32>* pOffset )
55 loadModuleIfNeeded( nLang );
58 sRet = xTrans->transliterate( rStr, nStart, nLen, *pOffset );
60 sRet = xTrans->transliterateString2String( rStr, nStart, nLen);
70OUString TransliterationWrapper::transliterate(
const OUString& rStr,
71 sal_Int32 nStart, sal_Int32 nLen )
const
73 OUString sRet( rStr );
78 sRet = xTrans->transliterateString2String( rStr, nStart, nLen);
88bool TransliterationWrapper::needLanguageForTheMode()
const
90 return TransliterationFlags::UPPERCASE_LOWERCASE ==
nType ||
91 TransliterationFlags::LOWERCASE_UPPERCASE ==
nType ||
92 TransliterationFlags::IGNORE_CASE ==
nType ||
93 TransliterationFlags::SENTENCE_CASE ==
nType ||
94 TransliterationFlags::TITLE_CASE ==
nType ||
95 TransliterationFlags::TOGGLE_CASE ==
nType;
98void TransliterationWrapper::setLanguageLocaleImpl(
LanguageType nLang )
102 aLanguageTag.reset( nLang);
107 bool bLoad = bFirstCall;
110 if(
nType == TransliterationFlags::SENTENCE_CASE )
113 loadModuleByImplName(
"SENTENCE_CASE", nLang);
115 else if(
nType == TransliterationFlags::TITLE_CASE )
118 loadModuleByImplName(
"TITLE_CASE", nLang);
120 else if(
nType == TransliterationFlags::TOGGLE_CASE )
123 loadModuleByImplName(
"TOGGLE_CASE", nLang);
127 if( aLanguageTag.getLanguageType() != nLang )
129 setLanguageLocaleImpl( nLang );
131 bLoad = needLanguageForTheMode();
138void TransliterationWrapper::loadModuleImpl()
const
146 xTrans->loadModule(
static_cast<TransliterationModules
>(
nType), aLanguageTag.getLocale() );
156void TransliterationWrapper::loadModuleByImplName(
const OUString& rModuleName,
161 setLanguageLocaleImpl( nLang );
162 css::lang::Locale aLocale( aLanguageTag.getLocale());
167 xTrans->loadModuleByImplName( rModuleName, aLocale );
177bool TransliterationWrapper::equals(
178 const OUString& rStr1, sal_Int32 nPos1, sal_Int32 nCount1, sal_Int32& nMatch1,
179 const OUString& rStr2, sal_Int32 nPos2, sal_Int32 nCount2, sal_Int32& nMatch2 )
const
186 return xTrans->equals( rStr1, nPos1, nCount1, nMatch1, rStr2, nPos2, nCount2, nMatch2 );
195sal_Int32 TransliterationWrapper::compareString(
const OUString& rStr1,
const OUString& rStr2 )
const
202 return xTrans->compareString( rStr1, rStr2 );
213bool TransliterationWrapper::isEqual(
const OUString& rStr1,
const OUString& rStr2 )
const
215 sal_Int32 nMatch1(0), nMatch2(0);
216 bool bMatch = equals(
217 rStr1, 0, rStr1.getLength(), nMatch1,
218 rStr2, 0, rStr2.getLength(), nMatch2 );
222bool TransliterationWrapper::isMatch(
const OUString& rStr1,
const OUString& rStr2 )
const
224 sal_Int32 nMatch1(0), nMatch2(0);
226 rStr1, 0, rStr1.getLength(), nMatch1,
227 rStr2, 0, rStr2.getLength(), nMatch2 );
228 return (nMatch1 <= nMatch2) && (nMatch1 == rStr1.getLength());
#define TOOLS_WARN_EXCEPTION(area, stream)
#define LANGUAGE_DONTKNOW
css::uno::Reference< css::deployment::XPackageRegistry > create(css::uno::Reference< css::deployment::XPackageRegistry > const &xRootRegistry, OUString const &context, OUString const &cachePath, css::uno::Reference< css::uno::XComponentContext > const &xComponentContext)