From ab92f3938e3547ff447bf4f5e660cf99febab442 Mon Sep 17 00:00:00 2001 From: TTtie Date: Mon, 8 Dec 2025 18:17:10 +0100 Subject: [PATCH] fix(TerminalProgress): make the progress bar respect locale-specific decimal separator (#936) - The `ProgressBar#adjustFormattedSize` function currently expects a decimal dot when adding the additional ".0" to the size. This, however, breaks when a region with a non-dot decimal separator is used. --- Sources/TerminalProgress/ProgressBar.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Sources/TerminalProgress/ProgressBar.swift b/Sources/TerminalProgress/ProgressBar.swift index 6882797a..61dca8ae 100644 --- a/Sources/TerminalProgress/ProgressBar.swift +++ b/Sources/TerminalProgress/ProgressBar.swift @@ -261,12 +261,13 @@ extension ProgressBar { private func adjustFormattedSize(_ size: String) -> String { // Ensure we always have one digit after the decimal point to prevent flickering. let zero = Int64(0).formattedSize() - guard !size.contains("."), let first = size.first, first.isNumber || !size.contains(zero) else { + let decimalSep = Locale.current.decimalSeparator ?? "." + guard !size.contains(decimalSep), let first = size.first, first.isNumber || !size.contains(zero) else { return size } var size = size for unit in ["MB", "GB", "TB"] { - size = size.replacingOccurrences(of: " \(unit)", with: ".0 \(unit)") + size = size.replacingOccurrences(of: " \(unit)", with: "\(decimalSep)0 \(unit)") } return size }