Kaydet (Commit) 3bac2853 authored tarafından László Németh's avatar László Németh

tdf#117171 support localized page number numbering styles

in ordinal and cardinal number names and ordinal indicators.

Change-Id: I35fa9c5c31b31f112ac0bb7feb5d310daca819e1
Reviewed-on: https://gerrit.libreoffice.org/54553Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarLászló Németh <nemeth@numbertext.org>
üst ce005c88
......@@ -131,7 +131,7 @@ public:
SwPageNumberFieldType();
OUString Expand( SvxNumType nFormat, short nOff, sal_uInt16 const nPageNumber,
sal_uInt16 const nMaxPage, const OUString& ) const;
sal_uInt16 const nMaxPage, const OUString&, LanguageType = LANGUAGE_NONE ) const;
void ChangeExpansion( SwDoc* pDoc,
bool bVirtPageNum, const SvxNumType* pNumFormat );
virtual SwFieldType* Copy() const override;
......
......@@ -221,7 +221,7 @@ enum SwDateTimeSubType {
};
/// General tools.
OUString FormatNumber(sal_uInt32 nNum, SvxNumType nFormat);
OUString FormatNumber(sal_uInt32 nNum, SvxNumType nFormat, LanguageType nLang = LANGUAGE_NONE);
/** Instances of SwFields and those derived from it occur 0 to n times.
For each class there is one instance of the associated type class.
......
......@@ -106,7 +106,7 @@ SwPageNumberFieldType::SwPageNumberFieldType()
OUString SwPageNumberFieldType::Expand( SvxNumType nFormat, short nOff,
sal_uInt16 const nPageNumber, sal_uInt16 const nMaxPage,
const OUString& rUserStr ) const
const OUString& rUserStr, LanguageType nLang ) const
{
SvxNumType nTmpFormat = (SVX_NUM_PAGEDESC == nFormat) ? m_nNumberingType : nFormat;
int const nTmp = nPageNumber + nOff;
......@@ -117,7 +117,7 @@ OUString SwPageNumberFieldType::Expand( SvxNumType nFormat, short nOff,
if( SVX_NUM_CHAR_SPECIAL == nTmpFormat )
return rUserStr;
return FormatNumber( nTmp, nTmpFormat );
return FormatNumber( nTmp, nTmpFormat, nLang );
}
SwFieldType* SwPageNumberFieldType::Copy() const
......@@ -189,22 +189,22 @@ OUString SwPageNumberField::Expand() const
if( PG_NEXT == m_nSubType && 1 != m_nOffset )
{
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), 1, m_nPageNumber, m_nMaxPage, m_sUserStr);
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), 1, m_nPageNumber, m_nMaxPage, m_sUserStr, GetLanguage());
if (!sRet.isEmpty())
{
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), m_nOffset, m_nPageNumber, m_nMaxPage, m_sUserStr);
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), m_nOffset, m_nPageNumber, m_nMaxPage, m_sUserStr, GetLanguage());
}
}
else if( PG_PREV == m_nSubType && -1 != m_nOffset )
{
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), -1, m_nPageNumber, m_nMaxPage, m_sUserStr);
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), -1, m_nPageNumber, m_nMaxPage, m_sUserStr, GetLanguage());
if (!sRet.isEmpty())
{
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), m_nOffset, m_nPageNumber, m_nMaxPage, m_sUserStr);
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), m_nOffset, m_nPageNumber, m_nMaxPage, m_sUserStr, GetLanguage());
}
}
else
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), m_nOffset, m_nPageNumber, m_nMaxPage, m_sUserStr);
sRet = pFieldType->Expand(static_cast<SvxNumType>(GetFormat()), m_nOffset, m_nPageNumber, m_nMaxPage, m_sUserStr, GetLanguage());
return sRet;
}
......
......@@ -433,7 +433,7 @@ SwField * SwField::CopyField() const
}
/// expand numbering
OUString FormatNumber(sal_uInt32 nNum, SvxNumType nFormat)
OUString FormatNumber(sal_uInt32 nNum, SvxNumType nFormat, LanguageType nLang)
{
if(SVX_NUM_PAGEDESC == nFormat)
return OUString::number( nNum );
......@@ -442,7 +442,11 @@ OUString FormatNumber(sal_uInt32 nNum, SvxNumType nFormat)
OSL_ENSURE(nFormat != SVX_NUM_NUMBER_NONE, "wrong number format" );
aNumber.SetNumberingType(nFormat);
return aNumber.GetNumStr(nNum);
if (nLang == LANGUAGE_NONE)
return aNumber.GetNumStr(nNum);
else
return aNumber.GetNumStr(nNum, LanguageTag::convertToLocale(nLang));
}
SwValueFieldType::SwValueFieldType(SwDoc *const pDoc, SwFieldIds const nWhichId)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment