Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Locales/bg
Български English
[toc align_right="yes" depth="1"]
Написано от : Girish Ramakrishnan, ForwardBias Technologies
Основи
Като за начало може да прочетете "Основи на локализациите":http://developer.qt.nokia.com/wiki/BasicsOfLocales . В Qt, локализациите са реализирани чрез QLocale и QSystemLocale.
QSystemLocale
QSystemLocale е интерфейс за запитване за информация за локализацията на потребителя. "QSystemLocale::query()":http://doc.qt.nokia.com/qsystemlocale.html#query може да се използва за да се взема информация като име на месеца, отрицателен знак за числа и т.н.
QSystemLocale предоставя информация за локализацията от операционната система. На Windows, QSystemLocale::query() използва "GetLocaleInfo":http://msdn.microsoft.com/en-us/library/dd318101(v=vs.85).aspx , на Mac OS X - CFLocaleGetValue, а на Линукс, query() връща само информацията, получена от инспектирането на променливите на средата LC_MEASUREMENT, LC_ALL и LANG ( в този ред ).
QSystemLocale::query() може да бъде предефинира от приложението с цел да предостави по-нататъшно персонализиране на потребителската локализация.
Локализация по подразбиране
Qt програмите мога да се пускат с всякаква локализация като се посочи такава по подразбиране с QLocale::setDefault(). Когато не е зададена локализация по подразбиране, Qt използва информацията от QSystemLocale, т.е тази от операционната система.
QLocale
QLocale е "front-end" клас, който помага във форматирането на данните, базирайки се на идентификатора на локализацията. QLocale използва формата <език>_<страна>.<код> за идентификатор. QLocale, който е създаден без параметри (QLocale()) е еквивалентен на този по подразбиране. Когато няма зададен по подразбиране, се използва системният.
Има два начина, по които QLocale определя форматирането. Първия начин е, когато няма зададена по подразбиране локализация (QLocale::setDefault) и QLocale обект е създаден с конструктор по подразбиране. В такъв случай, QLocale() събира всичката информация през QSystemLocale::query(). Втория вариант е, когато има зададена по подразбиране локализация или QLocale обект е създаден с език и страна(идентификатор на локализацията). В този случай, Qt се обръща към "qlocale_data_p.h":http://qt.gitorious.org/+qt-developers/qt/releases/blobs/0d00798f6bdd098dbb59c6f1da5be5efd6c283fa/src/corelib/tools/qlocale_data_p.h за да определи как да форматира данните. qlocale_data_p.h е генериран от "CLDR":http://cldr.unicode.org/index/downloads като се използват скриптовете cldr2qlocalexml.py и qlocalexml2cpp.py от "local_database":http://qt.gitorious.org/qt/qt/trees/169099b5e9c77c6633deb3c7bb949800a5f80ec2/util/local_database.
Нека да повторим:
* Когато използваме системна локализация, информацията за форматирането идва от ОС-а, а не от CLDR данните.
* Когато има зададена локализация по подразбиране или QLocale обект е създаден с идентификатор, информацията за форматирането идва от CLDR данните.
Резервна локализация
Резервната локализация ("QSystemLocale::fallbackLocale":http://doc.qt.nokia.com/qsystemlocale.html#fallbackLocale) е QLocale създаден като се използва идентификатор, намерен в променливите на средата (LC_ALL и LANG). Ако тези променливи не са настроени, GetUserDefaultLCID се използва на Windows и CFLocaleGetIdentifier на Mac OS X.
Графични елементи и локализации
На всеки графичен елемент може да се зададе индивидуална локализация чрез QWidget::setLocale(). Локализацията се предава от родител на децата, когато не е зададена.
Qt изпраща събитието QEvent::LocaleChange към графичен елемент, когато неговата локализация се смени.