"858 tavut" tai "34,190 Kit", miten korjattava?
-
Moi, avasin taannoin Wiresharkille keikan, kun mittayksiköt näkyy statistiikoissa hassusti, esim. 858 tavua näkyy muodossa "858 tavut" ja reilut 34 kilotavua näkyy muodossa "34,190 Kit", ja sanoivat sieltä, että nuo tulee Qt:stä.
Onko tiedossa jotain tapaa, jolla Qt-käyttäjä pystyy tuohon vaikuttamaan, että tulostus olisi suomen kielen mukaista?
Koodi: https://gitlab.com/wireshark/wireshark/-/blob/master/ui/qt/models/atap_data_model.cpp#L35
static QString formatString(qlonglong value) { return QLocale::system().formattedDataSize(value, QLocale::DataSizeSIFormat); }
Henkilökohtaisesti mittayksikkö "Kit" (kilotavua) ei ole kyllä tullut yli 30 vuoden aikana vastaan yhtään missään aiemmin...
Markku
-
Dokumentaatiokaan ei nyt täsmää:
https://doc.qt.io/qt-6/qlocale.html#formattedDataSize
DataSizeIecFormat uses the new IEC standard quantifiers Ki, Mi and so on, whereas DataSizeSIFormat uses the older SI quantifiers k, M, etc.
mutta tuossa esimerkissä on
QLocale::DataSizeSIFormat
ja silti tulee "Ki" eikä "k"Update: Jahas, tuolla koodissa on käytetty parametrejä väärin: kakkosparametrin pitäisi olla
precision
eikäformat
(mutta tämä ei vaikuta alkuperäiseen kysymykseen "858 tavut" osalta)Markku
-
CLDR (Unicode Common Locale Data Repository), jota Qt nähtävästi käyttää, sanoo (
common/main/fi.xml
):<unit type="digital-byte"> <displayName>tavut</displayName> <unitPattern count="one">{0} tavu</unitPattern> <unitPattern count="one" case="elative">{0} tavusta</unitPattern> <unitPattern count="one" case="genitive">{0} tavun</unitPattern> <unitPattern count="one" case="illative">{0} tavuun</unitPattern> <unitPattern count="one" case="partitive">{0} tavua</unitPattern> <unitPattern count="other">{0} tavua</unitPattern> <unitPattern count="other" case="elative">{0} tavusta</unitPattern> <unitPattern count="other" case="genitive">{0} tavun</unitPattern> <unitPattern count="other" case="illative">{0} tavuun</unitPattern> <unitPattern count="other" case="partitive">{0} tavua</unitPattern> </unit>
eli Qt:llä on dataa, mutta sitä ei osata käyttää.
qtbase/util/locale_database/ldml.py
yrittää ilmeisesti tehdä hakuja, mutta tekee puutteellisesti, koskaunits/unitLength[long]/unit[digital-byte]/unitPattern[count=other]
ei koskaan haeta (vainshort
janarrow
haetaan, eilong
).Markku