Есть ли способ для функции QLocale::formattedDataSize возвращать количественные единицы перевода?
QLocale::formattedDataSize всегда возвращает английские количественные единицы.
1 ответ
Модули четко переведены, как видно из исходного кода qlocale_data_p.h.
Этот частный заголовок определяет массив с именем byte_unit_data
со следующим содержанием в виде символов:
byteskB; МБ; ГБ; ТБ; РВ;EBKiB;MiB; ГиБ;TiB;PiB;EiBbytegrepebajtባይትኪባ;ሜጋባይት;ጊባ;ቴራባይት; РВ; ЕВА بايتكيلوبايت;ميغابايت;غيغابايت;تيرابايت; РВ; ЕВА բայթերկԲ;ՄԲ;ԳԲ;ՏԲ; РВ;EBবাইটকিঃ বাঃ;মেঃ বাঃ;গিঃ বাঃ;টেঃ বাঃ;PB;EBbaybybyte-akoktedoùko;Mo;Go;To;Po;EoKio;Mio;Gio;Tio;Pio;Eio байтовеဘိုက်байтыКБ; MB;ГБ;ТБ;PB;EB បៃ បៃ字节千字节;兆字节;吉字节;太字节; РВ;EB位元組bajtovibajtybaididbýtKB; МБ; ГБ; ТБ; РВ;EBtavutkt; Мт;Gt;Tt;Pt;EtKit; Мит; Гит; Тит; Пит;Eitoctetsbaidhtბაიტიკბაიტი;მბაიტი;გბაიტი;ტბაიტი; РВ;EBBytesબાઇટבייטबाइटbájtbætibeartaバイトಬೈಟ್ಗಳುಕಿ.ಬೈ;. ಮೆ.ಬೈ.;ಗಿ.ಬೈ.;ಟೆ.ಬೈ.; ПБ;EB байткБ;M Б;ГБ;T Б;P Б;E Б Ki Б;Mi Б;Gi Б;Ti Б;Pi Б;Ei БкБ;МБ;ГБ;ТБ; ПБ; ЕВ 바이트baitibaitai бајти baitബൈറ് ്കി.ബി.;മെ.ബൈ.;ജി.ബൈ.;ടിബി;PB;EB; EB 0};ගිබ {0};ටෙබ {0};PB;EBkilobaiti {0};MB {0};GB {0}; терабаити {0};PB;EBபைட்கள்బైట్లుకేబీ;ఎమ్బి;జీబీ;టీబీ;PB;EBไบต์paitikB E {0};MB ʻe {0};GB ʻe {0};TB ʻe {0};PB ʻe {0};EB`e {0}KiB`e {0}; MiBʻe {
...
Поэтому вы должны использовать правильную локаль (из местоположения в вашем профиле пользователя я предполагаю, что это русский язык) и формат QLocale::DataSizeTraditionalFormat
как это:
QLocale l(QLocale::Russian, QLocale::Russia);
l.formattedDataSize(154, 2, QLocale::DataSizeTraditionalFormat); // "154 байты"
l.formattedDataSize(19324, 2, QLocale::DataSizeTraditionalFormat); // "18,87 кБ"
l.formattedDataSize(125839324, 2, QLocale::DataSizeTraditionalFormat); // "120,01 МБ"