Russian Qt Forum

Qt => Общие вопросы => Тема начата: xAndyx от Июнь 24, 2009, 14:17



Название: метод name() класса QLocale() возвращает некорректные имена некоторых локалей
Отправлено: xAndyx от Июнь 24, 2009, 14:17
Вот такой код для проверки:

#include <QLocale>

int main(int /*argc*/, char ** /*argv*/)
{
   qDebug("Locale for Kashmiri language: %s", qPrintable(QLocale(QLocale::Kashmiri).name()));
   qDebug("Locale for Maori language: %s", qPrintable(QLocale(QLocale::Maori).name()));
   qDebug("Locale for Russian language: %s", qPrintable(QLocale(QLocale::Russian).name()));
   return 0;
}

Результаты выполнения:

$ ./maori
Locale for Kashmiri language: ru_RU
Locale for Maori language: ru_RU
Locale for Russian language: ru_RU
$ LANG=en ./maori
Locale for Kashmiri language: en_US
Locale for Maori language: en_US
Locale for Russian language: ru_RU
$ LANG=de ./maori
Locale for Kashmiri language: de_DE
Locale for Maori language: de_DE
Locale for Russian language: ru_RU

т.е. для некоторых языков вместо кода языка ISO639 и кода страны выводится код языка и страны текущей локали.


Название: Re: метод name() класса QLocale() возвращает некорректные имена некоторых локалей
Отправлено: Rcus от Июнь 24, 2009, 16:01
Цитировать
If the language/country pair is found in the database, it is used.
If the language is found but the country is not, or if the country is AnyCountry, the language is used with the most appropriate available country (for example, Germany for German),
If neither the language nor the country are found, QLocale defaults to the default locale (see setDefault()).
Очевидно тут действует третий вариант. А у вас были установлены эти локали?


Название: Re: метод name() класса QLocale() возвращает некорректные имена некоторых локалей
Отправлено: xAndyx от Июнь 24, 2009, 16:23
Вот оно как, оказывается.
Спасибо. Теперь перед вставкой языка в список проверяю QLocale::countriesForLanguage((QLocale::Language)i).isEmpty().
и языки, для которых в базе не определена страна, опускаю.