"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
-
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::DataSizeSIFormatja silti tulee "Ki" eikä "k"Update: Jahas, tuolla koodissa on käytetty parametrejä väärin: kakkosparametrin pitäisi olla
precisioneikä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.pyyrittää ilmeisesti tehdä hakuja, mutta tekee puutteellisesti, koskaunits/unitLength[long]/unit[digital-byte]/unitPattern[count=other]ei koskaan haeta (vainshortjanarrowhaetaan, eilong).Markku