diff --git a/src/lib/util/kformatprivate.cpp b/src/lib/util/kformatprivate.cpp --- a/src/lib/util/kformatprivate.cpp +++ b/src/lib/util/kformatprivate.cpp @@ -108,45 +108,45 @@ KFormat::UnitPrefix prefix; double decimalFactor; double binaryFactor; - QChar prefixChar; + QString prefixCharSI; + QString prefixCharIEC; }; const PrefixMapEntry map[] = { - { KFormat::UnitPrefix::Yocto, 1e-24, bpow(-80), u'y' }, - { KFormat::UnitPrefix::Zepto, 1e-21, bpow(-70), u'z' }, - { KFormat::UnitPrefix::Atto, 1e-18, bpow(-60), u'a' }, - { KFormat::UnitPrefix::Femto, 1e-15, bpow(-50), u'f' }, - { KFormat::UnitPrefix::Pico, 1e-12, bpow(-40), u'p' }, - { KFormat::UnitPrefix::Nano, 1e-9, bpow(-30), u'n' }, - // Thanks to broken MSVC, we can not use u'µ', but have to use the unicode codepoint - { KFormat::UnitPrefix::Micro, 1e-6, bpow(-20), QChar(0xB5) }, - { KFormat::UnitPrefix::Milli, 1e-3, bpow(-10), u'm' }, - { KFormat::UnitPrefix::Unity, 1.0, 1.0, u'\0' }, - { KFormat::UnitPrefix::Kilo, 1e3, bpow(10), u'k' }, - { KFormat::UnitPrefix::Mega, 1e6, bpow(20), u'M' }, - { KFormat::UnitPrefix::Giga, 1e9, bpow(30), u'G' }, - { KFormat::UnitPrefix::Tera, 1e12, bpow(40), u'T' }, - { KFormat::UnitPrefix::Peta, 1e15, bpow(50), u'P' }, - { KFormat::UnitPrefix::Exa, 1e18, bpow(60), u'E' }, - { KFormat::UnitPrefix::Zetta, 1e21, bpow(70), u'Z' }, - { KFormat::UnitPrefix::Yotta, 1e24, bpow(80), u'Y' }, + { KFormat::UnitPrefix::Yocto, 1e-24, bpow(-80), tr("y", "SI prefix for 10^⁻24"), QString() }, + { KFormat::UnitPrefix::Zepto, 1e-21, bpow(-70), tr("z", "SI prefix for 10^⁻21"), QString() }, + { KFormat::UnitPrefix::Atto, 1e-18, bpow(-60), tr("a", "SI prefix for 10^⁻18"), QString() }, + { KFormat::UnitPrefix::Femto, 1e-15, bpow(-50), tr("f", "SI prefix for 10^⁻15"), QString() }, + { KFormat::UnitPrefix::Pico, 1e-12, bpow(-40), tr("p", "SI prefix for 10^⁻12"), QString() }, + { KFormat::UnitPrefix::Nano, 1e-9, bpow(-30), tr("n", "SI prefix for 10^⁻9") , QString() }, + { KFormat::UnitPrefix::Micro, 1e-6, bpow(-20), tr("µ", "SI prefix for 10^⁻6") , QString() }, + { KFormat::UnitPrefix::Milli, 1e-3, bpow(-10), tr("m", "SI prefix for 10^⁻3") , QString() }, + { KFormat::UnitPrefix::Unity, 1.0, 1.0 , QString() , QString()}, + { KFormat::UnitPrefix::Kilo, 1e3, bpow(10) , tr("k", "SI prefix for 10^3") , tr("Ki", "IEC binary prefix for 2^10")}, + { KFormat::UnitPrefix::Mega, 1e6, bpow(20) , tr("M", "SI prefix for 10^6") , tr("Mi", "IEC binary prefix for 2^20") }, + { KFormat::UnitPrefix::Giga, 1e9, bpow(30) , tr("G", "SI prefix for 10^9") , tr("Gi", "IEC binary prefix for 2^30") }, + { KFormat::UnitPrefix::Tera, 1e12, bpow(40) , tr("T", "SI prefix for 10^12") , tr("Ti", "IEC binary prefix for 2^40") }, + { KFormat::UnitPrefix::Peta, 1e15, bpow(50) , tr("P", "SI prefix for 10^15") , tr("Pi", "IEC binary prefix for 2^50") }, + { KFormat::UnitPrefix::Exa, 1e18, bpow(60) , tr("E", "SI prefix for 10^18") , tr("Ei", "IEC binary prefix for 2^60") }, + { KFormat::UnitPrefix::Zetta, 1e21, bpow(70) , tr("Z", "SI prefix for 10^21") , tr("Zi", "IEC binary prefix for 2^70") }, + { KFormat::UnitPrefix::Yotta, 1e24, bpow(80) , tr("Y", "SI prefix for 10^24") , tr("Yi", "IEC binary prefix for 2^80") }, }; auto entry = std::find_if(std::begin(map), std::end(map), [prefix](const PrefixMapEntry& e) { return e.prefix == prefix; }); switch (unit) { case KFormat::Unit::Bit: - unitString = QStringLiteral("bit"); + unitString = tr("bit", "Symbol of binary digit"); break; case KFormat::Unit::Byte: - unitString = QStringLiteral("B"); + unitString = tr("B", "Symbol of byte"); break; case KFormat::Unit::Meter: - unitString = QStringLiteral("m"); + unitString = tr("m", "Symbol of meter"); break; case KFormat::Unit::Hertz: - unitString = QStringLiteral("Hz"); + unitString = tr("Hz", "Symbol of hertz"); break; case KFormat::Unit::Other: break; @@ -161,12 +161,13 @@ QString prefixString; if (dialect == KFormat::MetricBinaryDialect) { value /= entry->decimalFactor; - prefixString = entry->prefixChar; + prefixString = entry->prefixCharSI; } else { value /= entry->binaryFactor; - prefixString = QString(entry->prefixChar).toUpper(); if (dialect == KFormat::IECBinaryDialect) { - prefixString += u'i'; + prefixString = entry->prefixCharIEC; + } else { + prefixString = entry->prefixCharSI.toUpper(); } }