22#include <osl/file.hxx>
32#include <com/sun/star/lang/XServiceInfo.hpp>
33#include <com/sun/star/linguistic2/XNumberText.hpp>
35#include <osl/thread.h>
37#include <Numbertext.hxx>
40using namespace ::
cppu;
54class NumberText_Impl :
public ::cppu::WeakImplHelper<XNumberText, XServiceInfo>
56 Numbertext m_aNumberText;
59 virtual ~NumberText_Impl()
override {}
60 void EnsureInitialized();
64 NumberText_Impl(
const NumberText_Impl&) =
delete;
65 NumberText_Impl& operator=(
const NumberText_Impl&) =
delete;
73 virtual OUString SAL_CALL getNumberText(
const OUString& aText,
74 const ::css::lang::Locale& rLocale)
override;
75 virtual css::uno::Sequence<css::lang::Locale> SAL_CALL getAvailableLanguages()
override;
79NumberText_Impl::NumberText_Impl()
80 : m_bInitialized(false)
84void NumberText_Impl::EnsureInitialized()
91 m_bInitialized =
true;
96 osl::FileBase::getSystemPathFromFileURL(aURL, aPhysPath);
99 const rtl_TextEncoding eEnc = RTL_TEXTENCODING_UTF8;
102 const rtl_TextEncoding eEnc = osl_getThreadTextEncoding();
105 m_aNumberText.set_prefix(std::string(path));
108OUString SAL_CALL NumberText_Impl::getNumberText(
const OUString& rText,
const Locale& rLocale)
114 OUString aCode(aLanguageTag.getLanguage());
115 OUString aCountry(aLanguageTag.getCountry());
116 OUString aScript(aLanguageTag.getScript());
117 if (!aScript.isEmpty())
118 aCode +=
"-" + aScript;
119 if (!aCountry.isEmpty())
120 aCode +=
"-" + aCountry;
123 std::wstring sResult(o3tl::toW(rText.getStr()));
126 std::wstring sResult = Numbertext::string2wstring(std::string(aInput));
128 bool result = m_aNumberText.numbertext(sResult, std::string(aLangCode));
131 OUString aResult(o3tl::toU(sResult));
133 OUString aResult = OUString::fromUtf8(Numbertext::wstring2string(sResult));
138uno::Sequence<Locale> SAL_CALL NumberText_Impl::getAvailableLanguages()
142 Sequence<css::lang::Locale> aRes;
146OUString SAL_CALL NumberText_Impl::getImplementationName()
148 return "com.sun.star.lingu2.NumberText";
151sal_Bool SAL_CALL NumberText_Impl::supportsService(
const OUString& ServiceName)
156Sequence<OUString> SAL_CALL NumberText_Impl::getSupportedServiceNames()
158 return {
"com.sun.star.linguistic2.NumberText" };
161extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
163 css::uno::Sequence<css::uno::Any>
const&)
165 return cppu::acquire(
new NumberText_Impl());
#define DBG_ASSERT(sCon, aError)
css::uno::Sequence< OUString > getSupportedServiceNames()
OUString getImplementationName()
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * lingucomponent_NumberText_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
static std::mutex & GetNumberTextMutex()