Locales/bg

From Qt Wiki
Jump to navigation Jump to search

Български 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 към графичен елемент, когато неговата локализация се смени.