Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Finnish
  4. "858 tavut" tai "34,190 Kit", miten korjattava?
QtWS25 Last Chance

"858 tavut" tai "34,190 Kit", miten korjattava?

Scheduled Pinned Locked Moved Unsolved Finnish
3 Posts 1 Posters 648 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Markku
    wrote on 26 Jul 2023, 07:30 last edited by
    #1

    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

    M 1 Reply Last reply 26 Jul 2023, 07:47
    0
    • M Markku
      26 Jul 2023, 07:30

      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

      M Offline
      M Offline
      Markku
      wrote on 26 Jul 2023, 07:47 last edited by Markku
      #2

      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

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Markku
        wrote on 30 Jul 2023, 07:12 last edited by Markku
        #3

        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, koska units/unitLength[long]/unit[digital-byte]/unitPattern[count=other] ei koskaan haeta (vain short ja narrow haetaan, ei long).

        Markku

        1 Reply Last reply
        0

        2/3

        26 Jul 2023, 07:47

        • Login

        • Login or register to search.
        2 out of 3
        • First post
          2/3
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved