Translation code fix; updated German translation

This commit is contained in:
Max-Wilhelm Bruker 2010-09-10 19:12:01 +02:00
parent e09060faca
commit 5ee6bdd338
5 changed files with 743 additions and 679 deletions

View file

@ -103,19 +103,15 @@ GeneralSettingsPage::GeneralSettingsPage()
QStringList GeneralSettingsPage::findQmFiles() QStringList GeneralSettingsPage::findQmFiles()
{ {
QDir dir(":/translations"); QDir dir(":/translations");
QStringList fileNames = dir.entryList(QStringList("*.qm"), QDir::Files, QDir::Name); QStringList fileNames = dir.entryList(QStringList(translationPrefix + "_*.qm"), QDir::Files, QDir::Name);
QMutableStringListIterator i(fileNames); fileNames.replaceInStrings(QRegExp(translationPrefix + "_(.*)\\.qm"), "\\1");
while (i.hasNext()) {
i.next();
i.setValue(dir.filePath(i.value()));
}
return fileNames; return fileNames;
} }
QString GeneralSettingsPage::languageName(const QString &qmFile) QString GeneralSettingsPage::languageName(const QString &qmFile)
{ {
QTranslator translator; QTranslator translator;
translator.load(qmFile); translator.load(":/translations/" + translationPrefix + "_" + qmFile + ".qm");
return translator.translate("GeneralSettingsPage", "English"); return translator.translate("GeneralSettingsPage", "English");
} }
@ -165,8 +161,7 @@ void GeneralSettingsPage::cardBackgroundPathButtonClicked()
void GeneralSettingsPage::languageBoxChanged(int index) void GeneralSettingsPage::languageBoxChanged(int index)
{ {
QString qmFile = languageBox->itemData(index).toString(); settingsCache->setLang(languageBox->itemData(index).toString());
settingsCache->setLang(qmFile);
} }
void GeneralSettingsPage::retranslateUi() void GeneralSettingsPage::retranslateUi()
@ -473,8 +468,7 @@ void DlgSettings::changePage(QListWidgetItem *current, QListWidgetItem *previous
void DlgSettings::updateLanguage() void DlgSettings::updateLanguage()
{ {
qApp->removeTranslator(translator); qApp->removeTranslator(translator);
translator->load(settingsCache->getLang()); installNewTranslator();
qApp->installTranslator(translator);
} }
void DlgSettings::changeEvent(QEvent *event) void DlgSettings::changeEvent(QEvent *event)

View file

@ -39,7 +39,7 @@
//Q_IMPORT_PLUGIN(qjpeg) //Q_IMPORT_PLUGIN(qjpeg)
CardDatabase *db; CardDatabase *db;
QTranslator *translator; QTranslator *translator, *qtTranslator;
SettingsCache *settingsCache; SettingsCache *settingsCache;
PingPixmapGenerator *pingPixmapGenerator; PingPixmapGenerator *pingPixmapGenerator;
@ -52,6 +52,17 @@ void myMessageOutput(QtMsgType /*type*/, const char *msg)
fflush(f); fflush(f);
} }
void installNewTranslator()
{
QString lang = settingsCache->getLang();
qtTranslator->load("qt_" + lang, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
qApp->installTranslator(qtTranslator);
translator->load(translationPrefix + "_" + lang, ":/translations");
qApp->installTranslator(translator);
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
// qInstallMsgHandler(myMessageOutput); // qInstallMsgHandler(myMessageOutput);
@ -78,18 +89,9 @@ int main(int argc, char *argv[])
db = new CardDatabase; db = new CardDatabase;
pingPixmapGenerator = new PingPixmapGenerator; pingPixmapGenerator = new PingPixmapGenerator;
QString localeName;// = QLocale::system().name(); qtTranslator = new QTranslator;
QTranslator qtTranslator;
qtTranslator.load("qt_" + localeName, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);
translator = new QTranslator; translator = new QTranslator;
QString lang = settingsCache->getLang(); installNewTranslator();
if (lang.isEmpty())
translator->load("cockatrice_" + localeName, ":/translations", QString(), ".qm");
else
translator->load(lang);
app.installTranslator(translator);
qsrand(QDateTime::currentDateTime().toTime_t()); qsrand(QDateTime::currentDateTime().toTime_t());

View file

@ -5,6 +5,10 @@ class CardDatabase;
class QTranslator; class QTranslator;
extern CardDatabase *db; extern CardDatabase *db;
extern QTranslator *translator; extern QTranslator *translator;
const QString translationPrefix = "cockatrice";
void installNewTranslator();
#endif #endif

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff