Locales/bg: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
'''Български''' [[QtLocales|English]] | '''Български''' [[QtLocales|English]] | ||
[[Category:QtInternals]] | |||
[toc align_right= | [toc align_right="yes" depth="1"] | ||
Написано от : Girish Ramakrishnan, ForwardBias Technologies | Написано от : Girish Ramakrishnan, ForwardBias Technologies | ||
Line 7: | Line 8: | ||
= Основи = | = Основи = | ||
Като за начало може да прочетете | Като за начало може да прочетете "Основи на локализациите":http://developer.qt.nokia.com/wiki/BasicsOfLocales . В Qt, локализациите са реализирани чрез QLocale и QSystemLocale. | ||
= QSystemLocale = | = QSystemLocale = | ||
QSystemLocale е интерфейс за запитване за информация за локализацията на потребителя. | QSystemLocale е интерфейс за запитване за информация за локализацията на потребителя. "QSystemLocale::query()":http://doc.qt.nokia.com/qsystemlocale.html#query може да се използва за да се взема информация като име на месеца, отрицателен знак за числа и т.н. | ||
QSystemLocale предоставя информация за локализацията от операционната система. На Windows, QSystemLocale::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() може да бъде предефинира от приложението с цел да предостави по-нататъшно персонализиране на потребителската локализация. | QSystemLocale::query() може да бъде предефинира от приложението с цел да предостави по-нататъшно персонализиране на потребителската локализация. | ||
Line 23: | Line 24: | ||
= QLocale = | = QLocale = | ||
QLocale е | QLocale е "front-end" клас, който помага във форматирането на данните, базирайки се на идентификатора на локализацията. QLocale използва формата <език>_<страна>.<код> за идентификатор. QLocale, който е създаден без параметри (QLocale()) е еквивалентен на този по подразбиране. Когато няма зададен по подразбиране, се използва системният. | ||
Има два начина, по които QLocale определя форматирането. Първия начин е, когато няма зададена по подразбиране локализация (QLocale::setDefault) и QLocale обект е създаден с конструктор по подразбиране. В такъв случай, QLocale() събира всичката информация през QSystemLocale::query(). Втория вариант е, когато има зададена по подразбиране локализация или QLocale обект е създаден с език и страна(идентификатор на локализацията). В този случай, Qt се обръща към | Има два начина, по които 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(). Локализацията се предава от родител на децата, когато не е зададена. | На всеки графичен елемент може да се зададе индивидуална локализация чрез QWidget::setLocale(). Локализацията се предава от родител на децата, когато не е зададена. | ||
Qt изпраща събитието QEvent::LocaleChange към графичен елемент, когато неговата локализация се смени. |
Revision as of 12:58, 25 February 2015
Български 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 към графичен елемент, когато неговата локализация се смени.