include/svl/zformat.hxx        |    7 +++++-
 svl/source/numbers/zformat.cxx |   45 ++++++++++++++++++++++-------------------
 2 files changed, 31 insertions(+), 21 deletions(-)

New commits:
commit e0a16e33158104630c93d59840b6c08d266069ce
Author:     Caolán McNamara <[email protected]>
AuthorDate: Tue Feb 17 09:14:00 2026 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Sat Feb 21 01:05:51 2026 +0100

    bubble an explicit SvNFLanguageData through Imp*Fill functions
    
    Change-Id: Ia3a646e9a2f6e8d0dddfe5c4df3fb8bba51a8053
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199834
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Jenkins

diff --git a/include/svl/zformat.hxx b/include/svl/zformat.hxx
index 5113d96cf0f6..1ebacf39cec3 100644
--- a/include/svl/zformat.hxx
+++ b/include/svl/zformat.hxx
@@ -636,6 +636,7 @@ private:
     // append string symbols, insert leading 0 or ' ', or ...
     SVL_DLLPRIVATE bool ImpNumberFill(
                     const NativeNumberWrapper& rNatNum,
+                    const SvNFLanguageData& rCurrentLang,
                     OUStringBuffer& sStr,
                     double& rNumber,
                     sal_Int32& k,
@@ -648,6 +649,7 @@ private:
     // Helper function to fill in the integer part and the group (AKA 
thousand) separators
     SVL_DLLPRIVATE bool ImpNumberFillWithThousands(
                                  const NativeNumberWrapper& rNatNum,
+                                 const SvNFLanguageData& rCurrentLang,
                                  OUStringBuffer& sStr,
                                  double& rNumber,
                                  sal_Int32 k,
@@ -659,7 +661,8 @@ private:
 
     // Helper function to fill in the group (AKA thousand) separators
     // or to skip additional digits
-    SVL_DLLPRIVATE void ImpDigitFill( OUStringBuffer& sStr,
+    SVL_DLLPRIVATE void ImpDigitFill( const SvNFLanguageData& rCurrentLang,
+                                      OUStringBuffer& sStr,
                                       sal_Int32 nStart,
                                       sal_Int32& k,
                                       sal_uInt16 nIx,
@@ -667,6 +670,7 @@ private:
                                       utl::DigitGroupingIterator & ) const;
 
     SVL_DLLPRIVATE bool ImpDecimalFill(const NativeNumberWrapper& rNatNum,
+                                 const SvNFLanguageData& rCurrentLang,
                                  OUStringBuffer& sStr,
                                  double& rNumber,
                                  sal_Int32 nDecPos,
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index 98744e5faaf8..3b587ffc5a98 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -2798,7 +2798,7 @@ bool SvNumberformat::ImpGetScientificOutput(double 
fNumber,
     }
 
     // restore leading zeros or blanks according to format '0' or '?' 
tdf#156449
-    bRes |= ImpNumberFill(rNatNum, ExpStr, fNumber, k, j, nIx, 
NF_SYMBOLTYPE_EXP, bStarFlag);
+    bRes |= ImpNumberFill(rNatNum, GetCurrentLanguageData(), ExpStr, fNumber, 
k, j, nIx, NF_SYMBOLTYPE_EXP, bStarFlag);
 
     bool bCont = true;
 
@@ -2830,7 +2830,7 @@ bool SvNumberformat::ImpGetScientificOutput(double 
fNumber,
     }
     else
     {
-        bRes |= ImpDecimalFill(rNatNum, sStr, fNumber, nDecPos, j, nIx, false, 
bStarFlag);
+        bRes |= ImpDecimalFill(rNatNum, GetCurrentLanguageData(), sStr, 
fNumber, nDecPos, j, nIx, false, bStarFlag);
     }
 
     if (bSign)
@@ -2996,7 +2996,7 @@ bool SvNumberformat::ImpGetFractionOutput(double fNumber,
     sal_uInt16 j = nCnt-1; // Last symbol -> backwards
     sal_Int32 k;           // Denominator
 
-    bRes |= ImpNumberFill(rNatNum, sDiv, fNumber, k, j, nIx, 
NF_SYMBOLTYPE_FRAC, bStarFlag, true);
+    bRes |= ImpNumberFill(rNatNum, GetCurrentLanguageData(), sDiv, fNumber, k, 
j, nIx, NF_SYMBOLTYPE_FRAC, bStarFlag, true);
 
     bool bCont = true;
     if (rInfo.nTypeArray[j] == NF_SYMBOLTYPE_FRAC)
@@ -3027,7 +3027,7 @@ bool SvNumberformat::ImpGetFractionOutput(double fNumber,
     }
     else
     {
-        bRes |= ImpNumberFill(rNatNum, sFrac, fNumber, k, j, nIx, 
NF_SYMBOLTYPE_FRACBLANK, bStarFlag);
+        bRes |= ImpNumberFill(rNatNum, GetCurrentLanguageData(), sFrac, 
fNumber, k, j, nIx, NF_SYMBOLTYPE_FRACBLANK, bStarFlag);
         bCont = false;  // there is no integer part?
         if (rInfo.nTypeArray[j] == NF_SYMBOLTYPE_FRACBLANK)
         {
@@ -3072,7 +3072,7 @@ bool SvNumberformat::ImpGetFractionOutput(double fNumber,
     else
     {
         k = sStr.getLength(); // After last figure
-        bRes |= ImpNumberFillWithThousands(rNatNum, sStr, fNumber, k, j, nIx,
+        bRes |= ImpNumberFillWithThousands(rNatNum, GetCurrentLanguageData(), 
sStr, fNumber, k, j, nIx,
                                            rInfo.nCntPre, bStarFlag);
     }
     if (bSign && (nFrac != 0 || fNum != 0.0))
@@ -4511,7 +4511,7 @@ bool SvNumberformat::ImpGetNumberOutput(double fNumber,
                                         // Edit backwards:
     j = NumFor[nIx].GetCount()-1;       // Last symbol
                                         // Decimal places:
-    bRes |= ImpDecimalFill(rNatNum, sStr, fNumber, nDecPos, j, nIx, bInteger, 
bStarFlag);
+    bRes |= ImpDecimalFill(rNatNum, GetCurrentLanguageData(), sStr, fNumber, 
nDecPos, j, nIx, bInteger, bStarFlag);
     if (bSign)
     {
         sStr.insert(0, '-');
@@ -4521,6 +4521,7 @@ bool SvNumberformat::ImpGetNumberOutput(double fNumber,
 }
 
 bool SvNumberformat::ImpDecimalFill(const NativeNumberWrapper& rNatNum,
+                                   const SvNFLanguageData& rCurrentLang,
                                    OUStringBuffer& sStr,  // number string
                                    double& rNumber,       // number
                                    sal_Int32 nDecPos,     // decimals start
@@ -4620,12 +4621,12 @@ bool SvNumberformat::ImpDecimalFill(const 
NativeNumberWrapper& rNatNum,
                 break;
             } // of case digi
             case NF_KEY_CCC: // CCC currency
-                sStr.insert(k, rScan.GetCurAbbrev());
+                sStr.insert(k, rCurrentLang.GetCurAbbrev());
                 break;
             case NF_KEY_GENERAL: // Standard in the String
             {
                 OUStringBuffer sNum;
-                ImpGetOutputStandard(rNumber, sNum, rNatNum, 
GetCurrentLanguageData());
+                ImpGetOutputStandard(rNumber, sNum, rNatNum, rCurrentLang);
                 sNum.stripStart('-');
                 sStr.insert(k, sNum);
                 break;
@@ -4637,13 +4638,14 @@ bool SvNumberformat::ImpDecimalFill(const 
NativeNumberWrapper& rNatNum,
         } // of while
     } // of decimal places
 
-    bRes |= ImpNumberFillWithThousands(rNatNum, sStr, rNumber, k, j, nIx, // 
Fill with . if needed
+    bRes |= ImpNumberFillWithThousands(rNatNum, rCurrentLang, sStr, rNumber, 
k, j, nIx, // Fill with . if needed
                                        rInfo.nCntPre, bStarFlag, bFilled );
 
     return bRes;
 }
 
 bool SvNumberformat::ImpNumberFillWithThousands( const NativeNumberWrapper& 
rNatNum,
+                                                 const SvNFLanguageData& 
rCurrentLang,
                                                  OUStringBuffer& sBuff,  // 
number string
                                                  double& rNumber,       // 
number
                                                  sal_Int32 k,           // 
position within string
@@ -4660,7 +4662,7 @@ bool SvNumberformat::ImpNumberFillWithThousands( const 
NativeNumberWrapper& rNat
     const ImpSvNumberformatInfo& rInfo = NumFor[nIx].Info();
     // no normal thousands separators if number divided by thousands
     bool bDoThousands = (rInfo.nThousand == 0);
-    utl::DigitGroupingIterator aGrouping( 
GetCurrentLanguageData().GetLocaleData()->getDigitGrouping());
+    utl::DigitGroupingIterator aGrouping( 
rCurrentLang.GetLocaleData()->getDigitGrouping());
 
     while (!bStop) // backwards
     {
@@ -4782,18 +4784,18 @@ bool SvNumberformat::ImpNumberFillWithThousands( const 
NativeNumberWrapper& rNat
                 if (nDigitCount == nDigCnt && k > 0)
                 {
                     // more digits than specified
-                    ImpDigitFill(sBuff, 0, k, nIx, nDigitCount, aGrouping);
+                    ImpDigitFill(rCurrentLang, sBuff, 0, k, nIx, nDigitCount, 
aGrouping);
                 }
             }
             break;
         }
         case NF_KEY_CCC: // CCC currency
-            sBuff.insert(k, rScan.GetCurAbbrev());
+            sBuff.insert(k, rCurrentLang.GetCurAbbrev());
             break;
         case NF_KEY_GENERAL: // "General" in string
         {
             OUStringBuffer sNum;
-            ImpGetOutputStandard(rNumber, sNum, rNatNum, 
GetCurrentLanguageData());
+            ImpGetOutputStandard(rNumber, sNum, rNatNum, rCurrentLang);
             sNum.stripStart('-');
             sBuff.insert(k, sNum);
             break;
@@ -4807,12 +4809,13 @@ bool SvNumberformat::ImpNumberFillWithThousands( const 
NativeNumberWrapper& rNat
     k = k + nLeadingStringChars;    // MSC converts += to int and then warns, 
so ...
     if (k > nLeadingStringChars)
     {
-        ImpDigitFill(sBuff, nLeadingStringChars, k, nIx, nDigitCount, 
aGrouping);
+        ImpDigitFill(rCurrentLang, sBuff, nLeadingStringChars, k, nIx, 
nDigitCount, aGrouping);
     }
     return bRes;
 }
 
-void SvNumberformat::ImpDigitFill(OUStringBuffer& sStr,     // number string
+void SvNumberformat::ImpDigitFill(const SvNFLanguageData& rCurrentLang,
+                                  OUStringBuffer& sStr,     // number string
                                   sal_Int32 nStart,         // start of digits
                                   sal_Int32 & k,            // position within 
string
                                   sal_uInt16 nIx,           // subformat index
@@ -4821,7 +4824,7 @@ void SvNumberformat::ImpDigitFill(OUStringBuffer& sStr,   
  // number string
 {
     if (NumFor[nIx].Info().bThousand) // Only if grouping fill in separators
     {
-        const OUString& rThousandSep = 
GetCurrentLanguageData().GetNumThousandSep();
+        const OUString& rThousandSep = rCurrentLang.GetNumThousandSep();
         while (k > nStart)
         {
             if (nDigitCount == rGrouping.getPos())
@@ -4840,6 +4843,7 @@ void SvNumberformat::ImpDigitFill(OUStringBuffer& sStr,   
  // number string
 }
 
 bool SvNumberformat::ImpNumberFill( const NativeNumberWrapper& rNatNum,
+                                    const SvNFLanguageData& rCurrentLang,
                                     OUStringBuffer& sBuff, // number string
                                     double& rNumber,       // number for 
"General" format
                                     sal_Int32& k,          // position within 
string
@@ -4925,13 +4929,13 @@ bool SvNumberformat::ImpNumberFill( const 
NativeNumberWrapper& rNatNum,
         }
         break;
         case NF_KEY_CCC:                // CCC currency
-            sBuff.insert(k, rScan.GetCurAbbrev());
+            sBuff.insert(k, rCurrentLang.GetCurAbbrev());
             break;
         case NF_KEY_GENERAL: // Standard in the String
         {
             OUStringBuffer sNum;
             bFoundNumber = true;
-            ImpGetOutputStandard(rNumber, sNum, rNatNum, 
GetCurrentLanguageData());
+            ImpGetOutputStandard(rNumber, sNum, rNatNum, rCurrentLang);
             sNum.stripStart('-');
             sBuff.insert(k, sNum);
         }
commit f09dc5451ea0d82a10e869e8084951c719630822
Author:     Caolán McNamara <[email protected]>
AuthorDate: Tue Feb 17 08:46:19 2026 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Sat Feb 21 01:05:41 2026 +0100

    bubble an explicit SvNFLanguageData through ImpGetLogicalOutput
    
    Change-Id: I1e591e56da85f15a19cadb51496f56415ff277fb
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199832
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Caolán McNamara <[email protected]>

diff --git a/include/svl/zformat.hxx b/include/svl/zformat.hxx
index e3bbe5a3bd39..5113d96cf0f6 100644
--- a/include/svl/zformat.hxx
+++ b/include/svl/zformat.hxx
@@ -736,6 +736,7 @@ private:
     SVL_DLLPRIVATE bool ImpGetLogicalOutput( double fNumber,
                                              sal_uInt16 nIx,
                                              const NativeNumberWrapper& 
rNatNum,
+                                             const SvNFLanguageData& 
rCurrentLang,
                                              OUStringBuffer& OutString) const;
 
     SVL_DLLPRIVATE bool ImpGetNumberOutput( double fNumber,
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index 30d870860f11..98744e5faaf8 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -2676,7 +2676,7 @@ bool SvNumberformat::GetOutputString(double fNumber,
             bRes |= ImpGetNumberOutput(fNumber, nIx, bStarFlag, rNatNum, 
sBuff);
             break;
         case SvNumFormatType::LOGICAL:
-            bRes |= ImpGetLogicalOutput(fNumber, nIx, rNatNum, sBuff);
+            bRes |= ImpGetLogicalOutput(fNumber, nIx, rNatNum, rCurrentLang, 
sBuff);
             break;
         case SvNumFormatType::FRACTION:
             bRes |= ImpGetFractionOutput(fNumber, nIx, bStarFlag, rNatNum, 
sBuff);
@@ -4379,6 +4379,7 @@ bool SvNumberformat::ImpGetDateTimeOutput(double fNumber,
 bool SvNumberformat::ImpGetLogicalOutput(double fNumber,
                                          sal_uInt16 nIx,
                                          const NativeNumberWrapper& rNatNum,
+                                         const SvNFLanguageData& rCurrentLang,
                                          OUStringBuffer& sStr) const
 {
     bool bRes = false;
@@ -4389,7 +4390,7 @@ bool SvNumberformat::ImpGetLogicalOutput(double fNumber,
         switch (rInfo.nTypeArray[j])
         {
             case NF_KEY_BOOLEAN:
-                sStr.append( fNumber ? rScan.GetTrueString() : 
rScan.GetFalseString());
+                sStr.append( fNumber ? rCurrentLang.GetTrueString() : 
rCurrentLang.GetFalseString());
             break;
             case NF_SYMBOLTYPE_STRING:
                 sStr.append( rInfo.sStrArray[j]);

Reply via email to