summaryrefslogtreecommitdiffstats
path: root/kgeography/src
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitce599e4f9f94b4eb00c1b5edb85bce5431ab3df2 (patch)
treed3bb9f5d25a2dc09ca81adecf39621d871534297 /kgeography/src
downloadtdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.tar.gz
tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeedu@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kgeography/src')
-rw-r--r--kgeography/src/Makefile.am43
-rw-r--r--kgeography/src/answer.cpp116
-rw-r--r--kgeography/src/answer.h38
-rw-r--r--kgeography/src/answersdialog.cpp95
-rw-r--r--kgeography/src/answersdialog.h39
-rw-r--r--kgeography/src/askwidget.cpp104
-rw-r--r--kgeography/src/askwidget.h72
-rw-r--r--kgeography/src/boxasker.cpp128
-rw-r--r--kgeography/src/boxasker.h57
-rw-r--r--kgeography/src/capitaldivisionasker.cpp74
-rw-r--r--kgeography/src/capitaldivisionasker.h32
-rw-r--r--kgeography/src/division.cpp82
-rw-r--r--kgeography/src/division.h40
-rw-r--r--kgeography/src/divisioncapitalasker.cpp75
-rw-r--r--kgeography/src/divisioncapitalasker.h30
-rw-r--r--kgeography/src/divisionflagasker.cpp57
-rw-r--r--kgeography/src/divisionflagasker.h27
-rw-r--r--kgeography/src/flagdivisionasker.cpp52
-rw-r--r--kgeography/src/flagdivisionasker.h30
-rw-r--r--kgeography/src/kgeography.cpp338
-rw-r--r--kgeography/src/kgeography.desktop116
-rw-r--r--kgeography/src/kgeography.h75
-rw-r--r--kgeography/src/kgeography.kcfg12
-rw-r--r--kgeography/src/kgeographyui.rc25
-rw-r--r--kgeography/src/main.cpp37
-rw-r--r--kgeography/src/map.cpp156
-rw-r--r--kgeography/src/map.h52
-rw-r--r--kgeography/src/mapasker.cpp209
-rw-r--r--kgeography/src/mapasker.h67
-rw-r--r--kgeography/src/mapchooser.cpp93
-rw-r--r--kgeography/src/mapchooser.h40
-rw-r--r--kgeography/src/mapparser.cpp279
-rw-r--r--kgeography/src/mapparser.h57
-rw-r--r--kgeography/src/mapsdatatranslation.cpp4422
-rw-r--r--kgeography/src/mapwidget.cpp332
-rw-r--r--kgeography/src/mapwidget.h69
-rw-r--r--kgeography/src/mypopup.cpp66
-rw-r--r--kgeography/src/mypopup.h31
-rw-r--r--kgeography/src/popupmanager.cpp67
-rw-r--r--kgeography/src/popupmanager.h45
-rw-r--r--kgeography/src/script.cpp86
-rw-r--r--kgeography/src/settings.kcfgc5
42 files changed, 7870 insertions, 0 deletions
diff --git a/kgeography/src/Makefile.am b/kgeography/src/Makefile.am
new file mode 100644
index 00000000..e70ac19c
--- /dev/null
+++ b/kgeography/src/Makefile.am
@@ -0,0 +1,43 @@
+## Makefile.am for kgeography
+
+# this is the program that gets installed. it's name is used for all
+# of the other Makefile.am variables
+bin_PROGRAMS = kgeography
+
+# set the include path for X, qt and KDE
+INCLUDES = $(all_includes)
+
+# the library search path.
+kgeography_LDFLAGS = $(all_libraries) $(KDE_RPATH)
+
+# the libraries to link against.
+kgeography_LDADD = $(LIB_KDEUI)
+
+# which sources should be compiled for kgeography
+kgeography_SOURCES = main.cpp mapwidget.cpp division.cpp map.cpp mapparser.cpp kgeography.cpp mapchooser.cpp mypopup.cpp popupmanager.cpp settings.kcfgc flagdivisionasker.cpp askwidget.cpp mapasker.cpp capitaldivisionasker.cpp divisioncapitalasker.cpp boxasker.cpp divisionflagasker.cpp answer.cpp answersdialog.cpp
+
+# let automoc handle all of the meta source files (moc)
+METASOURCES = AUTO
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/kgeography.pot
+
+# this is where the kdelnk file will go
+xdg_apps_DATA = kgeography.desktop
+
+kde_kcfg_DATA = kgeography.kcfg
+
+# this is where the XML-GUI resource file goes
+rcdir = $(kde_datadir)/kgeography
+rc_DATA = kgeographyui.rc
+
+debug: kgeography
+ ddd ./kgeography
+
+valgrind: kgeography
+ valgrind --tool=memcheck --leak-check=yes ./kgeography
+
+noinst_PROGRAMS = script
+script_SOURCES = script.cpp
+script_LDADD = $(LIB_QT)
+script_LDFLAGS = $(all_libraries)
diff --git a/kgeography/src/answer.cpp b/kgeography/src/answer.cpp
new file mode 100644
index 00000000..a468333c
--- /dev/null
+++ b/kgeography/src/answer.cpp
@@ -0,0 +1,116 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <qimage.h>
+#include <qlabel.h>
+#include <qlayout.h>
+
+#include <kdialog.h>
+
+#include "answer.h"
+
+userAnswer::userAnswer()
+{
+}
+
+userAnswer::userAnswer(const userAnswer &r)
+{
+ p_question = r.p_question;
+ p_answer = r.p_answer;
+ p_correctAnswer = r.p_correctAnswer;
+ p_correct = r.p_correct;
+}
+
+userAnswer &userAnswer::operator=(const userAnswer &r)
+{
+ p_question = r.p_question;
+ p_answer = r.p_answer;
+ p_correctAnswer = r.p_correctAnswer;
+ p_correct = r.p_correct;
+ return *this;
+}
+
+void userAnswer::setQuestion(QVariant question)
+{
+ p_question = question;
+}
+
+void userAnswer::setAnswer(QVariant answer)
+{
+ p_answer = answer;
+}
+
+void userAnswer::setAnswerCorrect(bool correct)
+{
+ p_correct = correct;
+}
+
+void userAnswer::setCorrectAnswer(QVariant correctAnswer)
+{
+ p_correctAnswer = correctAnswer;
+}
+
+void userAnswer::putWidgets(QWidget *w, QGridLayout *lay, int row) const
+{
+ QWidget *widgets[3];
+ const QVariant *v;
+
+ for (int i = 0; i < 3; i++)
+ {
+ if (i == 0) v = &p_question;
+ else if (i == 1) v = &p_answer;
+ else v = &p_correctAnswer;
+
+ if (v -> type() == QVariant::String)
+ {
+ QLabel *l;
+ l = new QLabel(w);
+ l -> setText(v -> toString());
+ l -> setMargin(KDialog::marginHint() / 2);
+ widgets[i] = l;
+ }
+ else if (v -> type() == QVariant::Color)
+ {
+ QWidget *aux = new QWidget(w);
+ QHBoxLayout *lay = new QHBoxLayout(aux);
+
+ QFrame *inner = new QFrame(aux);
+ lay -> addWidget(inner);
+ inner -> setBackgroundColor(v -> toColor());
+ inner -> setLineWidth(1);
+ lay -> setMargin(KDialog::marginHint() / 2);
+ widgets[i] = aux;
+ }
+ else if (v -> type() == QVariant::Image)
+ {
+ QLabel *l;
+ l = new QLabel(w);
+ l -> setPixmap(v -> toImage());
+ l -> setAlignment(Qt::AlignHCenter);
+ l -> setMargin(KDialog::marginHint() / 2);
+ widgets[i] = l;
+ }
+
+ lay -> addWidget(widgets[i], row, i + 1);
+ }
+
+ if (!p_correct)
+ {
+ QColor back, fore;
+ back = widgets[0] -> colorGroup().highlight();
+ fore = widgets[0] -> colorGroup().highlightedText();
+ for (int i = 0; i < 3; i++)
+ {
+ widgets[i] -> setPaletteBackgroundColor(back);
+ widgets[i] -> setPaletteForegroundColor(fore);
+ }
+ }
+}
+
diff --git a/kgeography/src/answer.h b/kgeography/src/answer.h
new file mode 100644
index 00000000..02190ab4
--- /dev/null
+++ b/kgeography/src/answer.h
@@ -0,0 +1,38 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef RESULT_H
+#define RESULT_H
+
+#include <qvariant.h>
+
+class QGridLayout;
+
+class userAnswer
+{
+ public:
+ userAnswer();
+ userAnswer(const userAnswer &qa);
+
+ userAnswer &operator=(const userAnswer &qa);
+
+ void setQuestion(QVariant question);
+ void setAnswer(QVariant answer);
+ void setAnswerCorrect(bool correct);
+ void setCorrectAnswer(QVariant correctAnswer);
+
+ void putWidgets(QWidget *w, QGridLayout *lay, int row) const;
+
+ private:
+ QVariant p_question, p_answer, p_correctAnswer;
+ bool p_correct;
+};
+
+#endif
diff --git a/kgeography/src/answersdialog.cpp b/kgeography/src/answersdialog.cpp
new file mode 100644
index 00000000..a9925b6d
--- /dev/null
+++ b/kgeography/src/answersdialog.cpp
@@ -0,0 +1,95 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <klocale.h>
+
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qscrollview.h>
+
+#include "answer.h"
+#include "answersdialog.h"
+
+answersDialog::answersDialog(QWidget *parent, const QValueVector<userAnswer> &userAnswers, QString question, int correctAnswers) : KDialogBase(parent, 0, true, i18n("Your Answers Were"), Ok)
+{
+ QLabel *l1, *l2, *l3;
+ QFont boldFont, bigFont;
+ uint totalAnswers;
+ totalAnswers = userAnswers.count();
+
+ p_sv = new QScrollView(this);
+ setMainWidget(p_sv);
+
+ p_container = new QWidget(p_sv -> viewport());
+ p_sv -> viewport() -> setPaletteBackgroundColor(p_container -> paletteBackgroundColor());
+
+ QGridLayout *lay = new QGridLayout(p_container);
+ lay -> setColStretch(0, 1);
+ lay -> setColStretch(4, 1);
+ lay -> setRowStretch(totalAnswers + 4, 1);
+
+ // Title
+ bigFont = p_container -> font();
+ bigFont.setPointSize(24);
+ l1 = new QLabel(question, p_container);
+ l1 -> setFont(bigFont);
+ l1 -> setAlignment(Qt::AlignCenter);
+ lay->addMultiCellWidget(l1, 0, 0, 0, 4);
+
+ // Headers
+ boldFont = p_container -> font();
+ boldFont.setBold(true);
+
+ l1 = new QLabel(i18n("Question"), p_container);
+ l1 -> setFont(boldFont);
+ l2 = new QLabel(i18n("Your Answer"), p_container);
+ l2 -> setFont(boldFont);
+ l3 = new QLabel(i18n("Correct Answer"), p_container);
+ l3 -> setFont(boldFont);
+ l1 -> setMargin(KDialog::marginHint() / 2);
+ l2 -> setMargin(KDialog::marginHint() / 2);
+ l3 -> setMargin(KDialog::marginHint() / 2);
+ lay->addWidget(l1, 1, 1);
+ lay->addWidget(l2, 1, 2);
+ lay->addWidget(l3, 1, 3);
+
+ for(uint i = 0; i < totalAnswers; i++)
+ {
+ userAnswers[i].putWidgets(p_container, lay, i + 2);
+ }
+
+ lay -> addItem(new QSpacerItem(20, 20, QSizePolicy::Fixed, QSizePolicy::Fixed), totalAnswers + 3, 2);
+
+ l1 = new QLabel(i18n("You answered correctly %1 out of %2 questions.").arg(correctAnswers).arg(totalAnswers), p_container);
+ l1 -> setAlignment(Qt::AlignCenter);
+ lay->addMultiCellWidget(l1, totalAnswers + 4, totalAnswers + 4, 0, 4);
+
+ p_sv -> addChild(p_container);
+ resize(500, 500);
+}
+
+void answersDialog::showEvent(QShowEvent *)
+{
+ positionContainer();
+}
+
+void answersDialog::resizeEvent(QResizeEvent *)
+{
+ positionContainer();
+}
+
+void answersDialog::positionContainer()
+{
+ int x = p_sv -> viewport() -> width() - p_container -> width();
+ x = x / 2;
+ if (x < 0) x = 0;
+ p_sv -> moveChild(p_container, x, 0);
+}
+
diff --git a/kgeography/src/answersdialog.h b/kgeography/src/answersdialog.h
new file mode 100644
index 00000000..acd930a9
--- /dev/null
+++ b/kgeography/src/answersdialog.h
@@ -0,0 +1,39 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef RESULTSWIDGET_H
+#define RESULTSWIDGET_H
+
+#include <kdialogbase.h>
+
+#include <qvaluevector.h>
+
+class QScrollView;
+class QWidget;
+
+class userAnswer;
+
+class answersDialog : public KDialogBase
+{
+ public:
+ answersDialog(QWidget *parent, const QValueVector<userAnswer> &userAnswers, QString question, int correctAnswers);
+
+ protected:
+ void showEvent(QShowEvent *e);
+ void resizeEvent(QResizeEvent *e);
+
+ private:
+ void positionContainer();
+
+ QWidget *p_container;
+ QScrollView *p_sv;
+};
+
+#endif
diff --git a/kgeography/src/askwidget.cpp b/kgeography/src/askwidget.cpp
new file mode 100644
index 00000000..d0d38548
--- /dev/null
+++ b/kgeography/src/askwidget.cpp
@@ -0,0 +1,104 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <klocale.h>
+#include <kmessagebox.h>
+
+#include <qlabel.h>
+
+#include "askwidget.h"
+#include "map.h"
+
+askWidget::askWidget(QWidget *parent, KGmap *m, QWidget *w, uint count, bool showLabel) : QWidget(parent), p_map(m), p_count(count)
+{
+ if (showLabel)
+ {
+ p_answers = new QLabel(w);
+ p_answers -> setAlignment(AlignTop | AlignHCenter);
+ resetAnswers();
+ p_answers -> show();
+ }
+ else p_answers = 0;
+}
+
+askWidget::~askWidget()
+{
+ delete p_answers;
+}
+
+int askWidget::correctAnswers() const
+{
+ return p_correctAnswers;
+}
+
+QValueVector<userAnswer> askWidget::userAnswers() const
+{
+ return p_userAnswers;
+}
+
+void askWidget::setMovement(bool)
+{
+}
+
+void askWidget::setZoom(bool)
+{
+}
+
+void askWidget::setOriginalZoom()
+{
+}
+
+void askWidget::clearAsked()
+{
+ p_asked.clear();
+}
+
+QString askWidget::lastDivisionAsked()
+{
+ return p_asked.last();
+}
+
+void askWidget::nextQuestion()
+{
+ QString aux;
+
+ if (p_asked.count() < p_count)
+ {
+ aux = p_map -> getRandomDivision(isClickOnDivision());
+ while (p_asked.find(aux) != p_asked.end()) aux = p_map -> getRandomDivision(isClickOnDivision());
+ p_asked << aux;
+ nextQuestionHook(aux);
+ }
+ else emit questionsEnded();
+}
+
+void askWidget::questionAnswered(bool wasCorrect)
+{
+ p_currentAnswer.setAnswerCorrect(wasCorrect);
+ p_userAnswers.append(p_currentAnswer);
+
+ if (wasCorrect) p_correctAnswers++;
+ else p_incorrectAnswers++;
+ updateLabel();
+}
+
+void askWidget::resetAnswers()
+{
+ p_correctAnswers = 0;
+ p_incorrectAnswers = 0;
+ updateLabel();
+}
+
+void askWidget::updateLabel()
+{
+ p_answers -> setText(i18n("Correct answers: %1/%2").arg(p_correctAnswers).arg(p_correctAnswers + p_incorrectAnswers));
+}
+
+#include "askwidget.moc"
diff --git a/kgeography/src/askwidget.h b/kgeography/src/askwidget.h
new file mode 100644
index 00000000..9e7450ae
--- /dev/null
+++ b/kgeography/src/askwidget.h
@@ -0,0 +1,72 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef ASKWIDGET_H
+#define ASKWIDGET_H
+
+#include <qvaluevector.h>
+#include <qwidget.h>
+
+#include "answer.h"
+
+class QLabel;
+
+class KGmap;
+
+class askWidget : public QWidget
+{
+Q_OBJECT
+ public:
+ askWidget(QWidget *parent, KGmap *m, QWidget *w, uint count, bool showLabel = true);
+ virtual ~askWidget();
+
+ virtual QString getQuestionHook() const = 0;
+ virtual bool isClickOnDivision() const { return false; }
+ int correctAnswers() const;
+ QValueVector<userAnswer> userAnswers() const;
+
+ public slots:
+ virtual void setMovement(bool b);
+ virtual void setZoom(bool b);
+ virtual void setOriginalZoom();
+
+ signals:
+ void setMoveActionChecked(bool b);
+ void setZoomActionChecked(bool b);
+ void setMoveActionEnabled(bool b);
+ void questionsEnded();
+
+ protected:
+ void clearAsked();
+ QString lastDivisionAsked();
+ void nextQuestion();
+ virtual void nextQuestionHook(const QString &division) = 0;
+ void questionAnswered(bool wasCorrect);
+ void resetAnswers();
+
+ KGmap *p_map;
+ userAnswer p_currentAnswer;
+ QLabel *p_answers;
+
+ private:
+ void updateLabel();
+
+ int p_correctAnswers, p_incorrectAnswers;
+
+ QValueVector<userAnswer> p_userAnswers;
+
+ // the list of asked divisions
+ QStringList p_asked;
+
+ // the number of questions to do
+ uint p_count;
+};
+
+#endif
diff --git a/kgeography/src/boxasker.cpp b/kgeography/src/boxasker.cpp
new file mode 100644
index 00000000..0634c622
--- /dev/null
+++ b/kgeography/src/boxasker.cpp
@@ -0,0 +1,128 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <stdlib.h> // for RAND_MAX
+
+#include <kaccelmanager.h>
+#include <kapplication.h>
+#include <klocale.h>
+#include <kpushbutton.h>
+
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qradiobutton.h>
+#include <qvbuttongroup.h>
+
+#include "boxasker.h"
+#include "map.h"
+
+boxAsker::boxAsker(QWidget *parent, KGmap *m, QWidget *w, uint count) : askWidget(parent, m, w, count)
+{
+ p_lay = new QVBoxLayout(this);
+
+ QVButtonGroup *bg = new QVButtonGroup(this);
+ p_label = new QLabel(this);
+ p_rb = new QRadioButton*[4];
+ for(int i = 0; i < 4; i++)
+ {
+ p_rb[i] = new QRadioButton(bg);
+ p_rb[i]->setFocusPolicy(QWidget::StrongFocus);
+ }
+ p_accept = new KPushButton(this);
+
+ p_lay -> addWidget(p_label);
+ p_lay -> addWidget(bg, 1);
+ p_lay -> addWidget(p_accept);
+ KAcceleratorManager::setNoAccel(this);
+}
+
+boxAsker::~boxAsker()
+{
+ delete[] p_rb;
+}
+
+void boxAsker::setQuestion(const QString &q)
+{
+ p_label -> setText(q);
+}
+
+void boxAsker::keyReleaseEvent(QKeyEvent *e)
+{
+ if (e -> key() == Qt::Key_Return || e -> key() == Qt::Key_Enter) checkAnswer();
+ else askWidget::keyReleaseEvent(e);
+}
+
+void boxAsker::nextQuestionHook(const QString &division)
+{
+ QString otherDivision;
+ QStringList auxList;
+ int i;
+
+ setFocus();
+ for (i = 0; i < 4; i++) p_rb[i] -> setChecked(false);
+
+ auxList << division;
+
+ // we put the division in a random place
+ p_position = (int)((float)4 * kapp -> random() / (RAND_MAX + 1.0));
+ nextBoxAskerQuestionHook(division, p_position, true);
+
+ // we put other 3 names
+ i = 0;
+ while (i < 4)
+ {
+ // false because boxaskers never are clickOnDivision
+ otherDivision = p_map -> getRandomDivision(false);
+ while (auxList.find(otherDivision) != auxList.end()) otherDivision = p_map -> getRandomDivision(false);
+ if (i == p_position) i++;
+ if (i < 4 && nextBoxAskerQuestionHook(otherDivision, i, false)) i++;
+ auxList << otherDivision;
+ }
+}
+
+void boxAsker::checkAnswer()
+{
+ bool any, correct;
+ int i;
+
+ correct = false;
+ any = false;
+ i = 0;
+ while(!any && i < 4)
+ {
+ if (p_rb[i] -> isChecked())
+ {
+ any = true;
+ correct = (i == p_position);
+ }
+ else i++;
+ }
+
+ if (any)
+ {
+ setAnswerHook(i);
+ questionAnswered(correct);
+ nextQuestion();
+ }
+}
+
+void boxAsker::init()
+{
+ p_accept -> setText(i18n("&Accept"));
+
+ resetAnswers();
+ clearAsked();
+ nextQuestion();
+
+ p_accept -> disconnect();
+ connect(p_accept, SIGNAL(clicked()), this, SLOT(checkAnswer()));
+}
+
+#include "boxasker.moc"
diff --git a/kgeography/src/boxasker.h b/kgeography/src/boxasker.h
new file mode 100644
index 00000000..a9391f43
--- /dev/null
+++ b/kgeography/src/boxasker.h
@@ -0,0 +1,57 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef BOXASKER_H
+#define BOXASKER_H
+
+#include "askwidget.h"
+
+class KPushButton;
+
+class QLabel;
+class QRadioButton;
+class QVBoxLayout;
+
+class boxAsker : public askWidget
+{
+Q_OBJECT
+ public:
+ boxAsker(QWidget *parent, KGmap *m, QWidget *w, uint count);
+ ~boxAsker();
+
+ protected:
+ virtual bool nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer) = 0;
+ void nextQuestionHook(const QString &division);
+ void setQuestion(const QString &q);
+ virtual void setAnswerHook(int userSays) = 0;
+
+ void keyReleaseEvent(QKeyEvent *e);
+
+ QVBoxLayout *p_lay;
+ QRadioButton **p_rb;
+
+ protected slots:
+ void init();
+
+ private slots:
+ void checkAnswer();
+
+ private:
+ /*void nextQuestion();*/
+
+ KPushButton *p_accept;
+
+ // the position the correct answer is in
+ int p_position;
+
+ QLabel *p_label;
+};
+
+#endif
diff --git a/kgeography/src/capitaldivisionasker.cpp b/kgeography/src/capitaldivisionasker.cpp
new file mode 100644
index 00000000..623cffa4
--- /dev/null
+++ b/kgeography/src/capitaldivisionasker.cpp
@@ -0,0 +1,74 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <klocale.h>
+
+#include <qradiobutton.h>
+
+#include "capitaldivisionasker.h"
+#include "map.h"
+
+capitalDivisionAsker::capitalDivisionAsker(QWidget *parent, KGmap *m, QWidget *w, uint count) : boxAsker(parent, m, w, count)
+{
+ init();
+}
+
+bool capitalDivisionAsker::nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer)
+{
+ bool b;
+ if (isAnswer)
+ {
+ p_capital = p_map -> getDivisionCapital(division);
+ p_currentAnswer.setQuestion(i18n(p_map -> getFileName().utf8(), p_capital.utf8()));
+ p_currentAnswer.setCorrectAnswer(i18n(p_map -> getFileName().utf8(), division.utf8()));
+
+ QString sw = i18n("There are two ways of dealing with the translation of \"%1 is the capital of...\". The first option simply replaces %1 with the translated name of the relevant city. If the grammar of your language allows this, choose this option by setting the translation of this message to 1, and leave untranslated the translations of \"%1 is the capital of...\" that have the placename embedded (or translate them as - if you wish to show the file as fully translated. The second option is to translate all messages in full - this is likely to be required in the case of highly-inflected languages like Russian. To choose this option, set the translation of this message to 0, and translate all the messages.", "0");
+ if (sw == "1")
+ {
+ QString capitalName = i18n(p_map -> getFileName().utf8(), p_capital.utf8());
+ QString text = i18n("%1 is the capital of...");
+ setQuestion(text.arg(capitalName));
+ }
+ else
+ {
+ QString s = QString("%1 is the capital of...").arg(p_capital);
+ setQuestion(i18n(p_map -> getFileName().utf8(), s.utf8()));
+ }
+ p_rb[i] -> setText(i18n(p_map -> getFileName().utf8(), division.utf8()));
+ b = true;
+ }
+ else
+ {
+ // There are crazy countries like Norway where two different divisions
+ // have the same capital, avoid asking
+ // Oslo is the capital of ...
+ // Oslo (true)
+ // Akershus (true)
+ // Buskerud
+ // Hedmark
+ if (p_map -> getDivisionCapital(division) != p_capital)
+ {
+ p_rb[i] -> setText(i18n(p_map -> getFileName().utf8(), division.utf8()));
+ b = true;
+ }
+ else b = false;
+ }
+ return b;
+}
+
+void capitalDivisionAsker::setAnswerHook(int userSays)
+{
+ p_currentAnswer.setAnswer(p_rb[userSays] -> text());
+}
+
+QString capitalDivisionAsker::getQuestionHook() const
+{
+ return i18n("Division From Its Capital");
+}
diff --git a/kgeography/src/capitaldivisionasker.h b/kgeography/src/capitaldivisionasker.h
new file mode 100644
index 00000000..6464d62b
--- /dev/null
+++ b/kgeography/src/capitaldivisionasker.h
@@ -0,0 +1,32 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef CAPITALDIVISIONASKER_H
+#define CAPITALDIVISIONASKER_H
+
+#include "boxasker.h"
+
+class QLabel;
+
+class capitalDivisionAsker : public boxAsker
+{
+ public:
+ capitalDivisionAsker(QWidget *parent, KGmap *m, QWidget *w, uint count);
+
+ protected:
+ bool nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer);
+ void setAnswerHook(int userSays);
+ QString getQuestionHook() const;
+
+ private:
+ QString p_capital;
+};
+
+#endif
diff --git a/kgeography/src/division.cpp b/kgeography/src/division.cpp
new file mode 100644
index 00000000..733b6d3f
--- /dev/null
+++ b/kgeography/src/division.cpp
@@ -0,0 +1,82 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <qfile.h>
+
+#include "division.h"
+
+division::division()
+{
+ p_canAskAlways = true;
+ p_canAskClickDivision = true;
+ p_flagFile = QString::null;
+}
+
+bool division::canAsk(bool clickDivisionMode) const
+{
+ if (clickDivisionMode) return p_canAskClickDivision;
+ else return p_canAskAlways;
+}
+
+QString division::getName() const
+{
+ return p_name;
+}
+
+QRgb division::getRGB() const
+{
+ return p_color;
+}
+
+QString division::getFlagFile() const
+{
+ return p_flagFile;
+}
+
+QString division::getCapital() const
+{
+ if (p_capital.isEmpty()) return "";
+ return p_capital;
+}
+
+void division::setCapital(const QString &name)
+{
+ p_capital = name;
+}
+
+void division::setIgnore(bool ignore, bool canAskClickDivision)
+{
+ if (ignore)
+ {
+ p_canAskAlways = false;
+ p_canAskClickDivision = canAskClickDivision;
+ }
+ else
+ {
+ p_canAskAlways = true;
+ p_canAskClickDivision = true;
+ }
+}
+
+void division::setName(const QString &name)
+{
+ p_name = name;
+}
+
+void division::setRGB(int r, int g, int b)
+{
+ p_color = qRgb(r, g, b);
+}
+
+bool division::setFlagFile(const QString &path)
+{
+ p_flagFile = path;
+ return QFile::exists(path);
+}
diff --git a/kgeography/src/division.h b/kgeography/src/division.h
new file mode 100644
index 00000000..cc8119a3
--- /dev/null
+++ b/kgeography/src/division.h
@@ -0,0 +1,40 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef DIVISION_H
+#define DIVISION_H
+
+#include <qcolor.h>
+#include <qstring.h>
+
+class division
+{
+ public:
+ division();
+
+ bool canAsk(bool clickDivisionMode) const;
+ QString getName() const;
+ QRgb getRGB() const;
+ QString getFlagFile() const;
+ QString getCapital() const;
+
+ void setCapital(const QString &name);
+ void setIgnore(bool ignore, bool canAskClickDivision);
+ void setName(const QString &name);
+ void setRGB(int r, int g, int b);
+ bool setFlagFile(const QString &path);
+
+ private:
+ QString p_name, p_flagFile, p_capital;
+ QRgb p_color;
+ bool p_canAskAlways, p_canAskClickDivision;
+};
+
+#endif
diff --git a/kgeography/src/divisioncapitalasker.cpp b/kgeography/src/divisioncapitalasker.cpp
new file mode 100644
index 00000000..0fcdb8b8
--- /dev/null
+++ b/kgeography/src/divisioncapitalasker.cpp
@@ -0,0 +1,75 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <klocale.h>
+
+#include <qradiobutton.h>
+
+#include "divisioncapitalasker.h"
+#include "map.h"
+
+divisionCapitalAsker::divisionCapitalAsker(QWidget *parent, KGmap *m, QWidget *w, uint count) : boxAsker(parent, m, w, count)
+{
+ init();
+}
+
+bool divisionCapitalAsker::nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer)
+{
+ bool b;
+ if (isAnswer)
+ {
+ QString sw = i18n("There are two ways of dealing with the translation of \"The capital of %1 is...\". The first option simply replaces %1 with the translated name of the relevant region. If the grammar of your language allows this, choose this option by setting the translation of this message to 1, and leave untranslated the translations of \"The capital of %1 is...\" that have the placename embedded (or translate them as - if you wish to show the file as fully translated. The second option is to translate all messages in full - this is likely to be required in the case of highly-inflected languages like Russian. To choose this option, set the translation of this message to 0, and translate all the messages.", "0");
+ if (sw == "1")
+ {
+ QString divisionName = i18n(p_map -> getFileName().utf8(), division.utf8());
+ QString text = i18n("The capital of %1 is...");
+ setQuestion(text.arg(divisionName));
+ }
+ else
+ {
+ QString s = QString("The capital of %1 is...").arg(division);
+ setQuestion(i18n(p_map -> getFileName().utf8(), s.utf8()));
+ }
+ p_currentAnswer.setQuestion(i18n(p_map -> getFileName().utf8(), division.utf8()));
+ p_capital = p_map -> getDivisionCapital(division);
+ p_currentAnswer.setCorrectAnswer(i18n(p_map -> getFileName().utf8(), p_capital.utf8()));
+ p_rb[i] -> setText(i18n(p_map -> getFileName().utf8(), p_capital.utf8()));
+ b = true;
+ }
+ else
+ {
+ QString capital;
+ capital = p_map -> getDivisionCapital(division);
+ // There are crazy countries like Norway where two different divisions
+ // have the same capital, avoid asking
+ // The capital of Akershus is ...
+ // Oslo (true)
+ // Oslo (true)
+ // Lillehammer
+ // Moss
+ if (capital != p_capital)
+ {
+ p_rb[i] -> setText(i18n(p_map -> getFileName().utf8(), capital.utf8()));
+ b = true;
+ }
+ else b = false;
+ }
+ return b;
+}
+
+void divisionCapitalAsker::setAnswerHook(int userSays)
+{
+ p_currentAnswer.setAnswer(p_rb[userSays] -> text());
+}
+
+QString divisionCapitalAsker::getQuestionHook() const
+{
+ return i18n("Capital of Division");
+}
diff --git a/kgeography/src/divisioncapitalasker.h b/kgeography/src/divisioncapitalasker.h
new file mode 100644
index 00000000..e63901c5
--- /dev/null
+++ b/kgeography/src/divisioncapitalasker.h
@@ -0,0 +1,30 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef DIVISIONCAPITALASKER_H
+#define DIVISIONCAPITALASKER_H
+
+#include "boxasker.h"
+
+class divisionCapitalAsker : public boxAsker
+{
+ public:
+ divisionCapitalAsker(QWidget *parent, KGmap *m, QWidget *w, uint count);
+
+ protected:
+ bool nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer);
+ void setAnswerHook(int userSays);
+ QString getQuestionHook() const;
+
+ private:
+ QString p_capital;
+};
+
+#endif
diff --git a/kgeography/src/divisionflagasker.cpp b/kgeography/src/divisionflagasker.cpp
new file mode 100644
index 00000000..cc5f2430
--- /dev/null
+++ b/kgeography/src/divisionflagasker.cpp
@@ -0,0 +1,57 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <klocale.h>
+
+#include <qimage.h>
+#include <qradiobutton.h>
+
+#include "divisionflagasker.h"
+#include "map.h"
+
+divisionFlagAsker::divisionFlagAsker(QWidget *parent, KGmap *m, QWidget *w, uint count) : boxAsker(parent, m, w, count)
+{
+ init();
+}
+
+bool divisionFlagAsker::nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer)
+{
+ QImage im(p_map -> getDivisionFlagFile(division));
+ im = im.smoothScale(im.width()/5, im.height()/5);
+ p_rb[i] -> setPixmap(im);
+ if (isAnswer)
+ {
+ QString sw = i18n("There are two ways of dealing with the translation of \"The flag of %1 is...\". The first option simply replaces %1 with the translated name of the relevant region. If the grammar of your language allows this, choose this option by setting the translation of this message to 1, and leave untranslated the translations of \"The flag of %1 is...\" that have the placename embedded (or translate them as - if you wish to show the file as fully translated. The second option is to translate all messages in full - this is likely to be required in the case of highly-inflected languages like Russian. To choose this option, set the translation of this message to 0, and translate all the messages.", "0");
+ if (sw == "1")
+ {
+ QString divisionName = i18n(p_map -> getFileName().utf8(), division.utf8());
+ QString text = i18n("The flag of %1 is...");
+ setQuestion(text.arg(divisionName));
+ }
+ else
+ {
+ QString s = QString("The flag of %1 is...").arg(division);
+ setQuestion(i18n(p_map -> getFileName().utf8(), s.utf8()));
+ }
+ p_currentAnswer.setCorrectAnswer(im);
+ p_currentAnswer.setQuestion(i18n(p_map -> getFileName().utf8(), division.utf8()));
+ }
+ return true;
+}
+
+void divisionFlagAsker::setAnswerHook(int userSays)
+{
+ p_currentAnswer.setAnswer(p_rb[userSays] -> pixmap() -> convertToImage());
+}
+
+QString divisionFlagAsker::getQuestionHook() const
+{
+ return i18n("Flag of Division");
+}
diff --git a/kgeography/src/divisionflagasker.h b/kgeography/src/divisionflagasker.h
new file mode 100644
index 00000000..a0611d28
--- /dev/null
+++ b/kgeography/src/divisionflagasker.h
@@ -0,0 +1,27 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef DIVISIONFLAGASKER_H
+#define DIVISIONFLAGASKER_H
+
+#include "boxasker.h"
+
+class divisionFlagAsker : public boxAsker
+{
+ public:
+ divisionFlagAsker(QWidget *parent, KGmap *m, QWidget *w, uint count);
+
+ protected:
+ bool nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer);
+ void setAnswerHook(int userSays);
+ QString getQuestionHook() const;
+};
+
+#endif
diff --git a/kgeography/src/flagdivisionasker.cpp b/kgeography/src/flagdivisionasker.cpp
new file mode 100644
index 00000000..365da9ef
--- /dev/null
+++ b/kgeography/src/flagdivisionasker.cpp
@@ -0,0 +1,52 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <klocale.h>
+
+#include <qimage.h>
+#include <qlayout.h>
+#include <qradiobutton.h>
+
+#include "flagdivisionasker.h"
+#include "map.h"
+
+flagDivisionAsker::flagDivisionAsker(QWidget *parent, KGmap *m, QWidget *w, uint count) : boxAsker(parent, m, w, count)
+{
+ p_flag = new QWidget(this);
+ p_lay -> insertWidget(0, p_flag);
+ setQuestion(i18n("This flag belongs to:"));
+ init();
+}
+
+bool flagDivisionAsker::nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer)
+{
+ if (isAnswer)
+ {
+ // we put the flag image
+ QImage image(p_map -> getDivisionFlagFile(division));
+ p_flag -> setPaletteBackgroundPixmap(image);
+ p_flag -> setFixedSize(image.size());
+
+ p_currentAnswer.setQuestion(image.smoothScale(image.width()/5, image.height()/5));
+ p_currentAnswer.setCorrectAnswer(i18n(p_map -> getFileName().utf8(), division.utf8()));
+ }
+ p_rb[i] -> setText(i18n(p_map -> getFileName().utf8(), division.utf8()));
+ return true;
+}
+
+void flagDivisionAsker::setAnswerHook(int userSays)
+{
+ p_currentAnswer.setAnswer(p_rb[userSays] -> text());
+}
+
+QString flagDivisionAsker::getQuestionHook() const
+{
+ return i18n("Division From Its Flag");
+}
diff --git a/kgeography/src/flagdivisionasker.h b/kgeography/src/flagdivisionasker.h
new file mode 100644
index 00000000..5e351f4c
--- /dev/null
+++ b/kgeography/src/flagdivisionasker.h
@@ -0,0 +1,30 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef FLAGDIVISIONASKER_H
+#define FLAGDIVISIONASKER_H
+
+#include "boxasker.h"
+
+class flagDivisionAsker : public boxAsker
+{
+ public:
+ flagDivisionAsker(QWidget *parent, KGmap *m, QWidget *w, uint count);
+
+ protected:
+ bool nextBoxAskerQuestionHook(const QString &division, int i, bool isAnswer);
+ void setAnswerHook(int userSays);
+ QString getQuestionHook() const;
+
+ private:
+ QWidget *p_flag;
+};
+
+#endif
diff --git a/kgeography/src/kgeography.cpp b/kgeography/src/kgeography.cpp
new file mode 100644
index 00000000..26ce7819
--- /dev/null
+++ b/kgeography/src/kgeography.cpp
@@ -0,0 +1,338 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <kaction.h>
+#include <kdialog.h>
+#include <klocale.h>
+#include <kinputdialog.h>
+#include <kmessagebox.h>
+#include <kpushbutton.h>
+#include <kstdaction.h>
+#include <kmenubar.h>
+
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qvbox.h>
+#include <qsize.h>
+#include <qtimer.h>
+#include <qwhatsthis.h>
+
+#include "answersdialog.h"
+#include "capitaldivisionasker.h"
+#include "divisioncapitalasker.h"
+#include "divisionflagasker.h"
+#include "flagdivisionasker.h"
+#include "kgeography.h"
+#include "settings.h"
+#include "mapasker.h"
+#include "mapchooser.h"
+#include "mapparser.h"
+#include "map.h"
+
+kgeography::kgeography() : KMainWindow(), p_firstShow(true), p_mustShowResultsDialog(false)
+{
+ p_map = 0;
+ p_askWidget = 0;
+
+ p_bigWidget = new QHBox(this);
+
+ QVBox *p_leftWidget = new QVBox(p_bigWidget);
+ p_currentMap = new QLabel(p_leftWidget);
+ p_currentMap -> setAlignment(AlignCenter);
+ p_consult = new KPushButton(i18n("&Browse Map"), p_leftWidget);
+ QWhatsThis::add(p_consult, i18n("In this section left click on any part of the map to learn about the divisions" ));
+ p_askMap = new KPushButton(i18n("&Click Division in Map..."), p_leftWidget);
+ QWhatsThis::add(p_askMap, i18n("In this challenge you are given a division name on the left under the menu and you must find it on the map and click on it"));
+ p_askCapitalDivisions = new KPushButton(i18n("Guess Division From Its &Capital..."), p_leftWidget);
+ QWhatsThis::add(p_askCapitalDivisions, i18n("In this quiz you have to guess the division name given its capital"));
+ p_askDivisionCapitals = new KPushButton(i18n("Guess Capital of &Division..."), p_leftWidget);
+ QWhatsThis::add(p_askDivisionCapitals, i18n("In this quiz you have to guess the capital of a given division name"));
+ p_askFlagDivisions = new KPushButton(i18n("&Guess Division From Its Flag..."), p_leftWidget);
+ QWhatsThis::add(p_askFlagDivisions, i18n("In this quiz you have to guess the division name given its flag"));
+ p_askDivisionFlags = new KPushButton(i18n("G&uess Flag of Division..."), p_leftWidget);
+ QWhatsThis::add(p_askDivisionFlags, i18n("In this quiz you have to guess the flag of a division given its name"));
+ p_underLeftWidget = new QVBox(p_leftWidget);
+ p_underLeftWidget -> layout() -> setSpacing(KDialog::spacingHint());
+ p_underLeftWidget -> layout() -> setMargin(KDialog::marginHint());
+ p_leftWidget -> setStretchFactor(p_underLeftWidget, 1);
+
+ setCentralWidget(p_bigWidget);
+
+ connect(p_consult, SIGNAL(clicked()), this, SLOT(consult()));
+ connect(p_askMap, SIGNAL(clicked()), this, SLOT(askMap()));
+ connect(p_askCapitalDivisions, SIGNAL(clicked()), this, SLOT(askCapitalDivisions()));
+ connect(p_askDivisionCapitals, SIGNAL(clicked()), this, SLOT(askDivisionCapitals()));
+ connect(p_askFlagDivisions, SIGNAL(clicked()), this, SLOT(askFlagDivisions()));
+ connect(p_askDivisionFlags, SIGNAL(clicked()), this, SLOT(askDivisionFlags()));
+
+ KAction *a = KStdAction::open(this, SLOT(openMap()), actionCollection(), "openMap");
+ a -> setText(i18n("&Open Map..."));
+ KStdAction::quit(this, SLOT(close()), actionCollection(), "quit");
+
+ p_zoom = new KToggleAction(i18n("&Zoom"), "viewmagfit", 0, 0, 0, actionCollection(), "zoom_select");
+ p_zoom -> setEnabled(false);
+
+ p_zoomOriginal = new KAction(i18n("&Original Size"), "viewmag1", 0, 0, 0, actionCollection(), "zoom_original");
+ p_zoomOriginal -> setEnabled(false);
+
+ p_move = new KToggleAction(i18n("&Move"), "move", 0, 0, 0, actionCollection(), "move");
+ p_move -> setEnabled(false);
+
+ new KAction(i18n("Disclaimer"), 0, this, SLOT(disclaimer()), actionCollection(), "disclaimer");
+
+ setupGUI(Keys | ToolBar | Save | Create);
+
+ show();
+}
+
+kgeography::~kgeography()
+{
+ delete p_askWidget;
+ delete p_map;
+}
+
+void kgeography::showEvent(QShowEvent *)
+{
+ if (p_firstShow)
+ {
+ QString file = kgeographySettings::self() -> lastMap();
+
+ if (QFile::exists(file))
+ {
+ mapReader reader;
+ if (reader.parseMap(file))
+ {
+ setMap(reader.getMap());
+ }
+ else
+ {
+ KMessageBox::error(this, i18n("Could not open last used map. Error parsing %1: %2").arg(file).arg(reader.getError()));
+ delete reader.getMap();
+ openMap();
+ }
+ }
+ else openMap();
+
+ if (!p_map)
+ {
+ p_currentMap -> setText(i18n("There is no current map"));
+ p_consult -> setEnabled(false);
+ p_askMap -> setEnabled(false);
+ p_askFlagDivisions -> setEnabled(false);
+ p_askDivisionFlags -> setEnabled(false);
+ p_askCapitalDivisions -> setEnabled(false);
+ p_askDivisionCapitals -> setEnabled(false);
+ }
+ // if anyone can explain why with the slot works and now without
+ // i'll be glad to learn
+ QTimer::singleShot(0, this, SLOT(resizeMainWindow()));
+// resizeMainWindow();
+
+ p_firstShow = false;
+ }
+}
+
+void kgeography::openMap()
+{
+ mapChooser mp(this);
+ if (mp.exec() == mapChooser::Accepted)
+ {
+ showResultsDialog();
+ setMap(mp.getMap());
+ resizeMainWindow();
+ }
+}
+
+void kgeography::consult()
+{
+ // No need to create another map viewer if we are already in it
+ mapAsker *ma = dynamic_cast<mapAsker*>(p_askWidget);
+ if (ma && !ma -> isAsker()) return;
+
+ showResultsDialog();
+ removeOldAskWidget();
+ p_askWidget = new mapAsker(p_bigWidget, p_map, p_underLeftWidget, false);
+ p_zoom -> setEnabled(true);
+ p_zoomOriginal -> setEnabled(true);
+ putAskWidget();
+}
+
+void kgeography::askCapitalDivisions()
+{
+ int i;
+ bool ok;
+ showResultsDialog();
+ i = KInputDialog::getInteger(i18n("Number of Questions"), i18n("How many questions do you want? (1 to %1)").arg(p_map -> count(false)), 1, 1, p_map -> count(false), 1, &ok);
+ if (ok)
+ {
+ removeOldAskWidget();
+ p_askWidget = new capitalDivisionAsker(p_bigWidget, p_map, p_underLeftWidget, i);
+ putAskWidget();
+ p_mustShowResultsDialog = true;
+ }
+ else consult();
+}
+
+void kgeography::askDivisionCapitals()
+{
+ int i;
+ bool ok;
+ showResultsDialog();
+ i = KInputDialog::getInteger(i18n("Number of Questions"), i18n("How many questions do you want? (1 to %1)").arg(p_map -> count(false)), 1, 1, p_map -> count(false), 1, &ok);
+ if (ok)
+ {
+ removeOldAskWidget();
+ p_askWidget = new divisionCapitalAsker(p_bigWidget, p_map, p_underLeftWidget, i);
+ putAskWidget();
+ p_mustShowResultsDialog = true;
+ }
+ else consult();
+}
+
+void kgeography::askMap()
+{
+ int i;
+ bool ok;
+ showResultsDialog();
+ i = KInputDialog::getInteger(i18n("Number of Questions"), i18n("How many questions do you want? (1 to %1)").arg(p_map -> count(true)), 1, 1, p_map -> count(true), 1, &ok);
+ if (ok)
+ {
+ removeOldAskWidget();
+ p_askWidget = new mapAsker(p_bigWidget, p_map, p_underLeftWidget, true, i);
+ p_zoom -> setEnabled(true);
+ p_zoomOriginal -> setEnabled(true);
+ putAskWidget();
+ p_mustShowResultsDialog = true;
+ }
+ else consult();
+}
+
+void kgeography::askFlagDivisions()
+{
+ int i;
+ bool ok;
+ showResultsDialog();
+ i = KInputDialog::getInteger(i18n("Number of Questions"), i18n("How many questions do you want? (1 to %1)").arg(p_map -> count(false)), 1, 1, p_map -> count(false), 1, &ok);
+ if (ok)
+ {
+ removeOldAskWidget();
+ p_askWidget = new flagDivisionAsker(p_bigWidget, p_map, p_underLeftWidget, i);
+ putAskWidget();
+ p_mustShowResultsDialog = true;
+ }
+ else consult();
+}
+
+void kgeography::askDivisionFlags()
+{
+ int i;
+ bool ok;
+ showResultsDialog();
+ i = KInputDialog::getInteger(i18n("Number of Questions"), i18n("How many questions do you want? (1 to %1)").arg(p_map -> count(false)), 1, 1, p_map -> count(false), 1, &ok);
+ if (ok)
+ {
+ removeOldAskWidget();
+ p_askWidget = new divisionFlagAsker(p_bigWidget, p_map, p_underLeftWidget, i);
+ putAskWidget();
+ p_mustShowResultsDialog = true;
+ }
+ else consult();
+}
+
+void kgeography::removeOldAskWidget()
+{
+ delete p_askWidget;
+ p_askWidget = 0;
+ p_zoom -> setEnabled(false);
+ p_zoomOriginal -> setEnabled(false);
+ p_move -> setEnabled(false);
+ p_zoom -> setChecked(false);
+ p_move -> setChecked(false);
+}
+
+QSize kgeography::getPreferredSize()
+{
+ int ySize = 0;
+
+ ySize = menuBar() -> size().height() + toolBar() -> size().height() + ((mapAsker*) p_askWidget)->mapSize().height();
+ return QSize(p_underLeftWidget -> size().width() + ((mapAsker*) p_askWidget)->mapSize().width() + 1, ySize + 1);
+}
+
+void kgeography::putAskWidget()
+{
+ p_bigWidget -> setStretchFactor(p_askWidget, 1);
+ p_askWidget -> show();
+ connect(p_askWidget, SIGNAL(setZoomActionChecked(bool)), p_zoom, SLOT(setChecked(bool)));
+ connect(p_zoom, SIGNAL(toggled(bool)), p_askWidget, SLOT(setZoom(bool)));
+ connect(p_zoomOriginal, SIGNAL(activated()), p_askWidget, SLOT(setOriginalZoom()));
+ connect(p_askWidget, SIGNAL(setMoveActionEnabled(bool)), p_move, SLOT(setEnabled(bool)));
+ connect(p_askWidget, SIGNAL(setMoveActionChecked(bool)), p_move, SLOT(setChecked(bool)));
+ connect(p_move, SIGNAL(toggled(bool)), p_askWidget, SLOT(setMovement(bool)));
+ connect(p_askWidget, SIGNAL(questionsEnded()), this, SLOT(showResultsDialog()));
+}
+
+void kgeography::setMap(KGmap *m)
+{
+ removeOldAskWidget();
+ kgeographySettings *set = kgeographySettings::self();
+ set -> setLastMap(m -> getFile());
+ set -> writeConfig();
+ delete p_map;
+ p_map = m;
+
+ QString sw = i18n("There are two ways of dealing with the translation of \"Current map: %1\". The first option simply replaces %1 with the translated name of the relevant region. If the grammar of your language allows this, choose this option by setting the translation of this message to 1, and leave untranslated the translations of \"Current map: %1\" that have the placename embedded (or translate them as - if you wish to show the file as fully translated. The second option is to translate all messages in full - this is likely to be required in the case of highly-inflected languages like Russian. To choose this option, set the translation of this message to 0, and translate all the messages.", "0");
+ if (sw == "1")
+ {
+ QString mapName = i18n(p_map -> getFileName().utf8(), p_map -> getName().utf8());
+ QString text = i18n("<qt>Current map:<br><b>%1<b></qt>");
+ p_currentMap -> setText(text.arg(mapName));
+ }
+ else
+ {
+ QString s = QString("<qt>Current map:<br><b>%1</b></qt>").arg(p_map -> getName());
+ p_currentMap -> setText(i18n(p_map -> getFileName().utf8(), s.utf8()));
+ }
+ p_consult -> setEnabled(true);
+ p_askMap -> setEnabled(true);
+ p_askFlagDivisions -> setEnabled(m -> hasAllFlags());
+ p_askDivisionFlags -> setEnabled(m -> hasAllFlags());
+ p_askCapitalDivisions -> setEnabled(true);
+ p_askDivisionCapitals -> setEnabled(true);
+ consult();
+}
+
+void kgeography::disclaimer()
+{
+ KMessageBox::information(this, i18n("Maps, flags, translations, etc. are as accurate as their respective authors could achieve, but KGeography should not be taken as an authoritative source."), i18n("Disclaimer"));
+}
+
+void kgeography::resizeMainWindow()
+{
+ if (p_askWidget) resize(getPreferredSize());
+}
+
+void kgeography::showResultsDialog()
+{
+ if (p_mustShowResultsDialog)
+ {
+ p_mustShowResultsDialog = false;
+ int ca = p_askWidget -> correctAnswers();
+ QString q = p_askWidget -> getQuestionHook();
+ QValueVector<userAnswer> ua = p_askWidget -> userAnswers();
+
+ consult();
+
+ answersDialog *ad = new answersDialog(this, ua, q, ca);
+ ad -> exec();
+ delete ad;
+ }
+}
+
+#include "kgeography.moc"
diff --git a/kgeography/src/kgeography.desktop b/kgeography/src/kgeography.desktop
new file mode 100644
index 00000000..4820d65b
--- /dev/null
+++ b/kgeography/src/kgeography.desktop
@@ -0,0 +1,116 @@
+[Desktop Entry]
+Name=KGeography
+Name[bn]=কে-জিওগ্রাফি
+Name[hr]=KZemljopis
+Name[nds]=KGeographie
+Name[ne]=केडीई भूगोल
+Name[pa]=ਕੇ-ਭੂਗੋਲ
+Name[sv]=Kgeografi
+Name[vi]=Địa lý K
+GenericName=Geography Trainer
+GenericName[be]=Настаўнік па геаграфіі
+GenericName[bg]=Географски тренировки
+GenericName[bn]=ভূগোল প্রশিক্ষক
+GenericName[bs]=Učitelj geografije
+GenericName[ca]=Entrenador de geografia
+GenericName[cs]=Procvičování zeměpisu
+GenericName[csb]=Cwiczënczi z geògrafiji
+GenericName[cy]=Hyfforddydd Daearyddiaeth
+GenericName[da]=Geografitræner
+GenericName[de]=Geographie-Trainer
+GenericName[el]=Εκπαιδευτής στη γεωγραφία
+GenericName[eo]=Geografia trajnilo
+GenericName[es]=Geografía
+GenericName[et]=Geograafia õpiprogramm
+GenericName[eu]=Geografia entrenatzailea
+GenericName[fa]=مربی جغرافیا
+GenericName[fi]=Maantieteen harjoittaja
+GenericName[fr]=Apprentissage de la géographie
+GenericName[ga]=Traenálaí Tíreolaíochta
+GenericName[gl]=Titor de Xeografía
+GenericName[he]=מאמן גאוגרפיה
+GenericName[hr]=Vježbanje u zemljopisu
+GenericName[hu]=Földrajztanító
+GenericName[is]=Landafræðiþjálfun
+GenericName[it]=Impara la geografia
+GenericName[ja]=地理学トレーナー
+GenericName[ka]=გეოგრაფიის სავარჯიშოები
+GenericName[km]=កម្មវិធី​បង្ហាត់​ភូមិវិទ្យា
+GenericName[lt]=Geografijos treniruoklis
+GenericName[ms]=Jurulatih Geografi
+GenericName[nb]=Geografitrening
+GenericName[nds]=Eerdkunn lehren
+GenericName[ne]=भूगोल शिक्षक
+GenericName[nl]=Geografietrainer
+GenericName[nn]=Geografiøvingssystem
+GenericName[pa]=ਭੂਗੋਲ ਸਿਖਲਾਈ
+GenericName[pl]=Ćwiczenia z geografii
+GenericName[pt]=Treinar Geografia
+GenericName[pt_BR]=Treinamento em Geografia
+GenericName[ru]=Тренировка знаний по географии
+GenericName[sk]=Geografický tréner
+GenericName[sl]=Učenje zemljepisa
+GenericName[sr]=Тренер географије
+GenericName[sr@Latn]=Trener geografije
+GenericName[sv]=Geografiövning
+GenericName[tr]=Coğrafya Eğitmeni
+GenericName[uk]=Тренування знань з географії
+GenericName[vi]=Luyện tập Địa lý
+GenericName[zh_CN]=地理老师
+GenericName[zh_TW]=地理知識
+Comment=A Geography Learning Program
+Comment[be]=Праграма для вывучэння геаграфіі
+Comment[bg]=Програма за изучаване на география
+Comment[bn]=ভূগোল শেখার প্রোগ্রাম
+Comment[bs]=Program za učenje geografije
+Comment[ca]=Un programa per aprendre geografia
+Comment[cs]=Zeměpisný výukový program
+Comment[csb]=Programa do ùczbë geògrafiji
+Comment[cy]=Rhaglen ar gyfer Dysgu Daearyddiaeth
+Comment[da]=Et indlæringsprogram for geografi
+Comment[de]=Ein Geographie-Lernprogramm
+Comment[el]=Μία εφαρμογή εκμάθησης γεωγραφίας
+Comment[eo]=Programo por lerni geografion
+Comment[es]=Un programa para conocer los países y sus capitales
+Comment[et]=Geograafia õpiprogramm
+Comment[eu]=Geografia ikasteko programa
+Comment[fa]=برنامۀ یادگیری جغرافیا
+Comment[fi]=Maantieteen oppimisohjelma
+Comment[fr]=Un programme d'apprentissage de la géographie
+Comment[ga]=Clár Foghlamtha Tíreolaíochta
+Comment[gl]=Un programa para Aprender Xeografía
+Comment[he]=תוכנה ללמידת גאוגרפיה
+Comment[hr]=Program za učenje zemljopisa
+Comment[hu]=Földrajztanító program
+Comment[is]=Landafræði forrit
+Comment[it]=Un programma per imparare la geografia
+Comment[ja]=地理学学習プログラム
+Comment[ka]=გეოგრაფიის სასწავლო პროგრამა
+Comment[km]=កម្មវិធី​រៀន​ភូមិវិទ្យា
+Comment[lt]=Geografijos mokymo programa
+Comment[nb]=Et program for å lære geografi
+Comment[nds]=En Eerdkunn-Lehrprogramm
+Comment[ne]=भूगोल सिक्ने कार्यक्रम
+Comment[nl]=Een geografie leerprogramma
+Comment[nn]=Eit program for å læra geografi
+Comment[pa]=ਭੂਗੋਲ ਸਿਖਾਉਣ ਵਾਲਾ ਪਰੋਗਰਾਮ
+Comment[pl]=Program do nauki geografii
+Comment[pt]=Um Programa de Aprendizagem de Geografia
+Comment[pt_BR]=Um programa de aprendizagem de geografia
+Comment[ru]=Программа для изучения географии
+Comment[sk]=Geografický výukový program
+Comment[sl]=Program za učenje zemljepisa
+Comment[sr]=Програм за учење географије
+Comment[sr@Latn]=Program za učenje geografije
+Comment[sv]=Ett program för att lära sig geografi
+Comment[tr]=Bir Coğrafya Öğrenme Programı
+Comment[uk]=Програма для вивчення географії
+Comment[vi]=Một Chương trình giúp Học Địa lý
+Comment[zh_CN]=地理学习程序
+Comment[zh_TW]=學習地理的程式
+Exec=kgeography
+Icon=kgeography
+Type=Application
+DocPath=kgeography/index.html
+Terminal=false
+Categories=Qt;KDE;Education;
diff --git a/kgeography/src/kgeography.h b/kgeography/src/kgeography.h
new file mode 100644
index 00000000..86e79cc5
--- /dev/null
+++ b/kgeography/src/kgeography.h
@@ -0,0 +1,75 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef KGEOGRAPHY_H
+#define KGEOGRAPHY_H
+
+#include <kmainwindow.h>
+
+class KAction;
+class KPushButton;
+class KToggleAction;
+
+class QHBox;
+class QLabel;
+class QVBox;
+
+class KGmap;
+class askWidget;
+
+class kgeography : public KMainWindow
+{
+Q_OBJECT
+ public:
+ kgeography();
+ ~kgeography();
+
+ protected:
+ void showEvent(QShowEvent *e);
+
+ private slots:
+ void openMap();
+
+ void consult();
+ void askCapitalDivisions();
+ void askDivisionCapitals();
+ void askMap();
+ void askFlagDivisions();
+ void askDivisionFlags();
+ void disclaimer();
+ void resizeMainWindow();
+ void showResultsDialog();
+
+ private:
+ QSize getPreferredSize();
+
+ void putAskWidget();
+ void removeOldAskWidget();
+ void setMap(KGmap *m);
+
+ QHBox *p_bigWidget;
+ QVBox *p_underLeftWidget;
+
+ KPushButton *p_consult;
+ KPushButton *p_askCapitalDivisions;
+ KPushButton *p_askDivisionCapitals;
+ KPushButton *p_askMap;
+ KPushButton *p_askFlagDivisions;
+ KPushButton *p_askDivisionFlags;
+ KToggleAction *p_zoom, *p_move;
+ KAction *p_zoomOriginal;
+ QLabel *p_currentMap;
+
+ KGmap *p_map;
+ askWidget *p_askWidget;
+ bool p_firstShow, p_mustShowResultsDialog;
+};
+
+#endif
diff --git a/kgeography/src/kgeography.kcfg b/kgeography/src/kgeography.kcfg
new file mode 100644
index 00000000..8904f888
--- /dev/null
+++ b/kgeography/src/kgeography.kcfg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
+ http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
+ <kcfgfile name="kgeographyrc"/>
+ <group name="general">
+ <entry name="lastMap" type="String">
+ <label>The last opened map</label>
+ </entry>
+ </group>
+</kcfg>
diff --git a/kgeography/src/kgeographyui.rc b/kgeography/src/kgeographyui.rc
new file mode 100644
index 00000000..b934b6d3
--- /dev/null
+++ b/kgeography/src/kgeographyui.rc
@@ -0,0 +1,25 @@
+<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+<kpartgui name="kgeography" version="1">
+ <MenuBar>
+ <Menu name="file">
+ <Action name="openMap" />
+ <Separator />
+ <Action name="quit" />
+ </Menu>
+ <Menu name="view">
+ <Action name="zoom_select" />
+ <Action name="zoom_original" />
+ <Separator />
+ <Action name="move" />
+ </Menu>
+ <Menu name="help">
+ <Action name="disclaimer"/>
+ </Menu>
+ </MenuBar>
+ <ToolBar name="mainToolBar">
+ <Action name="zoom_select" />
+ <Action name="zoom_original" />
+ <Separator />
+ <Action name="move" />
+ </ToolBar>
+</kpartgui>
diff --git a/kgeography/src/main.cpp b/kgeography/src/main.cpp
new file mode 100644
index 00000000..e7b9d6ab
--- /dev/null
+++ b/kgeography/src/main.cpp
@@ -0,0 +1,37 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <kaboutdata.h>
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+
+#include "kgeography.h"
+
+int main(int argc, char *argv[])
+{
+ KAboutData about("kgeography", I18N_NOOP("KGeography"), "0.4.4", I18N_NOOP("A geography learning program"), KAboutData::License_GPL, "© 2004-2005 Albert Astals Cid", 0, "http://kgeography.berlios.de");
+ about.addAuthor("Albert Astals Cid", I18N_NOOP("Programmer and designer"), "tsdgeos@terra.es");
+ about.addCredit("Danny Allen", I18N_NOOP("Small refinements"), "danny@dannyallen.co.uk");
+ about.addCredit("Giuseppe Caruso", I18N_NOOP("Italy flags and Italy by provinces map"), "caruso@pietrobo.com");
+ about.addCredit("Melody Fink", I18N_NOOP("Map contributor"));
+ about.addCredit("Mikolaj Machowski", I18N_NOOP("Map contributor"));
+ about.addCredit("Ed Montgomery", I18N_NOOP("Map contributor"));
+ about.addCredit("Justin Morgan", I18N_NOOP("Map contributor"));
+ about.addCredit("Frank Mutsaers", I18N_NOOP("Map contributor"));
+ about.addCredit("Maurizio Paolini", I18N_NOOP("Map contributor"));
+ about.addCredit("Yann Verley", I18N_NOOP("Contributed some maps and map generation tools"), "yann.verley@free.fr");
+ about.addCredit(I18N_NOOP("Sodipodi flags collection"), I18N_NOOP("Got some flags from it"), 0, "http://www.sodipodi.com/index.php3?section=clipart/flags");
+ KCmdLineArgs::init(argc, argv, &about);
+ KApplication app;
+
+ app.setTopWidget(new kgeography());
+
+ return app.exec();
+}
diff --git a/kgeography/src/map.cpp b/kgeography/src/map.cpp
new file mode 100644
index 00000000..be681191
--- /dev/null
+++ b/kgeography/src/map.cpp
@@ -0,0 +1,156 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <stdlib.h> // for RAND_MAX
+
+#include <kapplication.h>
+#include <klocale.h>
+
+#include <qfile.h>
+#include <qfileinfo.h>
+
+#include "division.h"
+#include "map.h"
+
+KGmap::KGmap()
+{
+ p_hasAllFlags = true;
+}
+
+KGmap::~KGmap()
+{
+ QMap<QRgb, division*>::iterator it;
+ it = p_colorMap.begin();
+ while (it != p_colorMap.end())
+ {
+ delete it.data();
+ p_colorMap.remove(it);
+ it = p_colorMap.begin();
+ }
+}
+
+bool KGmap::addDivision(division *c)
+{
+ bool b;
+ if (p_nameMap.find(c -> getName()) == p_nameMap.end() &&
+ p_colorMap.find(c -> getRGB()) == p_colorMap.end())
+ {
+ p_colorMap.insert(c -> getRGB(), c);
+ p_nameMap.insert(c -> getName(), c);
+ b = true;
+ if (c -> canAsk(false)) p_hasAllFlags = p_hasAllFlags && !c -> getFlagFile().isNull();
+ }
+ else b = false;
+ return b;
+}
+
+void KGmap::setFile(const QString &s)
+{
+ p_file = s;
+}
+
+bool KGmap::setMapFile(const QString &s)
+{
+ p_mapFile = s;
+ return QFile::exists(s);
+}
+
+void KGmap::setName(const QString &s)
+{
+ p_name = s;
+}
+
+uint KGmap::count(bool clickDivisionMode) const
+{
+ QValueList<division*> aux = p_nameMap.values();
+ QValueList<division*>::const_iterator it = aux.begin();
+ QValueList<division*>::const_iterator end = aux.end();
+ uint count = 0;
+ for( ; it != end; ++it)
+ {
+ if ((*it)->canAsk(clickDivisionMode)) count++;
+ }
+ return count;
+}
+
+bool KGmap::hasAllFlags() const
+{
+ return p_hasAllFlags;
+}
+
+QString KGmap::getDivisionFlagFile(const QString &s) const
+{
+ return p_nameMap[s] -> getFlagFile();
+}
+
+QString KGmap::getDivisionCapital(const QString &s) const
+{
+ return p_nameMap[s] -> getCapital();
+}
+
+QString KGmap::getFile() const
+{
+ return p_file;
+}
+
+QString KGmap::getFileName() const
+{
+ QFileInfo fi(p_file);
+ return fi.fileName();
+}
+
+QString KGmap::getMapFile() const
+{
+ return p_mapFile;
+}
+
+QString KGmap::getName() const
+{
+ return p_name;
+}
+
+QString KGmap::getRandomDivision(bool clickDivisionMode) const
+{
+ QValueList<division*> aux;
+ int i = (int)((float)p_nameMap.size() * kapp -> random() / (RAND_MAX + 1.0));
+ aux = p_nameMap.values();
+ if (!aux[i] -> canAsk(clickDivisionMode)) return getRandomDivision(clickDivisionMode);
+ else return aux[i] -> getName();
+}
+
+QString KGmap::getWhatIs(QRgb c, bool all) const
+{
+ // this is only asked from mapasker.cpp hence the true in canAsk
+ QMap<QRgb, division*>::const_iterator it;
+ it = p_colorMap.find(c);
+ if (it == p_colorMap.end()) return "nothing";
+ else
+ {
+ if (all) return it.data() -> getName();
+ else if (it.data() -> canAsk(true)) return it.data() -> getName();
+ else return "";
+ }
+}
+
+QColor KGmap::getColor(const QString &s) const
+{
+ QValueList<division*> divisions;
+ QValueList<QRgb> colors;
+ division *d;
+ int i;
+
+ d = p_nameMap[s];
+ divisions = p_colorMap.values();
+ colors = p_colorMap.keys();
+
+ i = 0;
+ while(divisions[i] != d) i++;
+ return QColor(colors[i]);
+}
diff --git a/kgeography/src/map.h b/kgeography/src/map.h
new file mode 100644
index 00000000..0eb08f53
--- /dev/null
+++ b/kgeography/src/map.h
@@ -0,0 +1,52 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef MAP_H
+#define MAP_H
+
+#include <qcolor.h>
+#include <qmap.h>
+
+class division;
+
+class KGmap
+{
+ public:
+ KGmap();
+ ~KGmap();
+
+ bool addDivision(division *d);
+
+ void setFile(const QString &s);
+ bool setMapFile(const QString &s);
+ void setName(const QString &s);
+
+ // return the number of askable divisions
+ uint count(bool clickDivisionMode) const;
+ bool hasAllFlags() const;
+ QString getDivisionFlagFile(const QString &s) const;
+ QString getDivisionCapital(const QString &s) const;
+ QString getFile() const;
+ QString getFileName() const;
+ QString getMapFile() const;
+ QString getName() const;
+ QString getRandomDivision(bool clickDivisionMode) const;
+ QString getWhatIs(QRgb c, bool all) const;
+ QColor getColor(const QString &s) const;
+
+ private:
+ QMap<QRgb, division*> p_colorMap;
+ QMap<QString, division*> p_nameMap;
+
+ QString p_name, p_file, p_mapFile;
+ bool p_hasAllFlags;
+};
+
+#endif
diff --git a/kgeography/src/mapasker.cpp b/kgeography/src/mapasker.cpp
new file mode 100644
index 00000000..aca0b379
--- /dev/null
+++ b/kgeography/src/mapasker.cpp
@@ -0,0 +1,209 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <klocale.h>
+#include <kmessagebox.h>
+
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qscrollbar.h>
+#include <qstring.h>
+
+#include "map.h"
+#include "mapasker.h"
+#include "mapwidget.h"
+
+mapAsker::mapAsker(QWidget *parent, KGmap *m, QWidget *w, bool asker, uint count) : askWidget(parent, m, w, count, asker), p_popupManager(this), p_asker(asker), p_firstShow(true)
+{
+ QGridLayout *lay = new QGridLayout(this, 2, 2);
+
+ p_mapWidget = new mapWidget(this);
+ lay -> addWidget(p_mapWidget, 0, 0);
+
+ p_hsb = new QScrollBar(Horizontal, this);
+ lay -> addWidget(p_hsb, 1, 0);
+ p_vsb = new QScrollBar(Vertical, this);
+ lay -> addWidget(p_vsb, 0, 1);
+
+ lay -> setRowStretch(2, 1);
+ lay -> setColStretch(2, 1);
+
+ p_shouldClearPopup = false;
+
+ connect(p_mapWidget, SIGNAL(clicked(QRgb, const QPoint&)), this, SLOT(handleMapClick(QRgb, const QPoint&)));
+ connect(p_mapWidget, SIGNAL(setMoveActionChecked(bool)), this, SIGNAL(setMoveActionChecked(bool)));
+ connect(p_mapWidget, SIGNAL(setZoomActionChecked(bool)), this, SIGNAL(setZoomActionChecked(bool)));
+ connect(p_mapWidget, SIGNAL(setMoveActionEnabled(bool)), this, SIGNAL(setMoveActionEnabled(bool)));
+ connect(p_mapWidget, SIGNAL(setMoveActionEnabled(bool)), this, SLOT(showScrollBars(bool)));
+ connect(p_mapWidget, SIGNAL(updatePosition(int, int)), this, SLOT(setScrollBarsPosition(int, int)));
+ connect(p_mapWidget, SIGNAL(updateVisibleSize(int, int)), this, SLOT(setScrollBarsVisibleSize(int, int)));
+ connect(p_mapWidget, SIGNAL(updateMaximumSize(int, int)), this, SLOT(setScrollBarsMaximumSize(int, int)));
+
+ connect(p_hsb, SIGNAL(valueChanged(int)), p_mapWidget, SLOT(updateHPosition(int)));
+ connect(p_vsb, SIGNAL(valueChanged(int)), p_mapWidget, SLOT(updateVPosition(int)));
+
+ if (asker)
+ {
+ QBoxLayout *vbl = dynamic_cast<QBoxLayout*>(w -> layout());
+ p_next = new QLabel(w);
+ p_next -> setAlignment(AlignTop | AlignHCenter);
+ p_fill = new QWidget(w);
+ p_fill -> show();
+ vbl -> setStretchFactor(p_fill, 1);
+ nextQuestion();
+ }
+ else
+ {
+ p_next = 0;
+ p_fill = 0;
+ }
+}
+
+mapAsker::~mapAsker()
+{
+ delete p_next;
+ delete p_fill;
+}
+
+bool mapAsker::isAsker() const
+{
+ return p_answers;
+}
+
+void mapAsker::mousePressEvent(QMouseEvent*)
+{
+ p_popupManager.clear();
+}
+
+void mapAsker::setMovement(bool b)
+{
+ p_mapWidget -> setMapMove(b);
+ p_popupManager.clear();
+}
+
+void mapAsker::setZoom(bool b)
+{
+ p_mapWidget -> setMapZoom(b);
+ p_popupManager.clear();
+}
+
+void mapAsker::setOriginalZoom()
+{
+ p_mapWidget -> setOriginalImage();
+ p_popupManager.clear();
+}
+
+void mapAsker::handleMapClick(QRgb c, const QPoint &p)
+{
+ QString aux, cap;
+ aux = p_map -> getWhatIs(c, !p_asker);
+ if (aux == "nothing") KMessageBox::error(this, i18n("You have found a bug in a map. Please contact the author and tell the %1 map has nothing associated to color %2,%3,%4.").arg(p_map -> getFile()).arg(qRed(c)).arg(qGreen(c)).arg(qBlue(c)));
+ else if (p_shouldClearPopup)
+ {
+ p_popupManager.clear();
+ p_shouldClearPopup = false;
+ }
+ else if (!p_asker)
+ {
+ QString flagFile;
+ cap = p_map -> getDivisionCapital(aux);
+ if (!cap.isEmpty())
+ {
+ flagFile = p_map -> getDivisionFlagFile(aux);
+ cap = i18n(p_map -> getFileName().utf8(), cap.utf8());
+ }
+
+ aux = i18n(p_map -> getFileName().utf8(), aux.utf8());
+
+ if (!flagFile.isEmpty()) p_popupManager.show(aux, cap, p, flagFile);
+ else if (!cap.isEmpty()) p_popupManager.show(aux, cap, p);
+ else p_popupManager.show(aux, p);
+ }
+ else if (!aux.isEmpty())
+ {
+ p_currentAnswer.setAnswer(QColor(c));
+ questionAnswered(aux == lastDivisionAsked());
+ nextQuestion();
+ }
+}
+
+void mapAsker::showScrollBars(bool b)
+{
+ if (b)
+ {
+ p_hsb -> show();
+ p_vsb -> show();
+ }
+ else
+ {
+ p_hsb -> hide();
+ p_vsb -> hide();
+ }
+}
+
+void mapAsker::setScrollBarsPosition(int x, int y)
+{
+ p_hsb -> setValue(x);
+ p_vsb -> setValue(y);
+}
+
+void mapAsker::setScrollBarsVisibleSize(int w, int h)
+{
+ p_hsb -> setMaxValue(p_hsbms - w);
+ p_hsb -> setPageStep(w);
+ p_vsb -> setMaxValue(p_vsbms - h);
+ p_vsb -> setPageStep(h);
+}
+
+void mapAsker::setScrollBarsMaximumSize(int w, int h)
+{
+ p_hsbms = w;
+ p_vsbms = h;
+}
+
+void mapAsker::nextQuestionHook(const QString &division)
+{
+ QString sw = i18n("There are two ways of dealing with the translation of \"Please click on: %1\". The first option simply replaces %1 with the translated name of the relevant region/city. If the grammar of your language allows this, choose this option by setting the translation of this message to 1, and leave untranslated the translations of \"Please click on: %1\" that have the placename embedded (or translate them as - if you wish to show the file as fully translated. The second option is to translate all messages in full - this is likely to be required in the case of highly-inflected languages like Russian. To choose this option, set the translation of this message to 0, and translate all the messages.", "0");
+ if (sw == "1")
+ {
+ QString divisionName = i18n(p_map -> getFileName().utf8(), division.utf8());
+ QString text = i18n("Please click on:\n%1");
+ p_next -> setText(text.arg(divisionName));
+ }
+ else
+ {
+ QString s = QString("Please click on:\n%1").arg(division);
+ p_next -> setText(i18n(p_map -> getFileName().utf8(), s.utf8()));
+ }
+ p_currentAnswer.setQuestion(i18n(p_map -> getFileName().utf8(), division.utf8()));
+ p_next -> show();
+ p_currentAnswer.setCorrectAnswer(p_map -> getColor(division));
+}
+
+QString mapAsker::getQuestionHook() const
+{
+ return i18n("Division in Map");
+}
+
+void mapAsker::showEvent(QShowEvent *)
+{
+ if (p_firstShow)
+ {
+ p_mapWidget -> init(p_map -> getMapFile(), p_vsb->width(), p_hsb->height());
+ p_firstShow = false;
+ }
+}
+
+QSize mapAsker::mapSize() const
+{
+ return p_mapWidget -> mapSize();
+}
+
+#include "mapasker.moc"
diff --git a/kgeography/src/mapasker.h b/kgeography/src/mapasker.h
new file mode 100644
index 00000000..fbddae96
--- /dev/null
+++ b/kgeography/src/mapasker.h
@@ -0,0 +1,67 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef MAPASKER_H
+#define MAPASKER_H
+
+#include "askwidget.h"
+#include "popupmanager.h"
+
+class QLabel;
+class QScrollBar;
+class QSize;
+
+class flagDivisionAsker;
+class infoWidget;
+class mapWidget;
+
+class mapAsker : public askWidget
+{
+Q_OBJECT
+ public:
+ mapAsker(QWidget *parent, KGmap *m, QWidget *w, bool asker, uint count = 0);
+ ~mapAsker();
+
+ QSize mapSize() const;
+ bool isAsker() const;
+ virtual bool isClickOnDivision() const { return true; }
+
+ protected:
+ void nextQuestionHook(const QString &division);
+ void mousePressEvent(QMouseEvent *e);
+ QString getQuestionHook() const;
+ void showEvent(QShowEvent *e);
+
+ public slots:
+ void setMovement(bool b);
+ void setZoom(bool b);
+ void setOriginalZoom();
+
+ private slots:
+ void handleMapClick(QRgb c, const QPoint &p);
+ void setScrollBarsPosition(int x, int y);
+ void setScrollBarsVisibleSize(int w, int h);
+ void setScrollBarsMaximumSize(int w, int h);
+ void showScrollBars(bool b);
+
+ private:
+ QLabel *p_next;
+ QWidget *p_fill;
+ QScrollBar *p_hsb, *p_vsb;
+ int p_hsbms, p_vsbms; //H and V maximum size for scrollbars
+
+ infoWidget *p_infoWidget;
+ mapWidget *p_mapWidget;
+
+ popupManager p_popupManager;
+ bool p_shouldClearPopup, p_asker, p_firstShow;
+};
+
+#endif
diff --git a/kgeography/src/mapchooser.cpp b/kgeography/src/mapchooser.cpp
new file mode 100644
index 00000000..57dcb1c9
--- /dev/null
+++ b/kgeography/src/mapchooser.cpp
@@ -0,0 +1,93 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <klocale.h>
+#include <kglobal.h>
+#include <kmessagebox.h>
+#include <kstandarddirs.h>
+
+#include <qhbox.h>
+#include <qimage.h>
+#include <qlayout.h>
+
+#include "mapchooser.h"
+
+mapChooser::mapChooser(QWidget *parent) : KDialogBase(parent, 0, true, i18n("Choose Map to Use"), KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, true)
+{
+ QHBox *mainHB;
+ QStringList list;
+ KGmap *m;
+ QWidget *mapArea;
+ QGridLayout *mapLay;
+
+ mainHB = new QHBox(this);
+ mainHB -> setSpacing(KDialog::spacingHint());
+ list = KGlobal::dirs() -> findAllResources("appdata", "*.kgm");
+ p_listBox = new QListBox(mainHB);
+ QStringList::iterator it;
+ for(it = list.begin(); it != list.end(); ++it)
+ {
+ if (!p_reader.parseMap(*it))
+ {
+ KMessageBox::error(this, i18n("Error parsing %1: %2").arg(*it).arg(p_reader.getError()));
+ delete p_reader.getMap();
+ }
+ else
+ {
+ m = p_reader.getMap();
+ QString text = i18n(m -> getFileName().utf8(), m -> getName().utf8());
+ p_listBox -> insertItem(text);
+ p_maps.insert(text, m);
+ }
+ }
+
+ mapArea = new QWidget(mainHB);
+ mapArea -> setFixedSize(300, 225);
+
+ mapLay = new QGridLayout(mapArea, 3, 3);
+
+ p_image = new QWidget(mapArea);
+ mapLay -> addWidget(p_image, 1, 1);
+
+ connect(p_listBox, SIGNAL(highlighted(const QString&)), this, SLOT(putImage(const QString&)));
+ connect(p_listBox, SIGNAL(selected(int)), this, SLOT(slotOk()));
+
+ setMainWidget(mainHB);
+
+ p_listBox -> sort();
+ if (p_listBox -> count() > 0) p_listBox -> setCurrentItem(0);
+ else enableButtonOK(false);
+}
+
+mapChooser::~mapChooser()
+{
+ p_maps.setAutoDelete(true);
+ p_maps.clear();
+}
+
+KGmap *mapChooser::getMap()
+{
+ KGmap *m;
+ m = p_maps[p_listBox -> currentText()];
+ p_maps.remove(p_listBox -> currentText());
+ return m;
+}
+
+void mapChooser::putImage(const QString &mapName)
+{
+ KGmap *m;
+ m = p_maps[mapName];
+ QImage image(m -> getMapFile());
+ image = image.smoothScale(300, 225, QImage::ScaleMin);
+ p_image -> setPaletteBackgroundPixmap(image);
+ p_image -> setFixedSize(image.size());
+}
+
+#include "mapchooser.moc"
diff --git a/kgeography/src/mapchooser.h b/kgeography/src/mapchooser.h
new file mode 100644
index 00000000..8fc5be08
--- /dev/null
+++ b/kgeography/src/mapchooser.h
@@ -0,0 +1,40 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef MAPCHOOSER_H
+#define MAPCHOOSER_H
+
+#include <kdialogbase.h>
+
+#include <qdict.h>
+
+#include "map.h"
+#include "mapparser.h"
+
+class mapChooser : public KDialogBase
+{
+Q_OBJECT
+ public:
+ mapChooser(QWidget *parent);
+ ~mapChooser();
+
+ KGmap *getMap();
+
+ private slots:
+ void putImage(const QString &mapName);
+
+ private:
+ QListBox *p_listBox;
+ QWidget *p_image;
+ mapReader p_reader;
+ QDict<KGmap> p_maps;
+};
+
+#endif
diff --git a/kgeography/src/mapparser.cpp b/kgeography/src/mapparser.cpp
new file mode 100644
index 00000000..97ca5306
--- /dev/null
+++ b/kgeography/src/mapparser.cpp
@@ -0,0 +1,279 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <klocale.h>
+
+#include "division.h"
+#include "map.h"
+#include "mapparser.h"
+
+/* unitReader */
+
+mapReader::mapReader() : QXmlSimpleReader()
+{
+}
+
+bool mapReader::parseMap(const QString &path)
+{
+ QString aux;
+ p_map = new KGmap();
+ p_map -> setFile(path);
+ aux = path.left(path.findRev('/') + 1); // aux = path but without the file name
+ mapParser handler(p_map, aux);
+ QFile xmlFile(path);
+ if (xmlFile.exists())
+ {
+ QXmlInputSource source(&xmlFile);
+ setContentHandler(&handler);
+ if (parse(source)) return true;
+ p_error = handler.errorString();
+ }
+ else
+ {
+ p_error = i18n("%1 does not exist.").arg(path);
+ }
+ return false;
+}
+
+QString mapReader::getError()
+{
+ return p_error;
+}
+
+KGmap *mapReader::getMap()
+{
+ return p_map;
+}
+
+/* mapParser */
+
+mapParser::mapParser(KGmap *m, const QString &path) : QXmlDefaultHandler(), p_map(m), p_path(path)
+{
+}
+
+bool mapParser::startDocument()
+{
+ p_mapNameSet = false;
+ p_mapFileSet = false;
+ return true;
+}
+
+bool mapParser::startElement(const QString&, const QString &name, const QString&, const QXmlAttributes&)
+{
+ QString prev;
+ bool b = true;
+ prev = getPreviousTag();
+ p_previousTags += ":" + name;
+ if (prev.isEmpty())
+ {
+ b = name == "map";
+ if (!b) p_error = i18n("The map description file should begin with the %1 tag").arg("map");
+ }
+ else if (prev == "map")
+ {
+ if (name != "mapFile" && name != "name" && name != "division")
+ {
+ b = false;
+ p_error = i18n("%1 is not a valid tag inside tag %2. Valid tags are %3, %4 and %5").arg(name).arg(prev).arg("mapFile").arg("name").arg("division");
+ }
+ else if ((name == "mapFile" && p_mapFileSet) || (name == "name" && p_mapNameSet))
+ {
+ b = false;
+ p_error = i18n("%1 tag has already been set").arg(name);
+ }
+ p_colorSet = false;
+ if (name == "division")
+ {
+ p_divisionNameSet = false;
+ p_divisionIgnoreSet = false;
+ p_flagFileSet = false;
+ p_capitalSet = false;
+ p_division = new division();
+ }
+ }
+ else if (prev == "mapFile" || prev == "name" || prev == "red" || prev == "green" || prev == "blue" ||
+ prev == "ignore")
+ {
+ b = false;
+ p_error = i18n("There can not be a tag inside %1 tag").arg(prev);
+ }
+ else if (prev == "division")
+ {
+ if (name != "color" && name != "name" && name != "ignore" && name != "flag" && name != "capital")
+ {
+ b = false;
+ p_error = i18n("%1 is not a valid tag inside tag %2. Valid tags are %3, %4, %5, %6 and %7").arg(name).arg(prev).arg("color").arg("name").arg("ignore").arg("capital").arg("flag");
+ }
+ else if ((name == "name" && p_divisionNameSet) || (name == "color" && p_colorSet) ||
+ (name == "ignore" && p_divisionIgnoreSet) || (name == "flag" && p_flagFileSet) ||
+ (name == "capital" && p_capitalSet))
+ {
+ b = false;
+ p_error = i18n("%1 tag has already been set").arg(name);
+ }
+ p_red = -1;
+ p_green = -1;
+ p_blue = -1;
+ }
+ else if (prev == "color")
+ {
+ b = (name == "red" && p_red == -1) || (name == "green" && p_green == -1) ||
+ (name == "blue" && p_blue == -1);
+ }
+ else b = false;
+ return b;
+}
+
+bool mapParser::endElement(const QString &, const QString &, const QString &)
+{
+ QString aux;
+ bool b;
+ aux = getPreviousTag();
+ b = true;
+ if (p_previousTags == ":map:name")
+ {
+ p_map -> setName(p_contents);
+ p_mapNameSet = true;
+ }
+ else if (p_previousTags == ":map:mapFile")
+ {
+ b = p_map -> setMapFile(p_path + p_contents);
+ p_mapFileSet = true;
+ if (!b) p_error = i18n("File %1 does not exist").arg(p_path + p_contents);
+ }
+ else if (aux == "division")
+ {
+ p_division -> setRGB(p_red, p_green , p_blue);
+ b = p_divisionNameSet;
+ if (!b) p_error = i18n("There is a division without name");
+ b = b && p_map -> addDivision(p_division);
+ if (!b) p_error = i18n("There is already either a division called %1 or a division with the same colors as %2").arg(p_division -> getName()).arg(p_division -> getName());
+ b = b && (p_capitalSet || !p_division -> canAsk(false));
+ if (!b) p_error = i18n("Division %1 has no capital").arg(p_division -> getName());
+ }
+ else if (p_previousTags == ":map:division:name")
+ {
+ p_divisionNameSet = true;
+ p_division -> setName(p_contents);
+ }
+ else if (p_previousTags == ":map:division:capital")
+ {
+ p_capitalSet = true;
+ p_division -> setCapital(p_contents);
+ }
+ else if (aux == "color")
+ {
+ if (p_red == -1)
+ {
+ b = false;
+ p_error = i18n("Tag %1 has not the %2 tag.").arg("<color>").arg("<red>");
+ }
+ else if (p_green == -1)
+ {
+ b = false;
+ p_error = i18n("Tag %1 has not the %2 tag.").arg("<color>").arg("<green>");
+ }
+ else if (p_blue == -1)
+ {
+ b = false;
+ p_error = i18n("Tag %1 has not the %2 tag.").arg("<color>").arg("<blue>");
+ }
+ else p_colorSet = true;
+ }
+ else if (aux == "red")
+ {
+ p_red = p_contents.toInt();
+ }
+ else if (aux == "green")
+ {
+ p_green = p_contents.toInt();
+ }
+ else if (aux == "blue")
+ {
+ p_blue = p_contents.toInt();
+ }
+ else if (aux == "ignore")
+ {
+ p_divisionIgnoreSet = true;
+ if (p_contents.lower() == "yes")
+ {
+ p_division -> setIgnore(true, false);
+ }
+ else if (p_contents.lower() == "no")
+ {
+ p_division -> setIgnore(false, false);
+ }
+ else if (p_contents.lower() == "allowclickmode")
+ {
+ p_division -> setIgnore(true, true);
+ }
+ else
+ {
+ b = false;
+ p_error = i18n("Invalid value in tag %1").arg("<ignore>");
+ }
+ }
+ else if (aux == "flag")
+ {
+ b = p_division -> setFlagFile(p_path + "flags/" + p_contents);
+ p_flagFileSet = true;
+ if (!b) p_error = i18n("Could not find flag file %1").arg(p_path + "flags/" + p_contents);
+ }
+ else if (aux == "map")
+ {
+ }
+ else b = false;
+ removeLastTag();
+ p_contents = QString::null;
+ return b;
+}
+
+bool mapParser::characters(const QString &ch)
+{
+ QString aux;
+ if (ch.simplifyWhiteSpace().length() == 0) return true;
+ aux = getPreviousTag();
+ if (aux == "mapFile" || aux == "name" || aux == "red" || aux == "green" || aux == "blue" || aux == "ignore" || aux == "flag" || aux == "capital")
+ {
+ p_contents += ch;
+ return true;
+ }
+ p_error = i18n("There are characters outside tags.");
+ return false;
+}
+
+bool mapParser::endDocument()
+{
+ QString aux;
+ if (p_mapNameSet && p_mapFileSet)
+ {
+ return true;
+ }
+ else if (!p_mapNameSet) aux = "name";
+ else if (!p_mapFileSet) aux = "mapFile";
+ p_error = i18n("Tag %1 is missing.").arg(aux);
+ return false;
+}
+
+QString mapParser::errorString()
+{
+ if (!p_error.isEmpty()) return p_error;
+ return i18n("The XML document is malformed.");
+}
+
+QString mapParser::getPreviousTag() const
+{
+ return p_previousTags.right(p_previousTags.length() - p_previousTags.findRev(':') - 1);
+}
+
+void mapParser::removeLastTag()
+{
+ p_previousTags = p_previousTags.left(p_previousTags.findRev(':'));
+}
diff --git a/kgeography/src/mapparser.h b/kgeography/src/mapparser.h
new file mode 100644
index 00000000..af3d6d1f
--- /dev/null
+++ b/kgeography/src/mapparser.h
@@ -0,0 +1,57 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef MAPPARSER_H
+#define MAPPARSER_H
+
+#include <qxml.h>
+
+class division;
+class KGmap;
+
+class mapReader : public QXmlSimpleReader
+{
+ public:
+ mapReader();
+
+ bool parseMap(const QString &path);
+ QString getError();
+ KGmap *getMap();
+
+ private:
+ QString p_error;
+ KGmap *p_map;
+};
+
+class mapParser : public QXmlDefaultHandler
+{
+ public:
+ mapParser(KGmap *m, const QString &path);
+ bool startDocument();
+ bool startElement(const QString&, const QString&, const QString&, const QXmlAttributes&);
+ bool endElement(const QString &, const QString &name, const QString &);
+ bool characters(const QString &ch);
+ bool endDocument();
+ QString errorString();
+
+ private:
+ QString getPreviousTag() const;
+ void removeLastTag();
+
+ division *p_division;
+ int p_red, p_green, p_blue;
+ KGmap *p_map;
+ bool p_allowChars, p_mapNameSet, p_mapFileSet;
+ bool p_divisionNameSet, p_colorSet, p_divisionIgnoreSet, p_flagFileSet, p_capitalSet;
+ const QString &p_path;
+ QString p_error, p_contents, p_previousTags;
+};
+
+#endif
diff --git a/kgeography/src/mapsdatatranslation.cpp b/kgeography/src/mapsdatatranslation.cpp
new file mode 100644
index 00000000..23fb3418
--- /dev/null
+++ b/kgeography/src/mapsdatatranslation.cpp
@@ -0,0 +1,4422 @@
+i18n("africa.kgm", "Africa");
+i18n("africa.kgm", "<qt>Current map:<br><b>Africa</b></qt>");
+i18n("africa.kgm", "Water");
+i18n("africa.kgm", "Coast");
+i18n("africa.kgm", "Frontier");
+i18n("africa.kgm", "Algeria");
+i18n("africa.kgm", "The capital of Algeria is...");
+i18n("africa.kgm", "Please click on:\nAlgeria");
+i18n("africa.kgm", "The flag of Algeria is...");
+i18n("africa.kgm", "Algiers");
+i18n("africa.kgm", "Algiers is the capital of...");
+i18n("africa.kgm", "Angola");
+i18n("africa.kgm", "The capital of Angola is...");
+i18n("africa.kgm", "Please click on:\nAngola");
+i18n("africa.kgm", "The flag of Angola is...");
+i18n("africa.kgm", "Luanda");
+i18n("africa.kgm", "Luanda is the capital of...");
+i18n("africa.kgm", "Benin");
+i18n("africa.kgm", "The capital of Benin is...");
+i18n("africa.kgm", "Please click on:\nBenin");
+i18n("africa.kgm", "The flag of Benin is...");
+i18n("africa.kgm", "Porto Novo");
+i18n("africa.kgm", "Porto Novo is the capital of...");
+i18n("africa.kgm", "Botswana");
+i18n("africa.kgm", "The capital of Botswana is...");
+i18n("africa.kgm", "Please click on:\nBotswana");
+i18n("africa.kgm", "The flag of Botswana is...");
+i18n("africa.kgm", "Gaborone");
+i18n("africa.kgm", "Gaborone is the capital of...");
+i18n("africa.kgm", "Burkina Faso");
+i18n("africa.kgm", "The capital of Burkina Faso is...");
+i18n("africa.kgm", "Please click on:\nBurkina Faso");
+i18n("africa.kgm", "The flag of Burkina Faso is...");
+i18n("africa.kgm", "Ouagadougou");
+i18n("africa.kgm", "Ouagadougou is the capital of...");
+i18n("africa.kgm", "Burundi");
+i18n("africa.kgm", "The capital of Burundi is...");
+i18n("africa.kgm", "Please click on:\nBurundi");
+i18n("africa.kgm", "The flag of Burundi is...");
+i18n("africa.kgm", "Bujumbura");
+i18n("africa.kgm", "Bujumbura is the capital of...");
+i18n("africa.kgm", "Cameroon");
+i18n("africa.kgm", "The capital of Cameroon is...");
+i18n("africa.kgm", "Please click on:\nCameroon");
+i18n("africa.kgm", "The flag of Cameroon is...");
+i18n("africa.kgm", "Yaoundé");
+i18n("africa.kgm", "Yaoundé is the capital of...");
+i18n("africa.kgm", "Central African Republic");
+i18n("africa.kgm", "The capital of Central African Republic is...");
+i18n("africa.kgm", "Please click on:\nCentral African Republic");
+i18n("africa.kgm", "The flag of Central African Republic is...");
+i18n("africa.kgm", "Bangui");
+i18n("africa.kgm", "Bangui is the capital of...");
+i18n("africa.kgm", "Chad");
+i18n("africa.kgm", "The capital of Chad is...");
+i18n("africa.kgm", "Please click on:\nChad");
+i18n("africa.kgm", "The flag of Chad is...");
+i18n("africa.kgm", "N'Djamena");
+i18n("africa.kgm", "N'Djamena is the capital of...");
+i18n("africa.kgm", "Côte d'Ivoire");
+i18n("africa.kgm", "The capital of Côte d'Ivoire is...");
+i18n("africa.kgm", "Please click on:\nCôte d'Ivoire");
+i18n("africa.kgm", "The flag of Côte d'Ivoire is...");
+i18n("africa.kgm", "Yamoussoukro");
+i18n("africa.kgm", "Yamoussoukro is the capital of...");
+i18n("africa.kgm", "Cyprus");
+i18n("africa.kgm", "Democratic Republic of the Congo");
+i18n("africa.kgm", "The capital of Democratic Republic of the Congo is...");
+i18n("africa.kgm", "Please click on:\nDemocratic Republic of the Congo");
+i18n("africa.kgm", "The flag of Democratic Republic of the Congo is...");
+i18n("africa.kgm", "Kinshasa");
+i18n("africa.kgm", "Kinshasa is the capital of...");
+i18n("africa.kgm", "Djibouti");
+i18n("africa.kgm", "The capital of Djibouti is...");
+i18n("africa.kgm", "Please click on:\nDjibouti");
+i18n("africa.kgm", "The flag of Djibouti is...");
+i18n("africa.kgm", "Djibouti");
+i18n("africa.kgm", "Djibouti is the capital of...");
+i18n("africa.kgm", "Egypt");
+i18n("africa.kgm", "The capital of Egypt is...");
+i18n("africa.kgm", "Please click on:\nEgypt");
+i18n("africa.kgm", "The flag of Egypt is...");
+i18n("africa.kgm", "Cairo");
+i18n("africa.kgm", "Cairo is the capital of...");
+i18n("africa.kgm", "Equatorial Guinea");
+i18n("africa.kgm", "The capital of Equatorial Guinea is...");
+i18n("africa.kgm", "Please click on:\nEquatorial Guinea");
+i18n("africa.kgm", "The flag of Equatorial Guinea is...");
+i18n("africa.kgm", "Malabo");
+i18n("africa.kgm", "Malabo is the capital of...");
+i18n("africa.kgm", "Eritrea");
+i18n("africa.kgm", "The capital of Eritrea is...");
+i18n("africa.kgm", "Please click on:\nEritrea");
+i18n("africa.kgm", "The flag of Eritrea is...");
+i18n("africa.kgm", "Asmara");
+i18n("africa.kgm", "Asmara is the capital of...");
+i18n("africa.kgm", "Ethiopia");
+i18n("africa.kgm", "The capital of Ethiopia is...");
+i18n("africa.kgm", "Please click on:\nEthiopia");
+i18n("africa.kgm", "The flag of Ethiopia is...");
+i18n("africa.kgm", "Addis Ababa");
+i18n("africa.kgm", "Addis Ababa is the capital of...");
+i18n("africa.kgm", "Gabon");
+i18n("africa.kgm", "The capital of Gabon is...");
+i18n("africa.kgm", "Please click on:\nGabon");
+i18n("africa.kgm", "The flag of Gabon is...");
+i18n("africa.kgm", "Libreville");
+i18n("africa.kgm", "Libreville is the capital of...");
+i18n("africa.kgm", "Ghana");
+i18n("africa.kgm", "The capital of Ghana is...");
+i18n("africa.kgm", "Please click on:\nGhana");
+i18n("africa.kgm", "The flag of Ghana is...");
+i18n("africa.kgm", "Accra");
+i18n("africa.kgm", "Accra is the capital of...");
+i18n("africa.kgm", "Greece");
+i18n("africa.kgm", "Guinea");
+i18n("africa.kgm", "The capital of Guinea is...");
+i18n("africa.kgm", "Please click on:\nGuinea");
+i18n("africa.kgm", "The flag of Guinea is...");
+i18n("africa.kgm", "Conakry");
+i18n("africa.kgm", "Conakry is the capital of...");
+i18n("africa.kgm", "Guinea-Bissau");
+i18n("africa.kgm", "The capital of Guinea-Bissau is...");
+i18n("africa.kgm", "Please click on:\nGuinea-Bissau");
+i18n("africa.kgm", "The flag of Guinea-Bissau is...");
+i18n("africa.kgm", "Bissau");
+i18n("africa.kgm", "Bissau is the capital of...");
+i18n("africa.kgm", "Iran");
+i18n("africa.kgm", "Iraq");
+i18n("africa.kgm", "Israel");
+i18n("africa.kgm", "Italy");
+i18n("africa.kgm", "Jordan");
+i18n("africa.kgm", "Kenya");
+i18n("africa.kgm", "The capital of Kenya is...");
+i18n("africa.kgm", "Please click on:\nKenya");
+i18n("africa.kgm", "The flag of Kenya is...");
+i18n("africa.kgm", "Nairobi");
+i18n("africa.kgm", "Nairobi is the capital of...");
+i18n("africa.kgm", "Kuwait");
+i18n("africa.kgm", "Lebanon");
+i18n("africa.kgm", "Lesotho");
+i18n("africa.kgm", "The capital of Lesotho is...");
+i18n("africa.kgm", "Please click on:\nLesotho");
+i18n("africa.kgm", "The flag of Lesotho is...");
+i18n("africa.kgm", "Maseru");
+i18n("africa.kgm", "Maseru is the capital of...");
+i18n("africa.kgm", "Liberia");
+i18n("africa.kgm", "The capital of Liberia is...");
+i18n("africa.kgm", "Please click on:\nLiberia");
+i18n("africa.kgm", "The flag of Liberia is...");
+i18n("africa.kgm", "Monrovia");
+i18n("africa.kgm", "Monrovia is the capital of...");
+i18n("africa.kgm", "Libya");
+i18n("africa.kgm", "The capital of Libya is...");
+i18n("africa.kgm", "Please click on:\nLibya");
+i18n("africa.kgm", "The flag of Libya is...");
+i18n("africa.kgm", "Tripoli");
+i18n("africa.kgm", "Tripoli is the capital of...");
+i18n("africa.kgm", "Madagascar");
+i18n("africa.kgm", "The capital of Madagascar is...");
+i18n("africa.kgm", "Please click on:\nMadagascar");
+i18n("africa.kgm", "The flag of Madagascar is...");
+i18n("africa.kgm", "Antananarivo");
+i18n("africa.kgm", "Antananarivo is the capital of...");
+i18n("africa.kgm", "Malawi");
+i18n("africa.kgm", "The capital of Malawi is...");
+i18n("africa.kgm", "Please click on:\nMalawi");
+i18n("africa.kgm", "The flag of Malawi is...");
+i18n("africa.kgm", "Lilongwe");
+i18n("africa.kgm", "Lilongwe is the capital of...");
+i18n("africa.kgm", "Mali");
+i18n("africa.kgm", "The capital of Mali is...");
+i18n("africa.kgm", "Please click on:\nMali");
+i18n("africa.kgm", "The flag of Mali is...");
+i18n("africa.kgm", "Bamako");
+i18n("africa.kgm", "Bamako is the capital of...");
+i18n("africa.kgm", "Mauritania");
+i18n("africa.kgm", "The capital of Mauritania is...");
+i18n("africa.kgm", "Please click on:\nMauritania");
+i18n("africa.kgm", "The flag of Mauritania is...");
+i18n("africa.kgm", "Nouakchott");
+i18n("africa.kgm", "Nouakchott is the capital of...");
+i18n("africa.kgm", "Morocco");
+i18n("africa.kgm", "The capital of Morocco is...");
+i18n("africa.kgm", "Please click on:\nMorocco");
+i18n("africa.kgm", "The flag of Morocco is...");
+i18n("africa.kgm", "Rabat");
+i18n("africa.kgm", "Rabat is the capital of...");
+i18n("africa.kgm", "Mozambique");
+i18n("africa.kgm", "The capital of Mozambique is...");
+i18n("africa.kgm", "Please click on:\nMozambique");
+i18n("africa.kgm", "The flag of Mozambique is...");
+i18n("africa.kgm", "Maputo");
+i18n("africa.kgm", "Maputo is the capital of...");
+i18n("africa.kgm", "Namibia");
+i18n("africa.kgm", "The capital of Namibia is...");
+i18n("africa.kgm", "Please click on:\nNamibia");
+i18n("africa.kgm", "The flag of Namibia is...");
+i18n("africa.kgm", "Windhoek");
+i18n("africa.kgm", "Windhoek is the capital of...");
+i18n("africa.kgm", "Niger");
+i18n("africa.kgm", "The capital of Niger is...");
+i18n("africa.kgm", "Please click on:\nNiger");
+i18n("africa.kgm", "The flag of Niger is...");
+i18n("africa.kgm", "Niamey");
+i18n("africa.kgm", "Niamey is the capital of...");
+i18n("africa.kgm", "Nigeria");
+i18n("africa.kgm", "The capital of Nigeria is...");
+i18n("africa.kgm", "Please click on:\nNigeria");
+i18n("africa.kgm", "The flag of Nigeria is...");
+i18n("africa.kgm", "Abuja");
+i18n("africa.kgm", "Abuja is the capital of...");
+i18n("africa.kgm", "Portugal");
+i18n("africa.kgm", "Qatar");
+i18n("africa.kgm", "Republic of the Congo");
+i18n("africa.kgm", "The capital of Republic of the Congo is...");
+i18n("africa.kgm", "Please click on:\nRepublic of the Congo");
+i18n("africa.kgm", "The flag of Republic of the Congo is...");
+i18n("africa.kgm", "Brazzaville");
+i18n("africa.kgm", "Brazzaville is the capital of...");
+i18n("africa.kgm", "Rwanda");
+i18n("africa.kgm", "The capital of Rwanda is...");
+i18n("africa.kgm", "Please click on:\nRwanda");
+i18n("africa.kgm", "The flag of Rwanda is...");
+i18n("africa.kgm", "Kigali");
+i18n("africa.kgm", "Kigali is the capital of...");
+i18n("africa.kgm", "Saudi Arabia");
+i18n("africa.kgm", "Senegal");
+i18n("africa.kgm", "The capital of Senegal is...");
+i18n("africa.kgm", "Please click on:\nSenegal");
+i18n("africa.kgm", "The flag of Senegal is...");
+i18n("africa.kgm", "Dakar");
+i18n("africa.kgm", "Dakar is the capital of...");
+i18n("africa.kgm", "Sierra Leone");
+i18n("africa.kgm", "The capital of Sierra Leone is...");
+i18n("africa.kgm", "Please click on:\nSierra Leone");
+i18n("africa.kgm", "The flag of Sierra Leone is...");
+i18n("africa.kgm", "Freetown");
+i18n("africa.kgm", "Freetown is the capital of...");
+i18n("africa.kgm", "Somalia");
+i18n("africa.kgm", "The capital of Somalia is...");
+i18n("africa.kgm", "Please click on:\nSomalia");
+i18n("africa.kgm", "The flag of Somalia is...");
+i18n("africa.kgm", "Mogadishu");
+i18n("africa.kgm", "Mogadishu is the capital of...");
+i18n("africa.kgm", "South Africa");
+i18n("africa.kgm", "The capital of South Africa is...");
+i18n("africa.kgm", "Please click on:\nSouth Africa");
+i18n("africa.kgm", "The flag of South Africa is...");
+i18n("africa.kgm", "Pretoria, Bloemfontein and Cape Town");
+i18n("africa.kgm", "Pretoria, Bloemfontein and Cape Town is the capital of...");
+i18n("africa.kgm", "Spain");
+i18n("africa.kgm", "Sudan");
+i18n("africa.kgm", "The capital of Sudan is...");
+i18n("africa.kgm", "Please click on:\nSudan");
+i18n("africa.kgm", "The flag of Sudan is...");
+i18n("africa.kgm", "Khartoum");
+i18n("africa.kgm", "Khartoum is the capital of...");
+i18n("africa.kgm", "Swaziland");
+i18n("africa.kgm", "The capital of Swaziland is...");
+i18n("africa.kgm", "Please click on:\nSwaziland");
+i18n("africa.kgm", "The flag of Swaziland is...");
+i18n("africa.kgm", "Mbabane");
+i18n("africa.kgm", "Mbabane is the capital of...");
+i18n("africa.kgm", "Syria");
+i18n("africa.kgm", "Tanzania");
+i18n("africa.kgm", "The capital of Tanzania is...");
+i18n("africa.kgm", "Please click on:\nTanzania");
+i18n("africa.kgm", "The flag of Tanzania is...");
+i18n("africa.kgm", "Dodoma");
+i18n("africa.kgm", "Dodoma is the capital of...");
+i18n("africa.kgm", "The Gambia");
+i18n("africa.kgm", "The capital of The Gambia is...");
+i18n("africa.kgm", "Please click on:\nThe Gambia");
+i18n("africa.kgm", "The flag of The Gambia is...");
+i18n("africa.kgm", "Banjul");
+i18n("africa.kgm", "Banjul is the capital of...");
+i18n("africa.kgm", "Togo");
+i18n("africa.kgm", "The capital of Togo is...");
+i18n("africa.kgm", "Please click on:\nTogo");
+i18n("africa.kgm", "The flag of Togo is...");
+i18n("africa.kgm", "Lomé");
+i18n("africa.kgm", "Lomé is the capital of...");
+i18n("africa.kgm", "Tunisia");
+i18n("africa.kgm", "The capital of Tunisia is...");
+i18n("africa.kgm", "Please click on:\nTunisia");
+i18n("africa.kgm", "The flag of Tunisia is...");
+i18n("africa.kgm", "Tunis");
+i18n("africa.kgm", "Tunis is the capital of...");
+i18n("africa.kgm", "Turkey");
+i18n("africa.kgm", "Turkmenistan");
+i18n("africa.kgm", "Uganda");
+i18n("africa.kgm", "The capital of Uganda is...");
+i18n("africa.kgm", "Please click on:\nUganda");
+i18n("africa.kgm", "The flag of Uganda is...");
+i18n("africa.kgm", "Kampala");
+i18n("africa.kgm", "Kampala is the capital of...");
+i18n("africa.kgm", "United Arab Emirates");
+i18n("africa.kgm", "West Bank");
+i18n("africa.kgm", "Western Sahara");
+i18n("africa.kgm", "The capital of Western Sahara is...");
+i18n("africa.kgm", "Please click on:\nWestern Sahara");
+i18n("africa.kgm", "The flag of Western Sahara is...");
+i18n("africa.kgm", "Laayoune");
+i18n("africa.kgm", "Laayoune is the capital of...");
+i18n("africa.kgm", "Yemen");
+i18n("africa.kgm", "Zambia");
+i18n("africa.kgm", "The capital of Zambia is...");
+i18n("africa.kgm", "Please click on:\nZambia");
+i18n("africa.kgm", "The flag of Zambia is...");
+i18n("africa.kgm", "Lusaka");
+i18n("africa.kgm", "Lusaka is the capital of...");
+i18n("africa.kgm", "Zimbabwe");
+i18n("africa.kgm", "The capital of Zimbabwe is...");
+i18n("africa.kgm", "Please click on:\nZimbabwe");
+i18n("africa.kgm", "The flag of Zimbabwe is...");
+i18n("africa.kgm", "Harare");
+i18n("africa.kgm", "Harare is the capital of...");
+i18n("asia.kgm", "Asia");
+i18n("asia.kgm", "<qt>Current map:<br><b>Asia</b></qt>");
+i18n("asia.kgm", "Not a Nation");
+i18n("asia.kgm", "Russia");
+i18n("asia.kgm", "The capital of Russia is...");
+i18n("asia.kgm", "Please click on:\nRussia");
+i18n("asia.kgm", "The flag of Russia is...");
+i18n("asia.kgm", "Moscow");
+i18n("asia.kgm", "Moscow is the capital of...");
+i18n("asia.kgm", "Turkey");
+i18n("asia.kgm", "The capital of Turkey is...");
+i18n("asia.kgm", "Please click on:\nTurkey");
+i18n("asia.kgm", "The flag of Turkey is...");
+i18n("asia.kgm", "Ankara");
+i18n("asia.kgm", "Ankara is the capital of...");
+i18n("asia.kgm", "Egypt");
+i18n("asia.kgm", "Djibouti");
+i18n("asia.kgm", "Eritrea");
+i18n("asia.kgm", "Ethiopia");
+i18n("asia.kgm", "Iran");
+i18n("asia.kgm", "The capital of Iran is...");
+i18n("asia.kgm", "Please click on:\nIran");
+i18n("asia.kgm", "The flag of Iran is...");
+i18n("asia.kgm", "Tehran");
+i18n("asia.kgm", "Tehran is the capital of...");
+i18n("asia.kgm", "Iraq");
+i18n("asia.kgm", "The capital of Iraq is...");
+i18n("asia.kgm", "Please click on:\nIraq");
+i18n("asia.kgm", "The flag of Iraq is...");
+i18n("asia.kgm", "Baghdad");
+i18n("asia.kgm", "Baghdad is the capital of...");
+i18n("asia.kgm", "Israel");
+i18n("asia.kgm", "The capital of Israel is...");
+i18n("asia.kgm", "Please click on:\nIsrael");
+i18n("asia.kgm", "The flag of Israel is...");
+i18n("asia.kgm", "Jerusalem");
+i18n("asia.kgm", "Jerusalem is the capital of...");
+i18n("asia.kgm", "Jordan");
+i18n("asia.kgm", "The capital of Jordan is...");
+i18n("asia.kgm", "Please click on:\nJordan");
+i18n("asia.kgm", "The flag of Jordan is...");
+i18n("asia.kgm", "Amman");
+i18n("asia.kgm", "Amman is the capital of...");
+i18n("asia.kgm", "Kenya");
+i18n("asia.kgm", "Kuwait");
+i18n("asia.kgm", "The capital of Kuwait is...");
+i18n("asia.kgm", "Please click on:\nKuwait");
+i18n("asia.kgm", "The flag of Kuwait is...");
+i18n("asia.kgm", "Kuwait City");
+i18n("asia.kgm", "Kuwait City is the capital of...");
+i18n("asia.kgm", "Lebanon");
+i18n("asia.kgm", "The capital of Lebanon is...");
+i18n("asia.kgm", "Please click on:\nLebanon");
+i18n("asia.kgm", "The flag of Lebanon is...");
+i18n("asia.kgm", "Beirut");
+i18n("asia.kgm", "Beirut is the capital of...");
+i18n("asia.kgm", "Qatar");
+i18n("asia.kgm", "The capital of Qatar is...");
+i18n("asia.kgm", "Please click on:\nQatar");
+i18n("asia.kgm", "The flag of Qatar is...");
+i18n("asia.kgm", "Doha");
+i18n("asia.kgm", "Doha is the capital of...");
+i18n("asia.kgm", "Saudi Arabia");
+i18n("asia.kgm", "The capital of Saudi Arabia is...");
+i18n("asia.kgm", "Please click on:\nSaudi Arabia");
+i18n("asia.kgm", "The flag of Saudi Arabia is...");
+i18n("asia.kgm", "Riyadh");
+i18n("asia.kgm", "Riyadh is the capital of...");
+i18n("asia.kgm", "Somalia");
+i18n("asia.kgm", "Sudan");
+i18n("asia.kgm", "Syria");
+i18n("asia.kgm", "The capital of Syria is...");
+i18n("asia.kgm", "Please click on:\nSyria");
+i18n("asia.kgm", "The flag of Syria is...");
+i18n("asia.kgm", "Damascus");
+i18n("asia.kgm", "Damascus is the capital of...");
+i18n("asia.kgm", "Uganda");
+i18n("asia.kgm", "United Arab Emirates");
+i18n("asia.kgm", "The capital of United Arab Emirates is...");
+i18n("asia.kgm", "Please click on:\nUnited Arab Emirates");
+i18n("asia.kgm", "The flag of United Arab Emirates is...");
+i18n("asia.kgm", "Abu Dhabi City");
+i18n("asia.kgm", "Abu Dhabi City is the capital of...");
+i18n("asia.kgm", "Oman");
+i18n("asia.kgm", "The capital of Oman is...");
+i18n("asia.kgm", "Please click on:\nOman");
+i18n("asia.kgm", "The flag of Oman is...");
+i18n("asia.kgm", "Muscat");
+i18n("asia.kgm", "Muscat is the capital of...");
+i18n("asia.kgm", "West Bank");
+i18n("asia.kgm", "Yemen");
+i18n("asia.kgm", "The capital of Yemen is...");
+i18n("asia.kgm", "Please click on:\nYemen");
+i18n("asia.kgm", "The flag of Yemen is...");
+i18n("asia.kgm", "Sana'a");
+i18n("asia.kgm", "Sana'a is the capital of...");
+i18n("asia.kgm", "Ukraine");
+i18n("asia.kgm", "China");
+i18n("asia.kgm", "The capital of China is...");
+i18n("asia.kgm", "Please click on:\nChina");
+i18n("asia.kgm", "The flag of China is...");
+i18n("asia.kgm", "Beijing");
+i18n("asia.kgm", "Beijing is the capital of...");
+i18n("asia.kgm", "India");
+i18n("asia.kgm", "The capital of India is...");
+i18n("asia.kgm", "Please click on:\nIndia");
+i18n("asia.kgm", "The flag of India is...");
+i18n("asia.kgm", "New Delhi");
+i18n("asia.kgm", "New Delhi is the capital of...");
+i18n("asia.kgm", "Sri Lanka");
+i18n("asia.kgm", "The capital of Sri Lanka is...");
+i18n("asia.kgm", "Please click on:\nSri Lanka");
+i18n("asia.kgm", "The flag of Sri Lanka is...");
+i18n("asia.kgm", "Colombo and Sri Jayewardenepura");
+i18n("asia.kgm", "Colombo and Sri Jayewardenepura is the capital of...");
+i18n("asia.kgm", "Mongolia");
+i18n("asia.kgm", "The capital of Mongolia is...");
+i18n("asia.kgm", "Please click on:\nMongolia");
+i18n("asia.kgm", "The flag of Mongolia is...");
+i18n("asia.kgm", "Ulaanbaatar");
+i18n("asia.kgm", "Ulaanbaatar is the capital of...");
+i18n("asia.kgm", "Kazakhstan");
+i18n("asia.kgm", "The capital of Kazakhstan is...");
+i18n("asia.kgm", "Please click on:\nKazakhstan");
+i18n("asia.kgm", "The flag of Kazakhstan is...");
+i18n("asia.kgm", "Astana");
+i18n("asia.kgm", "Astana is the capital of...");
+i18n("asia.kgm", "Japan");
+i18n("asia.kgm", "The capital of Japan is...");
+i18n("asia.kgm", "Please click on:\nJapan");
+i18n("asia.kgm", "The flag of Japan is...");
+i18n("asia.kgm", "Tokyo");
+i18n("asia.kgm", "Tokyo is the capital of...");
+i18n("asia.kgm", "Myanmar");
+i18n("asia.kgm", "The capital of Myanmar is...");
+i18n("asia.kgm", "Please click on:\nMyanmar");
+i18n("asia.kgm", "The flag of Myanmar is...");
+i18n("asia.kgm", "Naypyidaw");
+i18n("asia.kgm", "Naypyidaw is the capital of...");
+i18n("asia.kgm", "Nepal");
+i18n("asia.kgm", "The capital of Nepal is...");
+i18n("asia.kgm", "Please click on:\nNepal");
+i18n("asia.kgm", "The flag of Nepal is...");
+i18n("asia.kgm", "Kathmandu");
+i18n("asia.kgm", "Kathmandu is the capital of...");
+i18n("asia.kgm", "Bhutan");
+i18n("asia.kgm", "The capital of Bhutan is...");
+i18n("asia.kgm", "Please click on:\nBhutan");
+i18n("asia.kgm", "The flag of Bhutan is...");
+i18n("asia.kgm", "Thimphu");
+i18n("asia.kgm", "Thimphu is the capital of...");
+i18n("asia.kgm", "Indonesia");
+i18n("asia.kgm", "Malaysia");
+i18n("asia.kgm", "The capital of Malaysia is...");
+i18n("asia.kgm", "Please click on:\nMalaysia");
+i18n("asia.kgm", "The flag of Malaysia is...");
+i18n("asia.kgm", "Kuala Lumpur");
+i18n("asia.kgm", "Kuala Lumpur is the capital of...");
+i18n("asia.kgm", "Bangladesh");
+i18n("asia.kgm", "The capital of Bangladesh is...");
+i18n("asia.kgm", "Please click on:\nBangladesh");
+i18n("asia.kgm", "The flag of Bangladesh is...");
+i18n("asia.kgm", "Dhaka");
+i18n("asia.kgm", "Dhaka is the capital of...");
+i18n("asia.kgm", "Afghanistan");
+i18n("asia.kgm", "The capital of Afghanistan is...");
+i18n("asia.kgm", "Please click on:\nAfghanistan");
+i18n("asia.kgm", "The flag of Afghanistan is...");
+i18n("asia.kgm", "Kabul");
+i18n("asia.kgm", "Kabul is the capital of...");
+i18n("asia.kgm", "Azerbaijan");
+i18n("asia.kgm", "The capital of Azerbaijan is...");
+i18n("asia.kgm", "Please click on:\nAzerbaijan");
+i18n("asia.kgm", "The flag of Azerbaijan is...");
+i18n("asia.kgm", "Baku");
+i18n("asia.kgm", "Baku is the capital of...");
+i18n("asia.kgm", "Armenia");
+i18n("asia.kgm", "The capital of Armenia is...");
+i18n("asia.kgm", "Please click on:\nArmenia");
+i18n("asia.kgm", "The flag of Armenia is...");
+i18n("asia.kgm", "Yerevan");
+i18n("asia.kgm", "Yerevan is the capital of...");
+i18n("asia.kgm", "Bahrain");
+i18n("asia.kgm", "The capital of Bahrain is...");
+i18n("asia.kgm", "Please click on:\nBahrain");
+i18n("asia.kgm", "The flag of Bahrain is...");
+i18n("asia.kgm", "Manama");
+i18n("asia.kgm", "Manama is the capital of...");
+i18n("asia.kgm", "Georgia");
+i18n("asia.kgm", "The capital of Georgia is...");
+i18n("asia.kgm", "Please click on:\nGeorgia");
+i18n("asia.kgm", "The flag of Georgia is...");
+i18n("asia.kgm", "Tbilisi");
+i18n("asia.kgm", "Tbilisi is the capital of...");
+i18n("asia.kgm", "Turkmenistan");
+i18n("asia.kgm", "The capital of Turkmenistan is...");
+i18n("asia.kgm", "Please click on:\nTurkmenistan");
+i18n("asia.kgm", "The flag of Turkmenistan is...");
+i18n("asia.kgm", "Ashgabat");
+i18n("asia.kgm", "Ashgabat is the capital of...");
+i18n("asia.kgm", "Uzbekistan");
+i18n("asia.kgm", "The capital of Uzbekistan is...");
+i18n("asia.kgm", "Please click on:\nUzbekistan");
+i18n("asia.kgm", "The flag of Uzbekistan is...");
+i18n("asia.kgm", "Tashkent");
+i18n("asia.kgm", "Tashkent is the capital of...");
+i18n("asia.kgm", "Kyrgyzstan");
+i18n("asia.kgm", "The capital of Kyrgyzstan is...");
+i18n("asia.kgm", "Please click on:\nKyrgyzstan");
+i18n("asia.kgm", "The flag of Kyrgyzstan is...");
+i18n("asia.kgm", "Bishkek");
+i18n("asia.kgm", "Bishkek is the capital of...");
+i18n("asia.kgm", "Tajikistan");
+i18n("asia.kgm", "The capital of Tajikistan is...");
+i18n("asia.kgm", "Please click on:\nTajikistan");
+i18n("asia.kgm", "The flag of Tajikistan is...");
+i18n("asia.kgm", "Dushanbe");
+i18n("asia.kgm", "Dushanbe is the capital of...");
+i18n("asia.kgm", "Pakistan");
+i18n("asia.kgm", "The capital of Pakistan is...");
+i18n("asia.kgm", "Please click on:\nPakistan");
+i18n("asia.kgm", "The flag of Pakistan is...");
+i18n("asia.kgm", "Islamabad");
+i18n("asia.kgm", "Islamabad is the capital of...");
+i18n("asia.kgm", "Laos");
+i18n("asia.kgm", "The capital of Laos is...");
+i18n("asia.kgm", "Please click on:\nLaos");
+i18n("asia.kgm", "The flag of Laos is...");
+i18n("asia.kgm", "Vientiane");
+i18n("asia.kgm", "Vientiane is the capital of...");
+i18n("asia.kgm", "Cambodia");
+i18n("asia.kgm", "The capital of Cambodia is...");
+i18n("asia.kgm", "Please click on:\nCambodia");
+i18n("asia.kgm", "The flag of Cambodia is...");
+i18n("asia.kgm", "Phnom Penh");
+i18n("asia.kgm", "Phnom Penh is the capital of...");
+i18n("asia.kgm", "Brunei");
+i18n("asia.kgm", "The capital of Brunei is...");
+i18n("asia.kgm", "Please click on:\nBrunei");
+i18n("asia.kgm", "The flag of Brunei is...");
+i18n("asia.kgm", "Bandar Seri Begawan");
+i18n("asia.kgm", "Bandar Seri Begawan is the capital of...");
+i18n("asia.kgm", "Philippines");
+i18n("asia.kgm", "The capital of Philippines is...");
+i18n("asia.kgm", "Please click on:\nPhilippines");
+i18n("asia.kgm", "The flag of Philippines is...");
+i18n("asia.kgm", "Manila");
+i18n("asia.kgm", "Manila is the capital of...");
+i18n("asia.kgm", "Thailand");
+i18n("asia.kgm", "The capital of Thailand is...");
+i18n("asia.kgm", "Please click on:\nThailand");
+i18n("asia.kgm", "The flag of Thailand is...");
+i18n("asia.kgm", "Bangkok");
+i18n("asia.kgm", "Bangkok is the capital of...");
+i18n("asia.kgm", "Vietnam");
+i18n("asia.kgm", "The capital of Vietnam is...");
+i18n("asia.kgm", "Please click on:\nVietnam");
+i18n("asia.kgm", "The flag of Vietnam is...");
+i18n("asia.kgm", "Hanoi");
+i18n("asia.kgm", "Hanoi is the capital of...");
+i18n("asia.kgm", "Taiwan");
+i18n("asia.kgm", "The capital of Taiwan is...");
+i18n("asia.kgm", "Please click on:\nTaiwan");
+i18n("asia.kgm", "The flag of Taiwan is...");
+i18n("asia.kgm", "Taipei");
+i18n("asia.kgm", "Taipei is the capital of...");
+i18n("asia.kgm", "Singapore");
+i18n("asia.kgm", "The capital of Singapore is...");
+i18n("asia.kgm", "Please click on:\nSingapore");
+i18n("asia.kgm", "The flag of Singapore is...");
+i18n("asia.kgm", "Singapore");
+i18n("asia.kgm", "Singapore is the capital of...");
+i18n("asia.kgm", "North Korea");
+i18n("asia.kgm", "The capital of North Korea is...");
+i18n("asia.kgm", "Please click on:\nNorth Korea");
+i18n("asia.kgm", "The flag of North Korea is...");
+i18n("asia.kgm", "Pyeongyang");
+i18n("asia.kgm", "Pyeongyang is the capital of...");
+i18n("asia.kgm", "South Korea");
+i18n("asia.kgm", "The capital of South Korea is...");
+i18n("asia.kgm", "Please click on:\nSouth Korea");
+i18n("asia.kgm", "The flag of South Korea is...");
+i18n("asia.kgm", "Seoul");
+i18n("asia.kgm", "Seoul is the capital of...");
+i18n("austria.kgm", "Austria");
+i18n("austria.kgm", "<qt>Current map:<br><b>Austria</b></qt>");
+i18n("austria.kgm", "Frontier");
+i18n("austria.kgm", "Not Austria");
+i18n("austria.kgm", "Vienna");
+i18n("austria.kgm", "The capital of Vienna is...");
+i18n("austria.kgm", "Please click on:\nVienna");
+i18n("austria.kgm", "Vienna");
+i18n("austria.kgm", "Vienna is the capital of...");
+i18n("austria.kgm", "Burgenland");
+i18n("austria.kgm", "The capital of Burgenland is...");
+i18n("austria.kgm", "Please click on:\nBurgenland");
+i18n("austria.kgm", "Eisenstadt");
+i18n("austria.kgm", "Eisenstadt is the capital of...");
+i18n("austria.kgm", "Styria");
+i18n("austria.kgm", "The capital of Styria is...");
+i18n("austria.kgm", "Please click on:\nStyria");
+i18n("austria.kgm", "Graz");
+i18n("austria.kgm", "Graz is the capital of...");
+i18n("austria.kgm", "Carinthia");
+i18n("austria.kgm", "The capital of Carinthia is...");
+i18n("austria.kgm", "Please click on:\nCarinthia");
+i18n("austria.kgm", "Klagenfurt");
+i18n("austria.kgm", "Klagenfurt is the capital of...");
+i18n("austria.kgm", "Tyrol");
+i18n("austria.kgm", "The capital of Tyrol is...");
+i18n("austria.kgm", "Please click on:\nTyrol");
+i18n("austria.kgm", "Innsbruck");
+i18n("austria.kgm", "Innsbruck is the capital of...");
+i18n("austria.kgm", "Vorarlberg");
+i18n("austria.kgm", "The capital of Vorarlberg is...");
+i18n("austria.kgm", "Please click on:\nVorarlberg");
+i18n("austria.kgm", "Bregenz");
+i18n("austria.kgm", "Bregenz is the capital of...");
+i18n("austria.kgm", "Salzburg");
+i18n("austria.kgm", "The capital of Salzburg is...");
+i18n("austria.kgm", "Please click on:\nSalzburg");
+i18n("austria.kgm", "Salzburg");
+i18n("austria.kgm", "Salzburg is the capital of...");
+i18n("austria.kgm", "Upper Austria");
+i18n("austria.kgm", "The capital of Upper Austria is...");
+i18n("austria.kgm", "Please click on:\nUpper Austria");
+i18n("austria.kgm", "Linz");
+i18n("austria.kgm", "Linz is the capital of...");
+i18n("austria.kgm", "Lower Austria");
+i18n("austria.kgm", "The capital of Lower Austria is...");
+i18n("austria.kgm", "Please click on:\nLower Austria");
+i18n("austria.kgm", "St. Pölten");
+i18n("austria.kgm", "St. Pölten is the capital of...");
+i18n("brazil.kgm", "Brazil");
+i18n("brazil.kgm", "<qt>Current map:<br><b>Brazil</b></qt>");
+i18n("brazil.kgm", "Sergipe");
+i18n("brazil.kgm", "The capital of Sergipe is...");
+i18n("brazil.kgm", "Please click on:\nSergipe");
+i18n("brazil.kgm", "The flag of Sergipe is...");
+i18n("brazil.kgm", "Aracaju");
+i18n("brazil.kgm", "Aracaju is the capital of...");
+i18n("brazil.kgm", "Para");
+i18n("brazil.kgm", "The capital of Para is...");
+i18n("brazil.kgm", "Please click on:\nPara");
+i18n("brazil.kgm", "The flag of Para is...");
+i18n("brazil.kgm", "Belem");
+i18n("brazil.kgm", "Belem is the capital of...");
+i18n("brazil.kgm", "Minas Gerais");
+i18n("brazil.kgm", "The capital of Minas Gerais is...");
+i18n("brazil.kgm", "Please click on:\nMinas Gerais");
+i18n("brazil.kgm", "The flag of Minas Gerais is...");
+i18n("brazil.kgm", "Belo Horizonte");
+i18n("brazil.kgm", "Belo Horizonte is the capital of...");
+i18n("brazil.kgm", "Roraima");
+i18n("brazil.kgm", "The capital of Roraima is...");
+i18n("brazil.kgm", "Please click on:\nRoraima");
+i18n("brazil.kgm", "The flag of Roraima is...");
+i18n("brazil.kgm", "Boa Vista");
+i18n("brazil.kgm", "Boa Vista is the capital of...");
+i18n("brazil.kgm", "Federal District");
+i18n("brazil.kgm", "The capital of Federal District is...");
+i18n("brazil.kgm", "Please click on:\nFederal District");
+i18n("brazil.kgm", "The flag of Federal District is...");
+i18n("brazil.kgm", "Brasilia");
+i18n("brazil.kgm", "Brasilia is the capital of...");
+i18n("brazil.kgm", "Mato Grosso do Sul");
+i18n("brazil.kgm", "The capital of Mato Grosso do Sul is...");
+i18n("brazil.kgm", "Please click on:\nMato Grosso do Sul");
+i18n("brazil.kgm", "The flag of Mato Grosso do Sul is...");
+i18n("brazil.kgm", "Campo Grande");
+i18n("brazil.kgm", "Campo Grande is the capital of...");
+i18n("brazil.kgm", "Mato Grosso");
+i18n("brazil.kgm", "The capital of Mato Grosso is...");
+i18n("brazil.kgm", "Please click on:\nMato Grosso");
+i18n("brazil.kgm", "The flag of Mato Grosso is...");
+i18n("brazil.kgm", "Cuiaba");
+i18n("brazil.kgm", "Cuiaba is the capital of...");
+i18n("brazil.kgm", "Parana");
+i18n("brazil.kgm", "The capital of Parana is...");
+i18n("brazil.kgm", "Please click on:\nParana");
+i18n("brazil.kgm", "The flag of Parana is...");
+i18n("brazil.kgm", "Curitiba");
+i18n("brazil.kgm", "Curitiba is the capital of...");
+i18n("brazil.kgm", "Santa Catarina");
+i18n("brazil.kgm", "The capital of Santa Catarina is...");
+i18n("brazil.kgm", "Please click on:\nSanta Catarina");
+i18n("brazil.kgm", "The flag of Santa Catarina is...");
+i18n("brazil.kgm", "Florianopolis");
+i18n("brazil.kgm", "Florianopolis is the capital of...");
+i18n("brazil.kgm", "Ceara");
+i18n("brazil.kgm", "The capital of Ceara is...");
+i18n("brazil.kgm", "Please click on:\nCeara");
+i18n("brazil.kgm", "The flag of Ceara is...");
+i18n("brazil.kgm", "Fortaleza");
+i18n("brazil.kgm", "Fortaleza is the capital of...");
+i18n("brazil.kgm", "Goias");
+i18n("brazil.kgm", "The capital of Goias is...");
+i18n("brazil.kgm", "Please click on:\nGoias");
+i18n("brazil.kgm", "The flag of Goias is...");
+i18n("brazil.kgm", "Goiânia");
+i18n("brazil.kgm", "Goiânia is the capital of...");
+i18n("brazil.kgm", "Paraiba");
+i18n("brazil.kgm", "The capital of Paraiba is...");
+i18n("brazil.kgm", "Please click on:\nParaiba");
+i18n("brazil.kgm", "The flag of Paraiba is...");
+i18n("brazil.kgm", "Joao Pessoa");
+i18n("brazil.kgm", "Joao Pessoa is the capital of...");
+i18n("brazil.kgm", "Amapa");
+i18n("brazil.kgm", "The capital of Amapa is...");
+i18n("brazil.kgm", "Please click on:\nAmapa");
+i18n("brazil.kgm", "The flag of Amapa is...");
+i18n("brazil.kgm", "Macapa");
+i18n("brazil.kgm", "Macapa is the capital of...");
+i18n("brazil.kgm", "Alagoas");
+i18n("brazil.kgm", "The capital of Alagoas is...");
+i18n("brazil.kgm", "Please click on:\nAlagoas");
+i18n("brazil.kgm", "The flag of Alagoas is...");
+i18n("brazil.kgm", "Maceio");
+i18n("brazil.kgm", "Maceio is the capital of...");
+i18n("brazil.kgm", "Amazonas");
+i18n("brazil.kgm", "The capital of Amazonas is...");
+i18n("brazil.kgm", "Please click on:\nAmazonas");
+i18n("brazil.kgm", "The flag of Amazonas is...");
+i18n("brazil.kgm", "Manaus");
+i18n("brazil.kgm", "Manaus is the capital of...");
+i18n("brazil.kgm", "Rio Grande do Norte");
+i18n("brazil.kgm", "The capital of Rio Grande do Norte is...");
+i18n("brazil.kgm", "Please click on:\nRio Grande do Norte");
+i18n("brazil.kgm", "The flag of Rio Grande do Norte is...");
+i18n("brazil.kgm", "Natal");
+i18n("brazil.kgm", "Natal is the capital of...");
+i18n("brazil.kgm", "Tocantins");
+i18n("brazil.kgm", "The capital of Tocantins is...");
+i18n("brazil.kgm", "Please click on:\nTocantins");
+i18n("brazil.kgm", "The flag of Tocantins is...");
+i18n("brazil.kgm", "Palmas");
+i18n("brazil.kgm", "Palmas is the capital of...");
+i18n("brazil.kgm", "Rio Grande do Sul");
+i18n("brazil.kgm", "The capital of Rio Grande do Sul is...");
+i18n("brazil.kgm", "Please click on:\nRio Grande do Sul");
+i18n("brazil.kgm", "The flag of Rio Grande do Sul is...");
+i18n("brazil.kgm", "Porto Alegre");
+i18n("brazil.kgm", "Porto Alegre is the capital of...");
+i18n("brazil.kgm", "Rondonia");
+i18n("brazil.kgm", "The capital of Rondonia is...");
+i18n("brazil.kgm", "Please click on:\nRondonia");
+i18n("brazil.kgm", "The flag of Rondonia is...");
+i18n("brazil.kgm", "Porto Velho");
+i18n("brazil.kgm", "Porto Velho is the capital of...");
+i18n("brazil.kgm", "Pernambuco");
+i18n("brazil.kgm", "The capital of Pernambuco is...");
+i18n("brazil.kgm", "Please click on:\nPernambuco");
+i18n("brazil.kgm", "The flag of Pernambuco is...");
+i18n("brazil.kgm", "Recife");
+i18n("brazil.kgm", "Recife is the capital of...");
+i18n("brazil.kgm", "Acre");
+i18n("brazil.kgm", "The capital of Acre is...");
+i18n("brazil.kgm", "Please click on:\nAcre");
+i18n("brazil.kgm", "The flag of Acre is...");
+i18n("brazil.kgm", "Rio Branco");
+i18n("brazil.kgm", "Rio Branco is the capital of...");
+i18n("brazil.kgm", "Rio de Janeiro State");
+i18n("brazil.kgm", "The capital of Rio de Janeiro State is...");
+i18n("brazil.kgm", "Please click on:\nRio de Janeiro State");
+i18n("brazil.kgm", "The flag of Rio de Janeiro State is...");
+i18n("brazil.kgm", "Rio de Janeiro");
+i18n("brazil.kgm", "Rio de Janeiro is the capital of...");
+i18n("brazil.kgm", "Bahia");
+i18n("brazil.kgm", "The capital of Bahia is...");
+i18n("brazil.kgm", "Please click on:\nBahia");
+i18n("brazil.kgm", "The flag of Bahia is...");
+i18n("brazil.kgm", "Salvador");
+i18n("brazil.kgm", "Salvador is the capital of...");
+i18n("brazil.kgm", "Maranhao");
+i18n("brazil.kgm", "The capital of Maranhao is...");
+i18n("brazil.kgm", "Please click on:\nMaranhao");
+i18n("brazil.kgm", "The flag of Maranhao is...");
+i18n("brazil.kgm", "Sao Luis");
+i18n("brazil.kgm", "Sao Luis is the capital of...");
+i18n("brazil.kgm", "Sao Paulo State");
+i18n("brazil.kgm", "The capital of Sao Paulo State is...");
+i18n("brazil.kgm", "Please click on:\nSao Paulo State");
+i18n("brazil.kgm", "The flag of Sao Paulo State is...");
+i18n("brazil.kgm", "Sao Paulo (city)");
+i18n("brazil.kgm", "Sao Paulo (city) is the capital of...");
+i18n("brazil.kgm", "Piaui");
+i18n("brazil.kgm", "The capital of Piaui is...");
+i18n("brazil.kgm", "Please click on:\nPiaui");
+i18n("brazil.kgm", "The flag of Piaui is...");
+i18n("brazil.kgm", "Teresina");
+i18n("brazil.kgm", "Teresina is the capital of...");
+i18n("brazil.kgm", "Espirito Santo");
+i18n("brazil.kgm", "The capital of Espirito Santo is...");
+i18n("brazil.kgm", "Please click on:\nEspirito Santo");
+i18n("brazil.kgm", "The flag of Espirito Santo is...");
+i18n("brazil.kgm", "Vitoria");
+i18n("brazil.kgm", "Vitoria is the capital of...");
+i18n("brazil.kgm", "Frontier");
+i18n("brazil.kgm", "Out of Bounds");
+i18n("canada.kgm", "Canada");
+i18n("canada.kgm", "<qt>Current map:<br><b>Canada</b></qt>");
+i18n("canada.kgm", "Out of Bounds");
+i18n("canada.kgm", "Frontier");
+i18n("canada.kgm", "Prince Edward Island");
+i18n("canada.kgm", "The capital of Prince Edward Island is...");
+i18n("canada.kgm", "Please click on:\nPrince Edward Island");
+i18n("canada.kgm", "The flag of Prince Edward Island is...");
+i18n("canada.kgm", "Charlottetown");
+i18n("canada.kgm", "Charlottetown is the capital of...");
+i18n("canada.kgm", "British Columbia");
+i18n("canada.kgm", "The capital of British Columbia is...");
+i18n("canada.kgm", "Please click on:\nBritish Columbia");
+i18n("canada.kgm", "The flag of British Columbia is...");
+i18n("canada.kgm", "Victoria");
+i18n("canada.kgm", "Victoria is the capital of...");
+i18n("canada.kgm", "Ontario");
+i18n("canada.kgm", "The capital of Ontario is...");
+i18n("canada.kgm", "Please click on:\nOntario");
+i18n("canada.kgm", "The flag of Ontario is...");
+i18n("canada.kgm", "Toronto");
+i18n("canada.kgm", "Toronto is the capital of...");
+i18n("canada.kgm", "Newfoundland");
+i18n("canada.kgm", "The capital of Newfoundland is...");
+i18n("canada.kgm", "Please click on:\nNewfoundland");
+i18n("canada.kgm", "The flag of Newfoundland is...");
+i18n("canada.kgm", "St John's");
+i18n("canada.kgm", "St John's is the capital of...");
+i18n("canada.kgm", "Nunavut");
+i18n("canada.kgm", "The capital of Nunavut is...");
+i18n("canada.kgm", "Please click on:\nNunavut");
+i18n("canada.kgm", "The flag of Nunavut is...");
+i18n("canada.kgm", "Iqaluit");
+i18n("canada.kgm", "Iqaluit is the capital of...");
+i18n("canada.kgm", "Alberta");
+i18n("canada.kgm", "The capital of Alberta is...");
+i18n("canada.kgm", "Please click on:\nAlberta");
+i18n("canada.kgm", "The flag of Alberta is...");
+i18n("canada.kgm", "Edmonton");
+i18n("canada.kgm", "Edmonton is the capital of...");
+i18n("canada.kgm", "North West Territories");
+i18n("canada.kgm", "The capital of North West Territories is...");
+i18n("canada.kgm", "Please click on:\nNorth West Territories");
+i18n("canada.kgm", "The flag of North West Territories is...");
+i18n("canada.kgm", "Yellowknife");
+i18n("canada.kgm", "Yellowknife is the capital of...");
+i18n("canada.kgm", "Quebec");
+i18n("canada.kgm", "The capital of Quebec is...");
+i18n("canada.kgm", "Please click on:\nQuebec");
+i18n("canada.kgm", "The flag of Quebec is...");
+i18n("canada.kgm", "Quebec City");
+i18n("canada.kgm", "Quebec City is the capital of...");
+i18n("canada.kgm", "New Brunswick");
+i18n("canada.kgm", "The capital of New Brunswick is...");
+i18n("canada.kgm", "Please click on:\nNew Brunswick");
+i18n("canada.kgm", "The flag of New Brunswick is...");
+i18n("canada.kgm", "Fredericton");
+i18n("canada.kgm", "Fredericton is the capital of...");
+i18n("canada.kgm", "Manitoba");
+i18n("canada.kgm", "The capital of Manitoba is...");
+i18n("canada.kgm", "Please click on:\nManitoba");
+i18n("canada.kgm", "The flag of Manitoba is...");
+i18n("canada.kgm", "Winnipeg");
+i18n("canada.kgm", "Winnipeg is the capital of...");
+i18n("canada.kgm", "Nova Scotia");
+i18n("canada.kgm", "The capital of Nova Scotia is...");
+i18n("canada.kgm", "Please click on:\nNova Scotia");
+i18n("canada.kgm", "The flag of Nova Scotia is...");
+i18n("canada.kgm", "Halifax");
+i18n("canada.kgm", "Halifax is the capital of...");
+i18n("canada.kgm", "Yukon Territory");
+i18n("canada.kgm", "The capital of Yukon Territory is...");
+i18n("canada.kgm", "Please click on:\nYukon Territory");
+i18n("canada.kgm", "The flag of Yukon Territory is...");
+i18n("canada.kgm", "Whitehorse");
+i18n("canada.kgm", "Whitehorse is the capital of...");
+i18n("canada.kgm", "Saskatchewan");
+i18n("canada.kgm", "The capital of Saskatchewan is...");
+i18n("canada.kgm", "Please click on:\nSaskatchewan");
+i18n("canada.kgm", "The flag of Saskatchewan is...");
+i18n("canada.kgm", "Regina");
+i18n("canada.kgm", "Regina is the capital of...");
+i18n("china.kgm", "China");
+i18n("china.kgm", "<qt>Current map:<br><b>China</b></qt>");
+i18n("china.kgm", "Frontier");
+i18n("china.kgm", "Water");
+i18n("china.kgm", "Coast");
+i18n("china.kgm", "Russia");
+i18n("china.kgm", "Japan");
+i18n("china.kgm", "Mongolia");
+i18n("china.kgm", "North Korea");
+i18n("china.kgm", "South Korea");
+i18n("china.kgm", "Kazakhstan");
+i18n("china.kgm", "Kyrgyzstan");
+i18n("china.kgm", "Tajikistan");
+i18n("china.kgm", "Afghanistan");
+i18n("china.kgm", "Pakistan");
+i18n("china.kgm", "India");
+i18n("china.kgm", "Bhutan");
+i18n("china.kgm", "Bangladesh");
+i18n("china.kgm", "Myanmar");
+i18n("china.kgm", "Thailand");
+i18n("china.kgm", "Taiwan");
+i18n("china.kgm", "Vietnam");
+i18n("china.kgm", "Laos");
+i18n("china.kgm", "Nepal");
+i18n("china.kgm", "Anhui");
+i18n("china.kgm", "The capital of Anhui is...");
+i18n("china.kgm", "Please click on:\nAnhui");
+i18n("china.kgm", "Hefei");
+i18n("china.kgm", "Hefei is the capital of...");
+i18n("china.kgm", "Beijing");
+i18n("china.kgm", "Please click on:\nBeijing");
+i18n("china.kgm", "Chongqing");
+i18n("china.kgm", "Please click on:\nChongqing");
+i18n("china.kgm", "Fujian");
+i18n("china.kgm", "The capital of Fujian is...");
+i18n("china.kgm", "Please click on:\nFujian");
+i18n("china.kgm", "Fuzhou");
+i18n("china.kgm", "Fuzhou is the capital of...");
+i18n("china.kgm", "Gansu");
+i18n("china.kgm", "The capital of Gansu is...");
+i18n("china.kgm", "Please click on:\nGansu");
+i18n("china.kgm", "Lanzhou");
+i18n("china.kgm", "Lanzhou is the capital of...");
+i18n("china.kgm", "Guangdong");
+i18n("china.kgm", "The capital of Guangdong is...");
+i18n("china.kgm", "Please click on:\nGuangdong");
+i18n("china.kgm", "Guangzhou");
+i18n("china.kgm", "Guangzhou is the capital of...");
+i18n("china.kgm", "Guangxi Zhuang");
+i18n("china.kgm", "The capital of Guangxi Zhuang is...");
+i18n("china.kgm", "Please click on:\nGuangxi Zhuang");
+i18n("china.kgm", "Nanning");
+i18n("china.kgm", "Nanning is the capital of...");
+i18n("china.kgm", "Guizhou");
+i18n("china.kgm", "The capital of Guizhou is...");
+i18n("china.kgm", "Please click on:\nGuizhou");
+i18n("china.kgm", "Guiyang");
+i18n("china.kgm", "Guiyang is the capital of...");
+i18n("china.kgm", "Hainan");
+i18n("china.kgm", "The capital of Hainan is...");
+i18n("china.kgm", "Please click on:\nHainan");
+i18n("china.kgm", "Haikou");
+i18n("china.kgm", "Haikou is the capital of...");
+i18n("china.kgm", "Hebei");
+i18n("china.kgm", "The capital of Hebei is...");
+i18n("china.kgm", "Please click on:\nHebei");
+i18n("china.kgm", "Shijiazhuang");
+i18n("china.kgm", "Shijiazhuang is the capital of...");
+i18n("china.kgm", "Heilongjiang");
+i18n("china.kgm", "The capital of Heilongjiang is...");
+i18n("china.kgm", "Please click on:\nHeilongjiang");
+i18n("china.kgm", "Harbin");
+i18n("china.kgm", "Harbin is the capital of...");
+i18n("china.kgm", "Henan");
+i18n("china.kgm", "The capital of Henan is...");
+i18n("china.kgm", "Please click on:\nHenan");
+i18n("china.kgm", "Zhengzhou");
+i18n("china.kgm", "Zhengzhou is the capital of...");
+i18n("china.kgm", "Hubei");
+i18n("china.kgm", "The capital of Hubei is...");
+i18n("china.kgm", "Please click on:\nHubei");
+i18n("china.kgm", "Wuhan");
+i18n("china.kgm", "Wuhan is the capital of...");
+i18n("china.kgm", "Hunan");
+i18n("china.kgm", "The capital of Hunan is...");
+i18n("china.kgm", "Please click on:\nHunan");
+i18n("china.kgm", "Changsha");
+i18n("china.kgm", "Changsha is the capital of...");
+i18n("china.kgm", "Jiangsu");
+i18n("china.kgm", "The capital of Jiangsu is...");
+i18n("china.kgm", "Please click on:\nJiangsu");
+i18n("china.kgm", "Nanjing");
+i18n("china.kgm", "Nanjing is the capital of...");
+i18n("china.kgm", "Jiangxi");
+i18n("china.kgm", "The capital of Jiangxi is...");
+i18n("china.kgm", "Please click on:\nJiangxi");
+i18n("china.kgm", "Nanchang");
+i18n("china.kgm", "Nanchang is the capital of...");
+i18n("china.kgm", "Jilin");
+i18n("china.kgm", "The capital of Jilin is...");
+i18n("china.kgm", "Please click on:\nJilin");
+i18n("china.kgm", "Changchun");
+i18n("china.kgm", "Changchun is the capital of...");
+i18n("china.kgm", "Liaoning");
+i18n("china.kgm", "The capital of Liaoning is...");
+i18n("china.kgm", "Please click on:\nLiaoning");
+i18n("china.kgm", "Shenyang");
+i18n("china.kgm", "Shenyang is the capital of...");
+i18n("china.kgm", "Nei Mongol");
+i18n("china.kgm", "The capital of Nei Mongol is...");
+i18n("china.kgm", "Please click on:\nNei Mongol");
+i18n("china.kgm", "Hohhot");
+i18n("china.kgm", "Hohhot is the capital of...");
+i18n("china.kgm", "Ningxia Hui");
+i18n("china.kgm", "The capital of Ningxia Hui is...");
+i18n("china.kgm", "Please click on:\nNingxia Hui");
+i18n("china.kgm", "Yinchuan");
+i18n("china.kgm", "Yinchuan is the capital of...");
+i18n("china.kgm", "Qinghai");
+i18n("china.kgm", "The capital of Qinghai is...");
+i18n("china.kgm", "Please click on:\nQinghai");
+i18n("china.kgm", "Xining");
+i18n("china.kgm", "Xining is the capital of...");
+i18n("china.kgm", "Shanxi");
+i18n("china.kgm", "The capital of Shanxi is...");
+i18n("china.kgm", "Please click on:\nShanxi");
+i18n("china.kgm", "Taiyuan");
+i18n("china.kgm", "Taiyuan is the capital of...");
+i18n("china.kgm", "Shandong");
+i18n("china.kgm", "The capital of Shandong is...");
+i18n("china.kgm", "Please click on:\nShandong");
+i18n("china.kgm", "Jinan");
+i18n("china.kgm", "Jinan is the capital of...");
+i18n("china.kgm", "Shanghai");
+i18n("china.kgm", "Please click on:\nShanghai");
+i18n("china.kgm", "Shaanxi");
+i18n("china.kgm", "The capital of Shaanxi is...");
+i18n("china.kgm", "Please click on:\nShaanxi");
+i18n("china.kgm", "Xian");
+i18n("china.kgm", "Xian is the capital of...");
+i18n("china.kgm", "Sichuan");
+i18n("china.kgm", "The capital of Sichuan is...");
+i18n("china.kgm", "Please click on:\nSichuan");
+i18n("china.kgm", "Chengdu");
+i18n("china.kgm", "Chengdu is the capital of...");
+i18n("china.kgm", "Tianjin");
+i18n("china.kgm", "Please click on:\nTianjin");
+i18n("china.kgm", "Xinjiang Uygur");
+i18n("china.kgm", "The capital of Xinjiang Uygur is...");
+i18n("china.kgm", "Please click on:\nXinjiang Uygur");
+i18n("china.kgm", "Urumqi");
+i18n("china.kgm", "Urumqi is the capital of...");
+i18n("china.kgm", "Xizang");
+i18n("china.kgm", "The capital of Xizang is...");
+i18n("china.kgm", "Please click on:\nXizang");
+i18n("china.kgm", "Lhasa");
+i18n("china.kgm", "Lhasa is the capital of...");
+i18n("china.kgm", "Yunnan");
+i18n("china.kgm", "The capital of Yunnan is...");
+i18n("china.kgm", "Please click on:\nYunnan");
+i18n("china.kgm", "Kunming");
+i18n("china.kgm", "Kunming is the capital of...");
+i18n("china.kgm", "Zhejiang");
+i18n("china.kgm", "The capital of Zhejiang is...");
+i18n("china.kgm", "Please click on:\nZhejiang");
+i18n("china.kgm", "Hangzhou");
+i18n("china.kgm", "Hangzhou is the capital of...");
+i18n("china.kgm", "Hong Kong");
+i18n("china.kgm", "Please click on:\nHong Kong");
+i18n("china.kgm", "Macao");
+i18n("china.kgm", "Please click on:\nMacao");
+i18n("europe.kgm", "Europe");
+i18n("europe.kgm", "<qt>Current map:<br><b>Europe</b></qt>");
+i18n("europe.kgm", "Water");
+i18n("europe.kgm", "Coast");
+i18n("europe.kgm", "Frontier");
+i18n("europe.kgm", "Albania");
+i18n("europe.kgm", "The capital of Albania is...");
+i18n("europe.kgm", "Please click on:\nAlbania");
+i18n("europe.kgm", "The flag of Albania is...");
+i18n("europe.kgm", "Tirana");
+i18n("europe.kgm", "Tirana is the capital of...");
+i18n("europe.kgm", "Algeria");
+i18n("europe.kgm", "Austria");
+i18n("europe.kgm", "The capital of Austria is...");
+i18n("europe.kgm", "Please click on:\nAustria");
+i18n("europe.kgm", "The flag of Austria is...");
+i18n("europe.kgm", "Vienna");
+i18n("europe.kgm", "Vienna is the capital of...");
+i18n("europe.kgm", "Belarus");
+i18n("europe.kgm", "The capital of Belarus is...");
+i18n("europe.kgm", "Please click on:\nBelarus");
+i18n("europe.kgm", "The flag of Belarus is...");
+i18n("europe.kgm", "Minsk");
+i18n("europe.kgm", "Minsk is the capital of...");
+i18n("europe.kgm", "Belgium");
+i18n("europe.kgm", "The capital of Belgium is...");
+i18n("europe.kgm", "Please click on:\nBelgium");
+i18n("europe.kgm", "The flag of Belgium is...");
+i18n("europe.kgm", "Brussels");
+i18n("europe.kgm", "Brussels is the capital of...");
+i18n("europe.kgm", "Bosnia and Herzegovina");
+i18n("europe.kgm", "The capital of Bosnia and Herzegovina is...");
+i18n("europe.kgm", "Please click on:\nBosnia and Herzegovina");
+i18n("europe.kgm", "The flag of Bosnia and Herzegovina is...");
+i18n("europe.kgm", "Sarajevo");
+i18n("europe.kgm", "Sarajevo is the capital of...");
+i18n("europe.kgm", "Bulgaria");
+i18n("europe.kgm", "The capital of Bulgaria is...");
+i18n("europe.kgm", "Please click on:\nBulgaria");
+i18n("europe.kgm", "The flag of Bulgaria is...");
+i18n("europe.kgm", "Sofia");
+i18n("europe.kgm", "Sofia is the capital of...");
+i18n("europe.kgm", "Croatia");
+i18n("europe.kgm", "The capital of Croatia is...");
+i18n("europe.kgm", "Please click on:\nCroatia");
+i18n("europe.kgm", "The flag of Croatia is...");
+i18n("europe.kgm", "Zagreb");
+i18n("europe.kgm", "Zagreb is the capital of...");
+i18n("europe.kgm", "Czech Republic");
+i18n("europe.kgm", "The capital of Czech Republic is...");
+i18n("europe.kgm", "Please click on:\nCzech Republic");
+i18n("europe.kgm", "The flag of Czech Republic is...");
+i18n("europe.kgm", "Prague");
+i18n("europe.kgm", "Prague is the capital of...");
+i18n("europe.kgm", "Denmark");
+i18n("europe.kgm", "The capital of Denmark is...");
+i18n("europe.kgm", "Please click on:\nDenmark");
+i18n("europe.kgm", "The flag of Denmark is...");
+i18n("europe.kgm", "Copenhagen");
+i18n("europe.kgm", "Copenhagen is the capital of...");
+i18n("europe.kgm", "Estonia");
+i18n("europe.kgm", "The capital of Estonia is...");
+i18n("europe.kgm", "Please click on:\nEstonia");
+i18n("europe.kgm", "The flag of Estonia is...");
+i18n("europe.kgm", "Tallinn");
+i18n("europe.kgm", "Tallinn is the capital of...");
+i18n("europe.kgm", "Finland");
+i18n("europe.kgm", "The capital of Finland is...");
+i18n("europe.kgm", "Please click on:\nFinland");
+i18n("europe.kgm", "The flag of Finland is...");
+i18n("europe.kgm", "Helsinki");
+i18n("europe.kgm", "Helsinki is the capital of...");
+i18n("europe.kgm", "Macedonia");
+i18n("europe.kgm", "The capital of Macedonia is...");
+i18n("europe.kgm", "Please click on:\nMacedonia");
+i18n("europe.kgm", "The flag of Macedonia is...");
+i18n("europe.kgm", "Skopje");
+i18n("europe.kgm", "Skopje is the capital of...");
+i18n("europe.kgm", "France");
+i18n("europe.kgm", "The capital of France is...");
+i18n("europe.kgm", "Please click on:\nFrance");
+i18n("europe.kgm", "The flag of France is...");
+i18n("europe.kgm", "Paris");
+i18n("europe.kgm", "Paris is the capital of...");
+i18n("europe.kgm", "Germany");
+i18n("europe.kgm", "The capital of Germany is...");
+i18n("europe.kgm", "Please click on:\nGermany");
+i18n("europe.kgm", "The flag of Germany is...");
+i18n("europe.kgm", "Berlin");
+i18n("europe.kgm", "Berlin is the capital of...");
+i18n("europe.kgm", "Greece");
+i18n("europe.kgm", "The capital of Greece is...");
+i18n("europe.kgm", "Please click on:\nGreece");
+i18n("europe.kgm", "The flag of Greece is...");
+i18n("europe.kgm", "Athens");
+i18n("europe.kgm", "Athens is the capital of...");
+i18n("europe.kgm", "Hungary");
+i18n("europe.kgm", "The capital of Hungary is...");
+i18n("europe.kgm", "Please click on:\nHungary");
+i18n("europe.kgm", "The flag of Hungary is...");
+i18n("europe.kgm", "Budapest");
+i18n("europe.kgm", "Budapest is the capital of...");
+i18n("europe.kgm", "Iceland");
+i18n("europe.kgm", "The capital of Iceland is...");
+i18n("europe.kgm", "Please click on:\nIceland");
+i18n("europe.kgm", "The flag of Iceland is...");
+i18n("europe.kgm", "Reykjavik");
+i18n("europe.kgm", "Reykjavik is the capital of...");
+i18n("europe.kgm", "Ireland");
+i18n("europe.kgm", "The capital of Ireland is...");
+i18n("europe.kgm", "Please click on:\nIreland");
+i18n("europe.kgm", "The flag of Ireland is...");
+i18n("europe.kgm", "Dublin");
+i18n("europe.kgm", "Dublin is the capital of...");
+i18n("europe.kgm", "Italy");
+i18n("europe.kgm", "The capital of Italy is...");
+i18n("europe.kgm", "Please click on:\nItaly");
+i18n("europe.kgm", "The flag of Italy is...");
+i18n("europe.kgm", "Rome");
+i18n("europe.kgm", "Rome is the capital of...");
+i18n("europe.kgm", "Latvia");
+i18n("europe.kgm", "The capital of Latvia is...");
+i18n("europe.kgm", "Please click on:\nLatvia");
+i18n("europe.kgm", "The flag of Latvia is...");
+i18n("europe.kgm", "Riga");
+i18n("europe.kgm", "Riga is the capital of...");
+i18n("europe.kgm", "Lithuania");
+i18n("europe.kgm", "The capital of Lithuania is...");
+i18n("europe.kgm", "Please click on:\nLithuania");
+i18n("europe.kgm", "The flag of Lithuania is...");
+i18n("europe.kgm", "Vilnius");
+i18n("europe.kgm", "Vilnius is the capital of...");
+i18n("europe.kgm", "Luxembourg");
+i18n("europe.kgm", "The capital of Luxembourg is...");
+i18n("europe.kgm", "Please click on:\nLuxembourg");
+i18n("europe.kgm", "The flag of Luxembourg is...");
+i18n("europe.kgm", "Luxembourg");
+i18n("europe.kgm", "Luxembourg is the capital of...");
+i18n("europe.kgm", "Moldova");
+i18n("europe.kgm", "The capital of Moldova is...");
+i18n("europe.kgm", "Please click on:\nMoldova");
+i18n("europe.kgm", "The flag of Moldova is...");
+i18n("europe.kgm", "Chisinau");
+i18n("europe.kgm", "Chisinau is the capital of...");
+i18n("europe.kgm", "Morocco");
+i18n("europe.kgm", "Netherlands");
+i18n("europe.kgm", "The capital of Netherlands is...");
+i18n("europe.kgm", "Please click on:\nNetherlands");
+i18n("europe.kgm", "The flag of Netherlands is...");
+i18n("europe.kgm", "Amsterdam");
+i18n("europe.kgm", "Amsterdam is the capital of...");
+i18n("europe.kgm", "Norway");
+i18n("europe.kgm", "The capital of Norway is...");
+i18n("europe.kgm", "Please click on:\nNorway");
+i18n("europe.kgm", "The flag of Norway is...");
+i18n("europe.kgm", "Oslo");
+i18n("europe.kgm", "Oslo is the capital of...");
+i18n("europe.kgm", "Poland");
+i18n("europe.kgm", "The capital of Poland is...");
+i18n("europe.kgm", "Please click on:\nPoland");
+i18n("europe.kgm", "The flag of Poland is...");
+i18n("europe.kgm", "Warsaw");
+i18n("europe.kgm", "Warsaw is the capital of...");
+i18n("europe.kgm", "Portugal");
+i18n("europe.kgm", "The capital of Portugal is...");
+i18n("europe.kgm", "Please click on:\nPortugal");
+i18n("europe.kgm", "The flag of Portugal is...");
+i18n("europe.kgm", "Lisbon");
+i18n("europe.kgm", "Lisbon is the capital of...");
+i18n("europe.kgm", "Romania");
+i18n("europe.kgm", "The capital of Romania is...");
+i18n("europe.kgm", "Please click on:\nRomania");
+i18n("europe.kgm", "The flag of Romania is...");
+i18n("europe.kgm", "Bucharest");
+i18n("europe.kgm", "Bucharest is the capital of...");
+i18n("europe.kgm", "Russia");
+i18n("europe.kgm", "The capital of Russia is...");
+i18n("europe.kgm", "Please click on:\nRussia");
+i18n("europe.kgm", "The flag of Russia is...");
+i18n("europe.kgm", "Moscow");
+i18n("europe.kgm", "Moscow is the capital of...");
+i18n("europe.kgm", "San Marino");
+i18n("europe.kgm", "The capital of San Marino is...");
+i18n("europe.kgm", "Please click on:\nSan Marino");
+i18n("europe.kgm", "The flag of San Marino is...");
+i18n("europe.kgm", "San Marino");
+i18n("europe.kgm", "San Marino is the capital of...");
+i18n("europe.kgm", "Serbia");
+i18n("europe.kgm", "The capital of Serbia is...");
+i18n("europe.kgm", "Please click on:\nSerbia");
+i18n("europe.kgm", "The flag of Serbia is...");
+i18n("europe.kgm", "Belgrade");
+i18n("europe.kgm", "Belgrade is the capital of...");
+i18n("europe.kgm", "Montenegro");
+i18n("europe.kgm", "The capital of Montenegro is...");
+i18n("europe.kgm", "Please click on:\nMontenegro");
+i18n("europe.kgm", "The flag of Montenegro is...");
+i18n("europe.kgm", "Podgorica");
+i18n("europe.kgm", "Podgorica is the capital of...");
+i18n("europe.kgm", "Slovakia");
+i18n("europe.kgm", "The capital of Slovakia is...");
+i18n("europe.kgm", "Please click on:\nSlovakia");
+i18n("europe.kgm", "The flag of Slovakia is...");
+i18n("europe.kgm", "Bratislava");
+i18n("europe.kgm", "Bratislava is the capital of...");
+i18n("europe.kgm", "Slovenia");
+i18n("europe.kgm", "The capital of Slovenia is...");
+i18n("europe.kgm", "Please click on:\nSlovenia");
+i18n("europe.kgm", "The flag of Slovenia is...");
+i18n("europe.kgm", "Ljubljana");
+i18n("europe.kgm", "Ljubljana is the capital of...");
+i18n("europe.kgm", "Spain");
+i18n("europe.kgm", "The capital of Spain is...");
+i18n("europe.kgm", "Please click on:\nSpain");
+i18n("europe.kgm", "The flag of Spain is...");
+i18n("europe.kgm", "Madrid");
+i18n("europe.kgm", "Madrid is the capital of...");
+i18n("europe.kgm", "Sweden");
+i18n("europe.kgm", "The capital of Sweden is...");
+i18n("europe.kgm", "Please click on:\nSweden");
+i18n("europe.kgm", "The flag of Sweden is...");
+i18n("europe.kgm", "Stockholm");
+i18n("europe.kgm", "Stockholm is the capital of...");
+i18n("europe.kgm", "Switzerland");
+i18n("europe.kgm", "The capital of Switzerland is...");
+i18n("europe.kgm", "Please click on:\nSwitzerland");
+i18n("europe.kgm", "The flag of Switzerland is...");
+i18n("europe.kgm", "Bern");
+i18n("europe.kgm", "Bern is the capital of...");
+i18n("europe.kgm", "Syria");
+i18n("europe.kgm", "Tunisia");
+i18n("europe.kgm", "Turkey");
+i18n("europe.kgm", "The capital of Turkey is...");
+i18n("europe.kgm", "Please click on:\nTurkey");
+i18n("europe.kgm", "The flag of Turkey is...");
+i18n("europe.kgm", "Ankara");
+i18n("europe.kgm", "Ankara is the capital of...");
+i18n("europe.kgm", "Ukraine");
+i18n("europe.kgm", "The capital of Ukraine is...");
+i18n("europe.kgm", "Please click on:\nUkraine");
+i18n("europe.kgm", "The flag of Ukraine is...");
+i18n("europe.kgm", "Kiev");
+i18n("europe.kgm", "Kiev is the capital of...");
+i18n("europe.kgm", "United Kingdom");
+i18n("europe.kgm", "The capital of United Kingdom is...");
+i18n("europe.kgm", "Please click on:\nUnited Kingdom");
+i18n("europe.kgm", "The flag of United Kingdom is...");
+i18n("europe.kgm", "London");
+i18n("europe.kgm", "London is the capital of...");
+i18n("france.kgm", "France");
+i18n("france.kgm", "<qt>Current map:<br><b>France</b></qt>");
+i18n("france.kgm", "Not France");
+i18n("france.kgm", "Frontier");
+i18n("france.kgm", "Ain");
+i18n("france.kgm", "The capital of Ain is...");
+i18n("france.kgm", "Please click on:\nAin");
+i18n("france.kgm", "Bourg en Bresse");
+i18n("france.kgm", "Bourg en Bresse is the capital of...");
+i18n("france.kgm", "Aisne");
+i18n("france.kgm", "The capital of Aisne is...");
+i18n("france.kgm", "Please click on:\nAisne");
+i18n("france.kgm", "Laon");
+i18n("france.kgm", "Laon is the capital of...");
+i18n("france.kgm", "Allier");
+i18n("france.kgm", "The capital of Allier is...");
+i18n("france.kgm", "Please click on:\nAllier");
+i18n("france.kgm", "Moulins");
+i18n("france.kgm", "Moulins is the capital of...");
+i18n("france.kgm", "Alpes de Haute-Provence");
+i18n("france.kgm", "The capital of Alpes de Haute-Provence is...");
+i18n("france.kgm", "Please click on:\nAlpes de Haute-Provence");
+i18n("france.kgm", "Digne");
+i18n("france.kgm", "Digne is the capital of...");
+i18n("france.kgm", "Hautes-Alpes");
+i18n("france.kgm", "The capital of Hautes-Alpes is...");
+i18n("france.kgm", "Please click on:\nHautes-Alpes");
+i18n("france.kgm", "Gap");
+i18n("france.kgm", "Gap is the capital of...");
+i18n("france.kgm", "Alpes Maritimes");
+i18n("france.kgm", "The capital of Alpes Maritimes is...");
+i18n("france.kgm", "Please click on:\nAlpes Maritimes");
+i18n("france.kgm", "Nice");
+i18n("france.kgm", "Nice is the capital of...");
+i18n("france.kgm", "Ardèche");
+i18n("france.kgm", "The capital of Ardèche is...");
+i18n("france.kgm", "Please click on:\nArdèche");
+i18n("france.kgm", "Privas");
+i18n("france.kgm", "Privas is the capital of...");
+i18n("france.kgm", "Ardennes");
+i18n("france.kgm", "The capital of Ardennes is...");
+i18n("france.kgm", "Please click on:\nArdennes");
+i18n("france.kgm", "Charleville-Mézières");
+i18n("france.kgm", "Charleville-Mézières is the capital of...");
+i18n("france.kgm", "Ariège");
+i18n("france.kgm", "The capital of Ariège is...");
+i18n("france.kgm", "Please click on:\nAriège");
+i18n("france.kgm", "Foix");
+i18n("france.kgm", "Foix is the capital of...");
+i18n("france.kgm", "Aube");
+i18n("france.kgm", "The capital of Aube is...");
+i18n("france.kgm", "Please click on:\nAube");
+i18n("france.kgm", "Troyes");
+i18n("france.kgm", "Troyes is the capital of...");
+i18n("france.kgm", "Aude");
+i18n("france.kgm", "The capital of Aude is...");
+i18n("france.kgm", "Please click on:\nAude");
+i18n("france.kgm", "Carcassonne");
+i18n("france.kgm", "Carcassonne is the capital of...");
+i18n("france.kgm", "Aveyron");
+i18n("france.kgm", "The capital of Aveyron is...");
+i18n("france.kgm", "Please click on:\nAveyron");
+i18n("france.kgm", "Rodez");
+i18n("france.kgm", "Rodez is the capital of...");
+i18n("france.kgm", "Bouches-du-Rhône");
+i18n("france.kgm", "The capital of Bouches-du-Rhône is...");
+i18n("france.kgm", "Please click on:\nBouches-du-Rhône");
+i18n("france.kgm", "Marseille");
+i18n("france.kgm", "Marseille is the capital of...");
+i18n("france.kgm", "Calvados");
+i18n("france.kgm", "The capital of Calvados is...");
+i18n("france.kgm", "Please click on:\nCalvados");
+i18n("france.kgm", "Caen");
+i18n("france.kgm", "Caen is the capital of...");
+i18n("france.kgm", "Cantal");
+i18n("france.kgm", "The capital of Cantal is...");
+i18n("france.kgm", "Please click on:\nCantal");
+i18n("france.kgm", "Aurillac");
+i18n("france.kgm", "Aurillac is the capital of...");
+i18n("france.kgm", "Charente");
+i18n("france.kgm", "The capital of Charente is...");
+i18n("france.kgm", "Please click on:\nCharente");
+i18n("france.kgm", "Angoulème");
+i18n("france.kgm", "Angoulème is the capital of...");
+i18n("france.kgm", "Charente-Maritime");
+i18n("france.kgm", "The capital of Charente-Maritime is...");
+i18n("france.kgm", "Please click on:\nCharente-Maritime");
+i18n("france.kgm", "La Rochelle");
+i18n("france.kgm", "La Rochelle is the capital of...");
+i18n("france.kgm", "Cher");
+i18n("france.kgm", "The capital of Cher is...");
+i18n("france.kgm", "Please click on:\nCher");
+i18n("france.kgm", "Bourges");
+i18n("france.kgm", "Bourges is the capital of...");
+i18n("france.kgm", "Corrèze");
+i18n("france.kgm", "The capital of Corrèze is...");
+i18n("france.kgm", "Please click on:\nCorrèze");
+i18n("france.kgm", "Tulle");
+i18n("france.kgm", "Tulle is the capital of...");
+i18n("france.kgm", "Corse du Sud");
+i18n("france.kgm", "The capital of Corse du Sud is...");
+i18n("france.kgm", "Please click on:\nCorse du Sud");
+i18n("france.kgm", "Ajaccio");
+i18n("france.kgm", "Ajaccio is the capital of...");
+i18n("france.kgm", "Haute-Corse");
+i18n("france.kgm", "The capital of Haute-Corse is...");
+i18n("france.kgm", "Please click on:\nHaute-Corse");
+i18n("france.kgm", "Bastia");
+i18n("france.kgm", "Bastia is the capital of...");
+i18n("france.kgm", "Côte d'Or");
+i18n("france.kgm", "The capital of Côte d'Or is...");
+i18n("france.kgm", "Please click on:\nCôte d'Or");
+i18n("france.kgm", "Dijon");
+i18n("france.kgm", "Dijon is the capital of...");
+i18n("france.kgm", "Côtes d'Armor");
+i18n("france.kgm", "The capital of Côtes d'Armor is...");
+i18n("france.kgm", "Please click on:\nCôtes d'Armor");
+i18n("france.kgm", "Saint Brieuc");
+i18n("france.kgm", "Saint Brieuc is the capital of...");
+i18n("france.kgm", "Creuse");
+i18n("france.kgm", "The capital of Creuse is...");
+i18n("france.kgm", "Please click on:\nCreuse");
+i18n("france.kgm", "Guéret");
+i18n("france.kgm", "Guéret is the capital of...");
+i18n("france.kgm", "Dordogne");
+i18n("france.kgm", "The capital of Dordogne is...");
+i18n("france.kgm", "Please click on:\nDordogne");
+i18n("france.kgm", "Périgueux");
+i18n("france.kgm", "Périgueux is the capital of...");
+i18n("france.kgm", "Doubs");
+i18n("france.kgm", "The capital of Doubs is...");
+i18n("france.kgm", "Please click on:\nDoubs");
+i18n("france.kgm", "Besançon");
+i18n("france.kgm", "Besançon is the capital of...");
+i18n("france.kgm", "Drôme");
+i18n("france.kgm", "The capital of Drôme is...");
+i18n("france.kgm", "Please click on:\nDrôme");
+i18n("france.kgm", "Valence");
+i18n("france.kgm", "Valence is the capital of...");
+i18n("france.kgm", "Eure");
+i18n("france.kgm", "The capital of Eure is...");
+i18n("france.kgm", "Please click on:\nEure");
+i18n("france.kgm", "Evreux");
+i18n("france.kgm", "Evreux is the capital of...");
+i18n("france.kgm", "Eure et Loir");
+i18n("france.kgm", "The capital of Eure et Loir is...");
+i18n("france.kgm", "Please click on:\nEure et Loir");
+i18n("france.kgm", "Chartres");
+i18n("france.kgm", "Chartres is the capital of...");
+i18n("france.kgm", "Finistère");
+i18n("france.kgm", "The capital of Finistère is...");
+i18n("france.kgm", "Please click on:\nFinistère");
+i18n("france.kgm", "Quimper");
+i18n("france.kgm", "Quimper is the capital of...");
+i18n("france.kgm", "Gard");
+i18n("france.kgm", "The capital of Gard is...");
+i18n("france.kgm", "Please click on:\nGard");
+i18n("france.kgm", "Nîmes");
+i18n("france.kgm", "Nîmes is the capital of...");
+i18n("france.kgm", "Haute-Garonne");
+i18n("france.kgm", "The capital of Haute-Garonne is...");
+i18n("france.kgm", "Please click on:\nHaute-Garonne");
+i18n("france.kgm", "Toulouse");
+i18n("france.kgm", "Toulouse is the capital of...");
+i18n("france.kgm", "Gers");
+i18n("france.kgm", "The capital of Gers is...");
+i18n("france.kgm", "Please click on:\nGers");
+i18n("france.kgm", "Auch");
+i18n("france.kgm", "Auch is the capital of...");
+i18n("france.kgm", "Gironde");
+i18n("france.kgm", "The capital of Gironde is...");
+i18n("france.kgm", "Please click on:\nGironde");
+i18n("france.kgm", "Bordeaux");
+i18n("france.kgm", "Bordeaux is the capital of...");
+i18n("france.kgm", "Hérault");
+i18n("france.kgm", "The capital of Hérault is...");
+i18n("france.kgm", "Please click on:\nHérault");
+i18n("france.kgm", "Montpellier");
+i18n("france.kgm", "Montpellier is the capital of...");
+i18n("france.kgm", "Ille et Vilaine");
+i18n("france.kgm", "The capital of Ille et Vilaine is...");
+i18n("france.kgm", "Please click on:\nIlle et Vilaine");
+i18n("france.kgm", "Rennes");
+i18n("france.kgm", "Rennes is the capital of...");
+i18n("france.kgm", "Indre");
+i18n("france.kgm", "The capital of Indre is...");
+i18n("france.kgm", "Please click on:\nIndre");
+i18n("france.kgm", "Châteauroux");
+i18n("france.kgm", "Châteauroux is the capital of...");
+i18n("france.kgm", "Indre et Loire");
+i18n("france.kgm", "The capital of Indre et Loire is...");
+i18n("france.kgm", "Please click on:\nIndre et Loire");
+i18n("france.kgm", "Tours");
+i18n("france.kgm", "Tours is the capital of...");
+i18n("france.kgm", "Isère");
+i18n("france.kgm", "The capital of Isère is...");
+i18n("france.kgm", "Please click on:\nIsère");
+i18n("france.kgm", "Grenoble");
+i18n("france.kgm", "Grenoble is the capital of...");
+i18n("france.kgm", "Jura");
+i18n("france.kgm", "The capital of Jura is...");
+i18n("france.kgm", "Please click on:\nJura");
+i18n("france.kgm", "Lons le Saunier");
+i18n("france.kgm", "Lons le Saunier is the capital of...");
+i18n("france.kgm", "Landes");
+i18n("france.kgm", "The capital of Landes is...");
+i18n("france.kgm", "Please click on:\nLandes");
+i18n("france.kgm", "Mont de Marsan");
+i18n("france.kgm", "Mont de Marsan is the capital of...");
+i18n("france.kgm", "Loir et Cher");
+i18n("france.kgm", "The capital of Loir et Cher is...");
+i18n("france.kgm", "Please click on:\nLoir et Cher");
+i18n("france.kgm", "Blois");
+i18n("france.kgm", "Blois is the capital of...");
+i18n("france.kgm", "Loire");
+i18n("france.kgm", "The capital of Loire is...");
+i18n("france.kgm", "Please click on:\nLoire");
+i18n("france.kgm", "Saint Etienne");
+i18n("france.kgm", "Saint Etienne is the capital of...");
+i18n("france.kgm", "Haute-Loire");
+i18n("france.kgm", "The capital of Haute-Loire is...");
+i18n("france.kgm", "Please click on:\nHaute-Loire");
+i18n("france.kgm", "Le Puy");
+i18n("france.kgm", "Le Puy is the capital of...");
+i18n("france.kgm", "Loire-Atlantique");
+i18n("france.kgm", "The capital of Loire-Atlantique is...");
+i18n("france.kgm", "Please click on:\nLoire-Atlantique");
+i18n("france.kgm", "Nantes");
+i18n("france.kgm", "Nantes is the capital of...");
+i18n("france.kgm", "Loiret");
+i18n("france.kgm", "The capital of Loiret is...");
+i18n("france.kgm", "Please click on:\nLoiret");
+i18n("france.kgm", "Orléans");
+i18n("france.kgm", "Orléans is the capital of...");
+i18n("france.kgm", "Lot");
+i18n("france.kgm", "The capital of Lot is...");
+i18n("france.kgm", "Please click on:\nLot");
+i18n("france.kgm", "Cahors");
+i18n("france.kgm", "Cahors is the capital of...");
+i18n("france.kgm", "Lot et Garonne");
+i18n("france.kgm", "The capital of Lot et Garonne is...");
+i18n("france.kgm", "Please click on:\nLot et Garonne");
+i18n("france.kgm", "Agen");
+i18n("france.kgm", "Agen is the capital of...");
+i18n("france.kgm", "Lozère");
+i18n("france.kgm", "The capital of Lozère is...");
+i18n("france.kgm", "Please click on:\nLozère");
+i18n("france.kgm", "Mende");
+i18n("france.kgm", "Mende is the capital of...");
+i18n("france.kgm", "Maine et Loire");
+i18n("france.kgm", "The capital of Maine et Loire is...");
+i18n("france.kgm", "Please click on:\nMaine et Loire");
+i18n("france.kgm", "Angers");
+i18n("france.kgm", "Angers is the capital of...");
+i18n("france.kgm", "Manche");
+i18n("france.kgm", "The capital of Manche is...");
+i18n("france.kgm", "Please click on:\nManche");
+i18n("france.kgm", "Saint Lô");
+i18n("france.kgm", "Saint Lô is the capital of...");
+i18n("france.kgm", "Marne");
+i18n("france.kgm", "The capital of Marne is...");
+i18n("france.kgm", "Please click on:\nMarne");
+i18n("france.kgm", "Châlon en Champagne");
+i18n("france.kgm", "Châlon en Champagne is the capital of...");
+i18n("france.kgm", "Haute-Marne");
+i18n("france.kgm", "The capital of Haute-Marne is...");
+i18n("france.kgm", "Please click on:\nHaute-Marne");
+i18n("france.kgm", "Chaumont");
+i18n("france.kgm", "Chaumont is the capital of...");
+i18n("france.kgm", "Mayenne");
+i18n("france.kgm", "The capital of Mayenne is...");
+i18n("france.kgm", "Please click on:\nMayenne");
+i18n("france.kgm", "Laval");
+i18n("france.kgm", "Laval is the capital of...");
+i18n("france.kgm", "Meurthe et Moselle");
+i18n("france.kgm", "The capital of Meurthe et Moselle is...");
+i18n("france.kgm", "Please click on:\nMeurthe et Moselle");
+i18n("france.kgm", "Nancy");
+i18n("france.kgm", "Nancy is the capital of...");
+i18n("france.kgm", "Meuse");
+i18n("france.kgm", "The capital of Meuse is...");
+i18n("france.kgm", "Please click on:\nMeuse");
+i18n("france.kgm", "Bar le Duc");
+i18n("france.kgm", "Bar le Duc is the capital of...");
+i18n("france.kgm", "Morbihan");
+i18n("france.kgm", "The capital of Morbihan is...");
+i18n("france.kgm", "Please click on:\nMorbihan");
+i18n("france.kgm", "Vannes");
+i18n("france.kgm", "Vannes is the capital of...");
+i18n("france.kgm", "Moselle");
+i18n("france.kgm", "The capital of Moselle is...");
+i18n("france.kgm", "Please click on:\nMoselle");
+i18n("france.kgm", "Metz");
+i18n("france.kgm", "Metz is the capital of...");
+i18n("france.kgm", "Nièvre");
+i18n("france.kgm", "The capital of Nièvre is...");
+i18n("france.kgm", "Please click on:\nNièvre");
+i18n("france.kgm", "Nevers");
+i18n("france.kgm", "Nevers is the capital of...");
+i18n("france.kgm", "Nord");
+i18n("france.kgm", "The capital of Nord is...");
+i18n("france.kgm", "Please click on:\nNord");
+i18n("france.kgm", "Lille");
+i18n("france.kgm", "Lille is the capital of...");
+i18n("france.kgm", "Oise");
+i18n("france.kgm", "The capital of Oise is...");
+i18n("france.kgm", "Please click on:\nOise");
+i18n("france.kgm", "Beauvais");
+i18n("france.kgm", "Beauvais is the capital of...");
+i18n("france.kgm", "Orne");
+i18n("france.kgm", "The capital of Orne is...");
+i18n("france.kgm", "Please click on:\nOrne");
+i18n("france.kgm", "Alençon");
+i18n("france.kgm", "Alençon is the capital of...");
+i18n("france.kgm", "Pas-de-Calais");
+i18n("france.kgm", "The capital of Pas-de-Calais is...");
+i18n("france.kgm", "Please click on:\nPas-de-Calais");
+i18n("france.kgm", "Arras");
+i18n("france.kgm", "Arras is the capital of...");
+i18n("france.kgm", "Puy-de-Dôme");
+i18n("france.kgm", "The capital of Puy-de-Dôme is...");
+i18n("france.kgm", "Please click on:\nPuy-de-Dôme");
+i18n("france.kgm", "Clermont Ferrand");
+i18n("france.kgm", "Clermont Ferrand is the capital of...");
+i18n("france.kgm", "Pyrénées-Atlantiques");
+i18n("france.kgm", "The capital of Pyrénées-Atlantiques is...");
+i18n("france.kgm", "Please click on:\nPyrénées-Atlantiques");
+i18n("france.kgm", "Pau");
+i18n("france.kgm", "Pau is the capital of...");
+i18n("france.kgm", "Hautes-Pyrénées");
+i18n("france.kgm", "The capital of Hautes-Pyrénées is...");
+i18n("france.kgm", "Please click on:\nHautes-Pyrénées");
+i18n("france.kgm", "Tarbes");
+i18n("france.kgm", "Tarbes is the capital of...");
+i18n("france.kgm", "Pyrénées-Orientales");
+i18n("france.kgm", "The capital of Pyrénées-Orientales is...");
+i18n("france.kgm", "Please click on:\nPyrénées-Orientales");
+i18n("france.kgm", "Perpignan");
+i18n("france.kgm", "Perpignan is the capital of...");
+i18n("france.kgm", "Bas-Rhin");
+i18n("france.kgm", "The capital of Bas-Rhin is...");
+i18n("france.kgm", "Please click on:\nBas-Rhin");
+i18n("france.kgm", "Strasbourg");
+i18n("france.kgm", "Strasbourg is the capital of...");
+i18n("france.kgm", "Haut-Rhin");
+i18n("france.kgm", "The capital of Haut-Rhin is...");
+i18n("france.kgm", "Please click on:\nHaut-Rhin");
+i18n("france.kgm", "Colmar");
+i18n("france.kgm", "Colmar is the capital of...");
+i18n("france.kgm", "Rhône");
+i18n("france.kgm", "The capital of Rhône is...");
+i18n("france.kgm", "Please click on:\nRhône");
+i18n("france.kgm", "Lyon");
+i18n("france.kgm", "Lyon is the capital of...");
+i18n("france.kgm", "Haute-Saône");
+i18n("france.kgm", "The capital of Haute-Saône is...");
+i18n("france.kgm", "Please click on:\nHaute-Saône");
+i18n("france.kgm", "Vesoul");
+i18n("france.kgm", "Vesoul is the capital of...");
+i18n("france.kgm", "Saône et Loire");
+i18n("france.kgm", "The capital of Saône et Loire is...");
+i18n("france.kgm", "Please click on:\nSaône et Loire");
+i18n("france.kgm", "Mâcon");
+i18n("france.kgm", "Mâcon is the capital of...");
+i18n("france.kgm", "Sarthe");
+i18n("france.kgm", "The capital of Sarthe is...");
+i18n("france.kgm", "Please click on:\nSarthe");
+i18n("france.kgm", "Le Mans");
+i18n("france.kgm", "Le Mans is the capital of...");
+i18n("france.kgm", "Savoie");
+i18n("france.kgm", "The capital of Savoie is...");
+i18n("france.kgm", "Please click on:\nSavoie");
+i18n("france.kgm", "Chambéry");
+i18n("france.kgm", "Chambéry is the capital of...");
+i18n("france.kgm", "Haute-Savoie");
+i18n("france.kgm", "The capital of Haute-Savoie is...");
+i18n("france.kgm", "Please click on:\nHaute-Savoie");
+i18n("france.kgm", "Annecy");
+i18n("france.kgm", "Annecy is the capital of...");
+i18n("france.kgm", "Paris");
+i18n("france.kgm", "The capital of Paris is...");
+i18n("france.kgm", "Please click on:\nParis");
+i18n("france.kgm", "Paris");
+i18n("france.kgm", "Paris is the capital of...");
+i18n("france.kgm", "Seine-Maritime");
+i18n("france.kgm", "The capital of Seine-Maritime is...");
+i18n("france.kgm", "Please click on:\nSeine-Maritime");
+i18n("france.kgm", "Rouen");
+i18n("france.kgm", "Rouen is the capital of...");
+i18n("france.kgm", "Seine et Marne");
+i18n("france.kgm", "The capital of Seine et Marne is...");
+i18n("france.kgm", "Please click on:\nSeine et Marne");
+i18n("france.kgm", "Melun");
+i18n("france.kgm", "Melun is the capital of...");
+i18n("france.kgm", "Yvelines");
+i18n("france.kgm", "The capital of Yvelines is...");
+i18n("france.kgm", "Please click on:\nYvelines");
+i18n("france.kgm", "Versailles");
+i18n("france.kgm", "Versailles is the capital of...");
+i18n("france.kgm", "Deux-Sèvres");
+i18n("france.kgm", "The capital of Deux-Sèvres is...");
+i18n("france.kgm", "Please click on:\nDeux-Sèvres");
+i18n("france.kgm", "Niort");
+i18n("france.kgm", "Niort is the capital of...");
+i18n("france.kgm", "Somme");
+i18n("france.kgm", "The capital of Somme is...");
+i18n("france.kgm", "Please click on:\nSomme");
+i18n("france.kgm", "Amiens");
+i18n("france.kgm", "Amiens is the capital of...");
+i18n("france.kgm", "Tarn");
+i18n("france.kgm", "The capital of Tarn is...");
+i18n("france.kgm", "Please click on:\nTarn");
+i18n("france.kgm", "Albi");
+i18n("france.kgm", "Albi is the capital of...");
+i18n("france.kgm", "Tarn et Garonne");
+i18n("france.kgm", "The capital of Tarn et Garonne is...");
+i18n("france.kgm", "Please click on:\nTarn et Garonne");
+i18n("france.kgm", "Montauban");
+i18n("france.kgm", "Montauban is the capital of...");
+i18n("france.kgm", "Var");
+i18n("france.kgm", "The capital of Var is...");
+i18n("france.kgm", "Please click on:\nVar");
+i18n("france.kgm", "Toulon");
+i18n("france.kgm", "Toulon is the capital of...");
+i18n("france.kgm", "Vaucluse");
+i18n("france.kgm", "The capital of Vaucluse is...");
+i18n("france.kgm", "Please click on:\nVaucluse");
+i18n("france.kgm", "Avignon");
+i18n("france.kgm", "Avignon is the capital of...");
+i18n("france.kgm", "Vendée");
+i18n("france.kgm", "The capital of Vendée is...");
+i18n("france.kgm", "Please click on:\nVendée");
+i18n("france.kgm", "La Roche sur Yon");
+i18n("france.kgm", "La Roche sur Yon is the capital of...");
+i18n("france.kgm", "Vienne");
+i18n("france.kgm", "The capital of Vienne is...");
+i18n("france.kgm", "Please click on:\nVienne");
+i18n("france.kgm", "Poitiers");
+i18n("france.kgm", "Poitiers is the capital of...");
+i18n("france.kgm", "Haute-Vienne");
+i18n("france.kgm", "The capital of Haute-Vienne is...");
+i18n("france.kgm", "Please click on:\nHaute-Vienne");
+i18n("france.kgm", "Limoges");
+i18n("france.kgm", "Limoges is the capital of...");
+i18n("france.kgm", "Vosges");
+i18n("france.kgm", "The capital of Vosges is...");
+i18n("france.kgm", "Please click on:\nVosges");
+i18n("france.kgm", "Epinal");
+i18n("france.kgm", "Epinal is the capital of...");
+i18n("france.kgm", "Yonne");
+i18n("france.kgm", "The capital of Yonne is...");
+i18n("france.kgm", "Please click on:\nYonne");
+i18n("france.kgm", "Auxerre");
+i18n("france.kgm", "Auxerre is the capital of...");
+i18n("france.kgm", "Territoire de Belfort");
+i18n("france.kgm", "The capital of Territoire de Belfort is...");
+i18n("france.kgm", "Please click on:\nTerritoire de Belfort");
+i18n("france.kgm", "Belfort");
+i18n("france.kgm", "Belfort is the capital of...");
+i18n("france.kgm", "Essonne");
+i18n("france.kgm", "The capital of Essonne is...");
+i18n("france.kgm", "Please click on:\nEssonne");
+i18n("france.kgm", "Evry");
+i18n("france.kgm", "Evry is the capital of...");
+i18n("france.kgm", "Hauts-de-Seine");
+i18n("france.kgm", "The capital of Hauts-de-Seine is...");
+i18n("france.kgm", "Please click on:\nHauts-de-Seine");
+i18n("france.kgm", "Nanterre");
+i18n("france.kgm", "Nanterre is the capital of...");
+i18n("france.kgm", "Seine-Saint-Denis");
+i18n("france.kgm", "The capital of Seine-Saint-Denis is...");
+i18n("france.kgm", "Please click on:\nSeine-Saint-Denis");
+i18n("france.kgm", "Bobigny");
+i18n("france.kgm", "Bobigny is the capital of...");
+i18n("france.kgm", "Val-de-Marne");
+i18n("france.kgm", "The capital of Val-de-Marne is...");
+i18n("france.kgm", "Please click on:\nVal-de-Marne");
+i18n("france.kgm", "Créteil");
+i18n("france.kgm", "Créteil is the capital of...");
+i18n("france.kgm", "Val d'Oise");
+i18n("france.kgm", "The capital of Val d'Oise is...");
+i18n("france.kgm", "Please click on:\nVal d'Oise");
+i18n("france.kgm", "Cergy-Pontoise");
+i18n("france.kgm", "Cergy-Pontoise is the capital of...");
+i18n("germany.kgm", "Germany");
+i18n("germany.kgm", "<qt>Current map:<br><b>Germany</b></qt>");
+i18n("germany.kgm", "Frontier");
+i18n("germany.kgm", "Not Germany");
+i18n("germany.kgm", "Baden-Württemberg");
+i18n("germany.kgm", "The capital of Baden-Württemberg is...");
+i18n("germany.kgm", "Please click on:\nBaden-Württemberg");
+i18n("germany.kgm", "The flag of Baden-Württemberg is...");
+i18n("germany.kgm", "Stuttgart");
+i18n("germany.kgm", "Stuttgart is the capital of...");
+i18n("germany.kgm", "Bavaria");
+i18n("germany.kgm", "The capital of Bavaria is...");
+i18n("germany.kgm", "Please click on:\nBavaria");
+i18n("germany.kgm", "The flag of Bavaria is...");
+i18n("germany.kgm", "Munich");
+i18n("germany.kgm", "Munich is the capital of...");
+i18n("germany.kgm", "Berlin");
+i18n("germany.kgm", "The capital of Berlin is...");
+i18n("germany.kgm", "Please click on:\nBerlin");
+i18n("germany.kgm", "The flag of Berlin is...");
+i18n("germany.kgm", "Berlin");
+i18n("germany.kgm", "Berlin is the capital of...");
+i18n("germany.kgm", "Brandenburg");
+i18n("germany.kgm", "The capital of Brandenburg is...");
+i18n("germany.kgm", "Please click on:\nBrandenburg");
+i18n("germany.kgm", "The flag of Brandenburg is...");
+i18n("germany.kgm", "Potsdam");
+i18n("germany.kgm", "Potsdam is the capital of...");
+i18n("germany.kgm", "Bremen");
+i18n("germany.kgm", "The capital of Bremen is...");
+i18n("germany.kgm", "Please click on:\nBremen");
+i18n("germany.kgm", "The flag of Bremen is...");
+i18n("germany.kgm", "Bremen");
+i18n("germany.kgm", "Bremen is the capital of...");
+i18n("germany.kgm", "Hamburg");
+i18n("germany.kgm", "The capital of Hamburg is...");
+i18n("germany.kgm", "Please click on:\nHamburg");
+i18n("germany.kgm", "The flag of Hamburg is...");
+i18n("germany.kgm", "Hamburg");
+i18n("germany.kgm", "Hamburg is the capital of...");
+i18n("germany.kgm", "Hesse");
+i18n("germany.kgm", "The capital of Hesse is...");
+i18n("germany.kgm", "Please click on:\nHesse");
+i18n("germany.kgm", "The flag of Hesse is...");
+i18n("germany.kgm", "Wiesbaden");
+i18n("germany.kgm", "Wiesbaden is the capital of...");
+i18n("germany.kgm", "Mecklenburg-Western Pomerania");
+i18n("germany.kgm", "The capital of Mecklenburg-Western Pomerania is...");
+i18n("germany.kgm", "Please click on:\nMecklenburg-Western Pomerania");
+i18n("germany.kgm", "The flag of Mecklenburg-Western Pomerania is...");
+i18n("germany.kgm", "Schwerin");
+i18n("germany.kgm", "Schwerin is the capital of...");
+i18n("germany.kgm", "Lower Saxony");
+i18n("germany.kgm", "The capital of Lower Saxony is...");
+i18n("germany.kgm", "Please click on:\nLower Saxony");
+i18n("germany.kgm", "The flag of Lower Saxony is...");
+i18n("germany.kgm", "Hanover");
+i18n("germany.kgm", "Hanover is the capital of...");
+i18n("germany.kgm", "North Rhine-Westphalia");
+i18n("germany.kgm", "The capital of North Rhine-Westphalia is...");
+i18n("germany.kgm", "Please click on:\nNorth Rhine-Westphalia");
+i18n("germany.kgm", "The flag of North Rhine-Westphalia is...");
+i18n("germany.kgm", "Düsseldorf");
+i18n("germany.kgm", "Düsseldorf is the capital of...");
+i18n("germany.kgm", "Rhineland-Palatinate");
+i18n("germany.kgm", "The capital of Rhineland-Palatinate is...");
+i18n("germany.kgm", "Please click on:\nRhineland-Palatinate");
+i18n("germany.kgm", "The flag of Rhineland-Palatinate is...");
+i18n("germany.kgm", "Mainz");
+i18n("germany.kgm", "Mainz is the capital of...");
+i18n("germany.kgm", "Saarland");
+i18n("germany.kgm", "The capital of Saarland is...");
+i18n("germany.kgm", "Please click on:\nSaarland");
+i18n("germany.kgm", "The flag of Saarland is...");
+i18n("germany.kgm", "Saarbrücken");
+i18n("germany.kgm", "Saarbrücken is the capital of...");
+i18n("germany.kgm", "Saxony");
+i18n("germany.kgm", "The capital of Saxony is...");
+i18n("germany.kgm", "Please click on:\nSaxony");
+i18n("germany.kgm", "The flag of Saxony is...");
+i18n("germany.kgm", "Dresden");
+i18n("germany.kgm", "Dresden is the capital of...");
+i18n("germany.kgm", "Saxony-Anhalt");
+i18n("germany.kgm", "The capital of Saxony-Anhalt is...");
+i18n("germany.kgm", "Please click on:\nSaxony-Anhalt");
+i18n("germany.kgm", "The flag of Saxony-Anhalt is...");
+i18n("germany.kgm", "Magdeburg");
+i18n("germany.kgm", "Magdeburg is the capital of...");
+i18n("germany.kgm", "Schleswig-Holstein");
+i18n("germany.kgm", "The capital of Schleswig-Holstein is...");
+i18n("germany.kgm", "Please click on:\nSchleswig-Holstein");
+i18n("germany.kgm", "The flag of Schleswig-Holstein is...");
+i18n("germany.kgm", "Kiel");
+i18n("germany.kgm", "Kiel is the capital of...");
+i18n("germany.kgm", "Thuringia");
+i18n("germany.kgm", "The capital of Thuringia is...");
+i18n("germany.kgm", "Please click on:\nThuringia");
+i18n("germany.kgm", "The flag of Thuringia is...");
+i18n("germany.kgm", "Erfurt");
+i18n("germany.kgm", "Erfurt is the capital of...");
+i18n("italy.kgm", "Italy");
+i18n("italy.kgm", "<qt>Current map:<br><b>Italy</b></qt>");
+i18n("italy.kgm", "Not Italy");
+i18n("italy.kgm", "Frontier");
+i18n("italy.kgm", "Sicily");
+i18n("italy.kgm", "The capital of Sicily is...");
+i18n("italy.kgm", "Please click on:\nSicily");
+i18n("italy.kgm", "The flag of Sicily is...");
+i18n("italy.kgm", "Palermo");
+i18n("italy.kgm", "Palermo is the capital of...");
+i18n("italy.kgm", "Friuli Venezia Giulia");
+i18n("italy.kgm", "The capital of Friuli Venezia Giulia is...");
+i18n("italy.kgm", "Please click on:\nFriuli Venezia Giulia");
+i18n("italy.kgm", "The flag of Friuli Venezia Giulia is...");
+i18n("italy.kgm", "Trieste");
+i18n("italy.kgm", "Trieste is the capital of...");
+i18n("italy.kgm", "Abruzzo");
+i18n("italy.kgm", "The capital of Abruzzo is...");
+i18n("italy.kgm", "Please click on:\nAbruzzo");
+i18n("italy.kgm", "The flag of Abruzzo is...");
+i18n("italy.kgm", "L'Aquila");
+i18n("italy.kgm", "L'Aquila is the capital of...");
+i18n("italy.kgm", "Latium");
+i18n("italy.kgm", "The capital of Latium is...");
+i18n("italy.kgm", "Please click on:\nLatium");
+i18n("italy.kgm", "The flag of Latium is...");
+i18n("italy.kgm", "Rome");
+i18n("italy.kgm", "Rome is the capital of...");
+i18n("italy.kgm", "Calabria");
+i18n("italy.kgm", "The capital of Calabria is...");
+i18n("italy.kgm", "Please click on:\nCalabria");
+i18n("italy.kgm", "The flag of Calabria is...");
+i18n("italy.kgm", "Catanzaro");
+i18n("italy.kgm", "Catanzaro is the capital of...");
+i18n("italy.kgm", "Piedmont");
+i18n("italy.kgm", "The capital of Piedmont is...");
+i18n("italy.kgm", "Please click on:\nPiedmont");
+i18n("italy.kgm", "The flag of Piedmont is...");
+i18n("italy.kgm", "Turin");
+i18n("italy.kgm", "Turin is the capital of...");
+i18n("italy.kgm", "Apulia");
+i18n("italy.kgm", "The capital of Apulia is...");
+i18n("italy.kgm", "Please click on:\nApulia");
+i18n("italy.kgm", "The flag of Apulia is...");
+i18n("italy.kgm", "Bari");
+i18n("italy.kgm", "Bari is the capital of...");
+i18n("italy.kgm", "Lombardy");
+i18n("italy.kgm", "The capital of Lombardy is...");
+i18n("italy.kgm", "Please click on:\nLombardy");
+i18n("italy.kgm", "The flag of Lombardy is...");
+i18n("italy.kgm", "Milan");
+i18n("italy.kgm", "Milan is the capital of...");
+i18n("italy.kgm", "Umbria");
+i18n("italy.kgm", "The capital of Umbria is...");
+i18n("italy.kgm", "Please click on:\nUmbria");
+i18n("italy.kgm", "The flag of Umbria is...");
+i18n("italy.kgm", "Perugia");
+i18n("italy.kgm", "Perugia is the capital of...");
+i18n("italy.kgm", "Trentino Alto Adige");
+i18n("italy.kgm", "The capital of Trentino Alto Adige is...");
+i18n("italy.kgm", "Please click on:\nTrentino Alto Adige");
+i18n("italy.kgm", "The flag of Trentino Alto Adige is...");
+i18n("italy.kgm", "Trento");
+i18n("italy.kgm", "Trento is the capital of...");
+i18n("italy.kgm", "Molise");
+i18n("italy.kgm", "The capital of Molise is...");
+i18n("italy.kgm", "Please click on:\nMolise");
+i18n("italy.kgm", "The flag of Molise is...");
+i18n("italy.kgm", "Campobasso");
+i18n("italy.kgm", "Campobasso is the capital of...");
+i18n("italy.kgm", "Tuscany");
+i18n("italy.kgm", "The capital of Tuscany is...");
+i18n("italy.kgm", "Please click on:\nTuscany");
+i18n("italy.kgm", "The flag of Tuscany is...");
+i18n("italy.kgm", "Florence");
+i18n("italy.kgm", "Florence is the capital of...");
+i18n("italy.kgm", "Emilia Romagna");
+i18n("italy.kgm", "The capital of Emilia Romagna is...");
+i18n("italy.kgm", "Please click on:\nEmilia Romagna");
+i18n("italy.kgm", "The flag of Emilia Romagna is...");
+i18n("italy.kgm", "Bologna");
+i18n("italy.kgm", "Bologna is the capital of...");
+i18n("italy.kgm", "Val d'Aosta");
+i18n("italy.kgm", "The capital of Val d'Aosta is...");
+i18n("italy.kgm", "Please click on:\nVal d'Aosta");
+i18n("italy.kgm", "The flag of Val d'Aosta is...");
+i18n("italy.kgm", "Aosta");
+i18n("italy.kgm", "Aosta is the capital of...");
+i18n("italy.kgm", "Campania");
+i18n("italy.kgm", "The capital of Campania is...");
+i18n("italy.kgm", "Please click on:\nCampania");
+i18n("italy.kgm", "The flag of Campania is...");
+i18n("italy.kgm", "Naples");
+i18n("italy.kgm", "Naples is the capital of...");
+i18n("italy.kgm", "Basilicata");
+i18n("italy.kgm", "The capital of Basilicata is...");
+i18n("italy.kgm", "Please click on:\nBasilicata");
+i18n("italy.kgm", "The flag of Basilicata is...");
+i18n("italy.kgm", "Potenza");
+i18n("italy.kgm", "Potenza is the capital of...");
+i18n("italy.kgm", "Liguria");
+i18n("italy.kgm", "The capital of Liguria is...");
+i18n("italy.kgm", "Please click on:\nLiguria");
+i18n("italy.kgm", "The flag of Liguria is...");
+i18n("italy.kgm", "Genoa");
+i18n("italy.kgm", "Genoa is the capital of...");
+i18n("italy.kgm", "Sardinia");
+i18n("italy.kgm", "The capital of Sardinia is...");
+i18n("italy.kgm", "Please click on:\nSardinia");
+i18n("italy.kgm", "The flag of Sardinia is...");
+i18n("italy.kgm", "Cagliari");
+i18n("italy.kgm", "Cagliari is the capital of...");
+i18n("italy.kgm", "Marches");
+i18n("italy.kgm", "The capital of Marches is...");
+i18n("italy.kgm", "Please click on:\nMarches");
+i18n("italy.kgm", "The flag of Marches is...");
+i18n("italy.kgm", "Ancona");
+i18n("italy.kgm", "Ancona is the capital of...");
+i18n("italy.kgm", "Veneto");
+i18n("italy.kgm", "The capital of Veneto is...");
+i18n("italy.kgm", "Please click on:\nVeneto");
+i18n("italy.kgm", "The flag of Veneto is...");
+i18n("italy.kgm", "Venice");
+i18n("italy.kgm", "Venice is the capital of...");
+i18n("italyprovince.kgm", "Italy by Provinces");
+i18n("italyprovince.kgm", "<qt>Current map:<br><b>Italy by Provinces</b></qt>");
+i18n("italyprovince.kgm", "Frontier");
+i18n("italyprovince.kgm", "Not Italy");
+i18n("italyprovince.kgm", "Alessandria");
+i18n("italyprovince.kgm", "The capital of Alessandria is...");
+i18n("italyprovince.kgm", "Please click on:\nAlessandria");
+i18n("italyprovince.kgm", "Alessandria");
+i18n("italyprovince.kgm", "Alessandria is the capital of...");
+i18n("italyprovince.kgm", "Asti");
+i18n("italyprovince.kgm", "The capital of Asti is...");
+i18n("italyprovince.kgm", "Please click on:\nAsti");
+i18n("italyprovince.kgm", "Asti");
+i18n("italyprovince.kgm", "Asti is the capital of...");
+i18n("italyprovince.kgm", "Biella");
+i18n("italyprovince.kgm", "The capital of Biella is...");
+i18n("italyprovince.kgm", "Please click on:\nBiella");
+i18n("italyprovince.kgm", "Biella");
+i18n("italyprovince.kgm", "Biella is the capital of...");
+i18n("italyprovince.kgm", "Cuneo");
+i18n("italyprovince.kgm", "The capital of Cuneo is...");
+i18n("italyprovince.kgm", "Please click on:\nCuneo");
+i18n("italyprovince.kgm", "Cuneo");
+i18n("italyprovince.kgm", "Cuneo is the capital of...");
+i18n("italyprovince.kgm", "Novara");
+i18n("italyprovince.kgm", "The capital of Novara is...");
+i18n("italyprovince.kgm", "Please click on:\nNovara");
+i18n("italyprovince.kgm", "Novara");
+i18n("italyprovince.kgm", "Novara is the capital of...");
+i18n("italyprovince.kgm", "Turin");
+i18n("italyprovince.kgm", "The capital of Turin is...");
+i18n("italyprovince.kgm", "Please click on:\nTurin");
+i18n("italyprovince.kgm", "Turin");
+i18n("italyprovince.kgm", "Turin is the capital of...");
+i18n("italyprovince.kgm", "Verbano-Cusio-Ossola");
+i18n("italyprovince.kgm", "The capital of Verbano-Cusio-Ossola is...");
+i18n("italyprovince.kgm", "Please click on:\nVerbano-Cusio-Ossola");
+i18n("italyprovince.kgm", "Verbania");
+i18n("italyprovince.kgm", "Verbania is the capital of...");
+i18n("italyprovince.kgm", "Vercelli");
+i18n("italyprovince.kgm", "The capital of Vercelli is...");
+i18n("italyprovince.kgm", "Please click on:\nVercelli");
+i18n("italyprovince.kgm", "Vercelli");
+i18n("italyprovince.kgm", "Vercelli is the capital of...");
+i18n("italyprovince.kgm", "Bergamo");
+i18n("italyprovince.kgm", "The capital of Bergamo is...");
+i18n("italyprovince.kgm", "Please click on:\nBergamo");
+i18n("italyprovince.kgm", "Bergamo");
+i18n("italyprovince.kgm", "Bergamo is the capital of...");
+i18n("italyprovince.kgm", "Brescia");
+i18n("italyprovince.kgm", "The capital of Brescia is...");
+i18n("italyprovince.kgm", "Please click on:\nBrescia");
+i18n("italyprovince.kgm", "Brescia");
+i18n("italyprovince.kgm", "Brescia is the capital of...");
+i18n("italyprovince.kgm", "Como");
+i18n("italyprovince.kgm", "The capital of Como is...");
+i18n("italyprovince.kgm", "Please click on:\nComo");
+i18n("italyprovince.kgm", "Como");
+i18n("italyprovince.kgm", "Como is the capital of...");
+i18n("italyprovince.kgm", "Cremona");
+i18n("italyprovince.kgm", "The capital of Cremona is...");
+i18n("italyprovince.kgm", "Please click on:\nCremona");
+i18n("italyprovince.kgm", "Cremona");
+i18n("italyprovince.kgm", "Cremona is the capital of...");
+i18n("italyprovince.kgm", "Lecco");
+i18n("italyprovince.kgm", "The capital of Lecco is...");
+i18n("italyprovince.kgm", "Please click on:\nLecco");
+i18n("italyprovince.kgm", "Lecco");
+i18n("italyprovince.kgm", "Lecco is the capital of...");
+i18n("italyprovince.kgm", "Lodi");
+i18n("italyprovince.kgm", "The capital of Lodi is...");
+i18n("italyprovince.kgm", "Please click on:\nLodi");
+i18n("italyprovince.kgm", "Lodi");
+i18n("italyprovince.kgm", "Lodi is the capital of...");
+i18n("italyprovince.kgm", "Mantova");
+i18n("italyprovince.kgm", "The capital of Mantova is...");
+i18n("italyprovince.kgm", "Please click on:\nMantova");
+i18n("italyprovince.kgm", "Mantova");
+i18n("italyprovince.kgm", "Mantova is the capital of...");
+i18n("italyprovince.kgm", "Milan");
+i18n("italyprovince.kgm", "The capital of Milan is...");
+i18n("italyprovince.kgm", "Please click on:\nMilan");
+i18n("italyprovince.kgm", "Milan");
+i18n("italyprovince.kgm", "Milan is the capital of...");
+i18n("italyprovince.kgm", "Pavia");
+i18n("italyprovince.kgm", "The capital of Pavia is...");
+i18n("italyprovince.kgm", "Please click on:\nPavia");
+i18n("italyprovince.kgm", "Pavia");
+i18n("italyprovince.kgm", "Pavia is the capital of...");
+i18n("italyprovince.kgm", "Sondrio");
+i18n("italyprovince.kgm", "The capital of Sondrio is...");
+i18n("italyprovince.kgm", "Please click on:\nSondrio");
+i18n("italyprovince.kgm", "Sondrio");
+i18n("italyprovince.kgm", "Sondrio is the capital of...");
+i18n("italyprovince.kgm", "Varese");
+i18n("italyprovince.kgm", "The capital of Varese is...");
+i18n("italyprovince.kgm", "Please click on:\nVarese");
+i18n("italyprovince.kgm", "Varese");
+i18n("italyprovince.kgm", "Varese is the capital of...");
+i18n("italyprovince.kgm", "Aosta");
+i18n("italyprovince.kgm", "The capital of Aosta is...");
+i18n("italyprovince.kgm", "Please click on:\nAosta");
+i18n("italyprovince.kgm", "Aosta");
+i18n("italyprovince.kgm", "Aosta is the capital of...");
+i18n("italyprovince.kgm", "Bolzano");
+i18n("italyprovince.kgm", "The capital of Bolzano is...");
+i18n("italyprovince.kgm", "Please click on:\nBolzano");
+i18n("italyprovince.kgm", "Bolzano");
+i18n("italyprovince.kgm", "Bolzano is the capital of...");
+i18n("italyprovince.kgm", "Trento");
+i18n("italyprovince.kgm", "The capital of Trento is...");
+i18n("italyprovince.kgm", "Please click on:\nTrento");
+i18n("italyprovince.kgm", "Trento");
+i18n("italyprovince.kgm", "Trento is the capital of...");
+i18n("italyprovince.kgm", "Belluno");
+i18n("italyprovince.kgm", "The capital of Belluno is...");
+i18n("italyprovince.kgm", "Please click on:\nBelluno");
+i18n("italyprovince.kgm", "Belluno");
+i18n("italyprovince.kgm", "Belluno is the capital of...");
+i18n("italyprovince.kgm", "Padova");
+i18n("italyprovince.kgm", "The capital of Padova is...");
+i18n("italyprovince.kgm", "Please click on:\nPadova");
+i18n("italyprovince.kgm", "Padova");
+i18n("italyprovince.kgm", "Padova is the capital of...");
+i18n("italyprovince.kgm", "Rovigo");
+i18n("italyprovince.kgm", "The capital of Rovigo is...");
+i18n("italyprovince.kgm", "Please click on:\nRovigo");
+i18n("italyprovince.kgm", "Rovigo");
+i18n("italyprovince.kgm", "Rovigo is the capital of...");
+i18n("italyprovince.kgm", "Treviso");
+i18n("italyprovince.kgm", "The capital of Treviso is...");
+i18n("italyprovince.kgm", "Please click on:\nTreviso");
+i18n("italyprovince.kgm", "Treviso");
+i18n("italyprovince.kgm", "Treviso is the capital of...");
+i18n("italyprovince.kgm", "Venice");
+i18n("italyprovince.kgm", "The capital of Venice is...");
+i18n("italyprovince.kgm", "Please click on:\nVenice");
+i18n("italyprovince.kgm", "Venice");
+i18n("italyprovince.kgm", "Venice is the capital of...");
+i18n("italyprovince.kgm", "Verona");
+i18n("italyprovince.kgm", "The capital of Verona is...");
+i18n("italyprovince.kgm", "Please click on:\nVerona");
+i18n("italyprovince.kgm", "Verona");
+i18n("italyprovince.kgm", "Verona is the capital of...");
+i18n("italyprovince.kgm", "Vicenza");
+i18n("italyprovince.kgm", "The capital of Vicenza is...");
+i18n("italyprovince.kgm", "Please click on:\nVicenza");
+i18n("italyprovince.kgm", "Vicenza");
+i18n("italyprovince.kgm", "Vicenza is the capital of...");
+i18n("italyprovince.kgm", "Gorizia");
+i18n("italyprovince.kgm", "The capital of Gorizia is...");
+i18n("italyprovince.kgm", "Please click on:\nGorizia");
+i18n("italyprovince.kgm", "Gorizia");
+i18n("italyprovince.kgm", "Gorizia is the capital of...");
+i18n("italyprovince.kgm", "Pordenone");
+i18n("italyprovince.kgm", "The capital of Pordenone is...");
+i18n("italyprovince.kgm", "Please click on:\nPordenone");
+i18n("italyprovince.kgm", "Pordenone");
+i18n("italyprovince.kgm", "Pordenone is the capital of...");
+i18n("italyprovince.kgm", "Trieste");
+i18n("italyprovince.kgm", "The capital of Trieste is...");
+i18n("italyprovince.kgm", "Please click on:\nTrieste");
+i18n("italyprovince.kgm", "Trieste");
+i18n("italyprovince.kgm", "Trieste is the capital of...");
+i18n("italyprovince.kgm", "Udine");
+i18n("italyprovince.kgm", "The capital of Udine is...");
+i18n("italyprovince.kgm", "Please click on:\nUdine");
+i18n("italyprovince.kgm", "Udine");
+i18n("italyprovince.kgm", "Udine is the capital of...");
+i18n("italyprovince.kgm", "Genoa");
+i18n("italyprovince.kgm", "The capital of Genoa is...");
+i18n("italyprovince.kgm", "Please click on:\nGenoa");
+i18n("italyprovince.kgm", "Genoa");
+i18n("italyprovince.kgm", "Genoa is the capital of...");
+i18n("italyprovince.kgm", "Imperia");
+i18n("italyprovince.kgm", "The capital of Imperia is...");
+i18n("italyprovince.kgm", "Please click on:\nImperia");
+i18n("italyprovince.kgm", "Imperia");
+i18n("italyprovince.kgm", "Imperia is the capital of...");
+i18n("italyprovince.kgm", "La Spezia");
+i18n("italyprovince.kgm", "The capital of La Spezia is...");
+i18n("italyprovince.kgm", "Please click on:\nLa Spezia");
+i18n("italyprovince.kgm", "La Spezia");
+i18n("italyprovince.kgm", "La Spezia is the capital of...");
+i18n("italyprovince.kgm", "Savona");
+i18n("italyprovince.kgm", "The capital of Savona is...");
+i18n("italyprovince.kgm", "Please click on:\nSavona");
+i18n("italyprovince.kgm", "Savona");
+i18n("italyprovince.kgm", "Savona is the capital of...");
+i18n("italyprovince.kgm", "Bologna");
+i18n("italyprovince.kgm", "The capital of Bologna is...");
+i18n("italyprovince.kgm", "Please click on:\nBologna");
+i18n("italyprovince.kgm", "Bologna");
+i18n("italyprovince.kgm", "Bologna is the capital of...");
+i18n("italyprovince.kgm", "Ferrara");
+i18n("italyprovince.kgm", "The capital of Ferrara is...");
+i18n("italyprovince.kgm", "Please click on:\nFerrara");
+i18n("italyprovince.kgm", "Ferrara");
+i18n("italyprovince.kgm", "Ferrara is the capital of...");
+i18n("italyprovince.kgm", "Forlì-Cesena");
+i18n("italyprovince.kgm", "The capital of Forlì-Cesena is...");
+i18n("italyprovince.kgm", "Please click on:\nForlì-Cesena");
+i18n("italyprovince.kgm", "Forlì");
+i18n("italyprovince.kgm", "Forlì is the capital of...");
+i18n("italyprovince.kgm", "Modena");
+i18n("italyprovince.kgm", "The capital of Modena is...");
+i18n("italyprovince.kgm", "Please click on:\nModena");
+i18n("italyprovince.kgm", "Modena");
+i18n("italyprovince.kgm", "Modena is the capital of...");
+i18n("italyprovince.kgm", "Parma");
+i18n("italyprovince.kgm", "The capital of Parma is...");
+i18n("italyprovince.kgm", "Please click on:\nParma");
+i18n("italyprovince.kgm", "Parma");
+i18n("italyprovince.kgm", "Parma is the capital of...");
+i18n("italyprovince.kgm", "Piacenza");
+i18n("italyprovince.kgm", "The capital of Piacenza is...");
+i18n("italyprovince.kgm", "Please click on:\nPiacenza");
+i18n("italyprovince.kgm", "Piacenza");
+i18n("italyprovince.kgm", "Piacenza is the capital of...");
+i18n("italyprovince.kgm", "Ravenna");
+i18n("italyprovince.kgm", "The capital of Ravenna is...");
+i18n("italyprovince.kgm", "Please click on:\nRavenna");
+i18n("italyprovince.kgm", "Ravenna");
+i18n("italyprovince.kgm", "Ravenna is the capital of...");
+i18n("italyprovince.kgm", "Reggio nell'Emilia");
+i18n("italyprovince.kgm", "The capital of Reggio nell'Emilia is...");
+i18n("italyprovince.kgm", "Please click on:\nReggio nell'Emilia");
+i18n("italyprovince.kgm", "Reggio nell'Emilia");
+i18n("italyprovince.kgm", "Reggio nell'Emilia is the capital of...");
+i18n("italyprovince.kgm", "Rimini");
+i18n("italyprovince.kgm", "The capital of Rimini is...");
+i18n("italyprovince.kgm", "Please click on:\nRimini");
+i18n("italyprovince.kgm", "Rimini");
+i18n("italyprovince.kgm", "Rimini is the capital of...");
+i18n("italyprovince.kgm", "Arezzo");
+i18n("italyprovince.kgm", "The capital of Arezzo is...");
+i18n("italyprovince.kgm", "Please click on:\nArezzo");
+i18n("italyprovince.kgm", "Arezzo");
+i18n("italyprovince.kgm", "Arezzo is the capital of...");
+i18n("italyprovince.kgm", "Florence");
+i18n("italyprovince.kgm", "The capital of Florence is...");
+i18n("italyprovince.kgm", "Please click on:\nFlorence");
+i18n("italyprovince.kgm", "Florence");
+i18n("italyprovince.kgm", "Florence is the capital of...");
+i18n("italyprovince.kgm", "Grosseto");
+i18n("italyprovince.kgm", "The capital of Grosseto is...");
+i18n("italyprovince.kgm", "Please click on:\nGrosseto");
+i18n("italyprovince.kgm", "Grosseto");
+i18n("italyprovince.kgm", "Grosseto is the capital of...");
+i18n("italyprovince.kgm", "Livorno");
+i18n("italyprovince.kgm", "The capital of Livorno is...");
+i18n("italyprovince.kgm", "Please click on:\nLivorno");
+i18n("italyprovince.kgm", "Livorno");
+i18n("italyprovince.kgm", "Livorno is the capital of...");
+i18n("italyprovince.kgm", "Lucca");
+i18n("italyprovince.kgm", "The capital of Lucca is...");
+i18n("italyprovince.kgm", "Please click on:\nLucca");
+i18n("italyprovince.kgm", "Lucca");
+i18n("italyprovince.kgm", "Lucca is the capital of...");
+i18n("italyprovince.kgm", "Massa-Carrara");
+i18n("italyprovince.kgm", "The capital of Massa-Carrara is...");
+i18n("italyprovince.kgm", "Please click on:\nMassa-Carrara");
+i18n("italyprovince.kgm", "Massa");
+i18n("italyprovince.kgm", "Massa is the capital of...");
+i18n("italyprovince.kgm", "Pisa");
+i18n("italyprovince.kgm", "The capital of Pisa is...");
+i18n("italyprovince.kgm", "Please click on:\nPisa");
+i18n("italyprovince.kgm", "Pisa");
+i18n("italyprovince.kgm", "Pisa is the capital of...");
+i18n("italyprovince.kgm", "Pistoia");
+i18n("italyprovince.kgm", "The capital of Pistoia is...");
+i18n("italyprovince.kgm", "Please click on:\nPistoia");
+i18n("italyprovince.kgm", "Pistoia");
+i18n("italyprovince.kgm", "Pistoia is the capital of...");
+i18n("italyprovince.kgm", "Prato");
+i18n("italyprovince.kgm", "The capital of Prato is...");
+i18n("italyprovince.kgm", "Please click on:\nPrato");
+i18n("italyprovince.kgm", "Prato");
+i18n("italyprovince.kgm", "Prato is the capital of...");
+i18n("italyprovince.kgm", "Siena");
+i18n("italyprovince.kgm", "The capital of Siena is...");
+i18n("italyprovince.kgm", "Please click on:\nSiena");
+i18n("italyprovince.kgm", "Siena");
+i18n("italyprovince.kgm", "Siena is the capital of...");
+i18n("italyprovince.kgm", "Perugia");
+i18n("italyprovince.kgm", "The capital of Perugia is...");
+i18n("italyprovince.kgm", "Please click on:\nPerugia");
+i18n("italyprovince.kgm", "Perugia");
+i18n("italyprovince.kgm", "Perugia is the capital of...");
+i18n("italyprovince.kgm", "Terni");
+i18n("italyprovince.kgm", "The capital of Terni is...");
+i18n("italyprovince.kgm", "Please click on:\nTerni");
+i18n("italyprovince.kgm", "Terni");
+i18n("italyprovince.kgm", "Terni is the capital of...");
+i18n("italyprovince.kgm", "Ancona");
+i18n("italyprovince.kgm", "The capital of Ancona is...");
+i18n("italyprovince.kgm", "Please click on:\nAncona");
+i18n("italyprovince.kgm", "Ancona");
+i18n("italyprovince.kgm", "Ancona is the capital of...");
+i18n("italyprovince.kgm", "Ascoli Piceno");
+i18n("italyprovince.kgm", "The capital of Ascoli Piceno is...");
+i18n("italyprovince.kgm", "Please click on:\nAscoli Piceno");
+i18n("italyprovince.kgm", "Ascoli Piceno");
+i18n("italyprovince.kgm", "Ascoli Piceno is the capital of...");
+i18n("italyprovince.kgm", "Macerata");
+i18n("italyprovince.kgm", "The capital of Macerata is...");
+i18n("italyprovince.kgm", "Please click on:\nMacerata");
+i18n("italyprovince.kgm", "Macerata");
+i18n("italyprovince.kgm", "Macerata is the capital of...");
+i18n("italyprovince.kgm", "Pesaro and Urbino");
+i18n("italyprovince.kgm", "The capital of Pesaro and Urbino is...");
+i18n("italyprovince.kgm", "Please click on:\nPesaro and Urbino");
+i18n("italyprovince.kgm", "Pesaro");
+i18n("italyprovince.kgm", "Pesaro is the capital of...");
+i18n("italyprovince.kgm", "Frosinone");
+i18n("italyprovince.kgm", "The capital of Frosinone is...");
+i18n("italyprovince.kgm", "Please click on:\nFrosinone");
+i18n("italyprovince.kgm", "Frosinone");
+i18n("italyprovince.kgm", "Frosinone is the capital of...");
+i18n("italyprovince.kgm", "Latina");
+i18n("italyprovince.kgm", "The capital of Latina is...");
+i18n("italyprovince.kgm", "Please click on:\nLatina");
+i18n("italyprovince.kgm", "Latina");
+i18n("italyprovince.kgm", "Latina is the capital of...");
+i18n("italyprovince.kgm", "Rieti");
+i18n("italyprovince.kgm", "The capital of Rieti is...");
+i18n("italyprovince.kgm", "Please click on:\nRieti");
+i18n("italyprovince.kgm", "Rieti");
+i18n("italyprovince.kgm", "Rieti is the capital of...");
+i18n("italyprovince.kgm", "Rome");
+i18n("italyprovince.kgm", "The capital of Rome is...");
+i18n("italyprovince.kgm", "Please click on:\nRome");
+i18n("italyprovince.kgm", "Rome");
+i18n("italyprovince.kgm", "Rome is the capital of...");
+i18n("italyprovince.kgm", "Viterbo");
+i18n("italyprovince.kgm", "The capital of Viterbo is...");
+i18n("italyprovince.kgm", "Please click on:\nViterbo");
+i18n("italyprovince.kgm", "Viterbo");
+i18n("italyprovince.kgm", "Viterbo is the capital of...");
+i18n("italyprovince.kgm", "Chieti");
+i18n("italyprovince.kgm", "The capital of Chieti is...");
+i18n("italyprovince.kgm", "Please click on:\nChieti");
+i18n("italyprovince.kgm", "Chieti");
+i18n("italyprovince.kgm", "Chieti is the capital of...");
+i18n("italyprovince.kgm", "L'Aquila");
+i18n("italyprovince.kgm", "The capital of L'Aquila is...");
+i18n("italyprovince.kgm", "Please click on:\nL'Aquila");
+i18n("italyprovince.kgm", "L'Aquila");
+i18n("italyprovince.kgm", "L'Aquila is the capital of...");
+i18n("italyprovince.kgm", "Pescara");
+i18n("italyprovince.kgm", "The capital of Pescara is...");
+i18n("italyprovince.kgm", "Please click on:\nPescara");
+i18n("italyprovince.kgm", "Pescara");
+i18n("italyprovince.kgm", "Pescara is the capital of...");
+i18n("italyprovince.kgm", "Teramo");
+i18n("italyprovince.kgm", "The capital of Teramo is...");
+i18n("italyprovince.kgm", "Please click on:\nTeramo");
+i18n("italyprovince.kgm", "Teramo");
+i18n("italyprovince.kgm", "Teramo is the capital of...");
+i18n("italyprovince.kgm", "Campobasso");
+i18n("italyprovince.kgm", "The capital of Campobasso is...");
+i18n("italyprovince.kgm", "Please click on:\nCampobasso");
+i18n("italyprovince.kgm", "Campobasso");
+i18n("italyprovince.kgm", "Campobasso is the capital of...");
+i18n("italyprovince.kgm", "Isernia");
+i18n("italyprovince.kgm", "The capital of Isernia is...");
+i18n("italyprovince.kgm", "Please click on:\nIsernia");
+i18n("italyprovince.kgm", "Isernia");
+i18n("italyprovince.kgm", "Isernia is the capital of...");
+i18n("italyprovince.kgm", "Avellino");
+i18n("italyprovince.kgm", "The capital of Avellino is...");
+i18n("italyprovince.kgm", "Please click on:\nAvellino");
+i18n("italyprovince.kgm", "Avellino");
+i18n("italyprovince.kgm", "Avellino is the capital of...");
+i18n("italyprovince.kgm", "Benevento");
+i18n("italyprovince.kgm", "The capital of Benevento is...");
+i18n("italyprovince.kgm", "Please click on:\nBenevento");
+i18n("italyprovince.kgm", "Benevento");
+i18n("italyprovince.kgm", "Benevento is the capital of...");
+i18n("italyprovince.kgm", "Caserta");
+i18n("italyprovince.kgm", "The capital of Caserta is...");
+i18n("italyprovince.kgm", "Please click on:\nCaserta");
+i18n("italyprovince.kgm", "Caserta");
+i18n("italyprovince.kgm", "Caserta is the capital of...");
+i18n("italyprovince.kgm", "Naples");
+i18n("italyprovince.kgm", "The capital of Naples is...");
+i18n("italyprovince.kgm", "Please click on:\nNaples");
+i18n("italyprovince.kgm", "Naples");
+i18n("italyprovince.kgm", "Naples is the capital of...");
+i18n("italyprovince.kgm", "Salerno");
+i18n("italyprovince.kgm", "The capital of Salerno is...");
+i18n("italyprovince.kgm", "Please click on:\nSalerno");
+i18n("italyprovince.kgm", "Salerno");
+i18n("italyprovince.kgm", "Salerno is the capital of...");
+i18n("italyprovince.kgm", "Bari");
+i18n("italyprovince.kgm", "The capital of Bari is...");
+i18n("italyprovince.kgm", "Please click on:\nBari");
+i18n("italyprovince.kgm", "Bari");
+i18n("italyprovince.kgm", "Bari is the capital of...");
+i18n("italyprovince.kgm", "Brindisi");
+i18n("italyprovince.kgm", "The capital of Brindisi is...");
+i18n("italyprovince.kgm", "Please click on:\nBrindisi");
+i18n("italyprovince.kgm", "Brindisi");
+i18n("italyprovince.kgm", "Brindisi is the capital of...");
+i18n("italyprovince.kgm", "Foggia");
+i18n("italyprovince.kgm", "The capital of Foggia is...");
+i18n("italyprovince.kgm", "Please click on:\nFoggia");
+i18n("italyprovince.kgm", "Foggia");
+i18n("italyprovince.kgm", "Foggia is the capital of...");
+i18n("italyprovince.kgm", "Lecce");
+i18n("italyprovince.kgm", "The capital of Lecce is...");
+i18n("italyprovince.kgm", "Please click on:\nLecce");
+i18n("italyprovince.kgm", "Lecce");
+i18n("italyprovince.kgm", "Lecce is the capital of...");
+i18n("italyprovince.kgm", "Taranto");
+i18n("italyprovince.kgm", "The capital of Taranto is...");
+i18n("italyprovince.kgm", "Please click on:\nTaranto");
+i18n("italyprovince.kgm", "Taranto");
+i18n("italyprovince.kgm", "Taranto is the capital of...");
+i18n("italyprovince.kgm", "Matera");
+i18n("italyprovince.kgm", "The capital of Matera is...");
+i18n("italyprovince.kgm", "Please click on:\nMatera");
+i18n("italyprovince.kgm", "Matera");
+i18n("italyprovince.kgm", "Matera is the capital of...");
+i18n("italyprovince.kgm", "Potenza");
+i18n("italyprovince.kgm", "The capital of Potenza is...");
+i18n("italyprovince.kgm", "Please click on:\nPotenza");
+i18n("italyprovince.kgm", "Potenza");
+i18n("italyprovince.kgm", "Potenza is the capital of...");
+i18n("italyprovince.kgm", "Catanzaro");
+i18n("italyprovince.kgm", "The capital of Catanzaro is...");
+i18n("italyprovince.kgm", "Please click on:\nCatanzaro");
+i18n("italyprovince.kgm", "Catanzaro");
+i18n("italyprovince.kgm", "Catanzaro is the capital of...");
+i18n("italyprovince.kgm", "Cosenza");
+i18n("italyprovince.kgm", "The capital of Cosenza is...");
+i18n("italyprovince.kgm", "Please click on:\nCosenza");
+i18n("italyprovince.kgm", "Cosenza");
+i18n("italyprovince.kgm", "Cosenza is the capital of...");
+i18n("italyprovince.kgm", "Crotone");
+i18n("italyprovince.kgm", "The capital of Crotone is...");
+i18n("italyprovince.kgm", "Please click on:\nCrotone");
+i18n("italyprovince.kgm", "Crotone");
+i18n("italyprovince.kgm", "Crotone is the capital of...");
+i18n("italyprovince.kgm", "Reggio di Calabria");
+i18n("italyprovince.kgm", "The capital of Reggio di Calabria is...");
+i18n("italyprovince.kgm", "Please click on:\nReggio di Calabria");
+i18n("italyprovince.kgm", "Reggio di Calabria");
+i18n("italyprovince.kgm", "Reggio di Calabria is the capital of...");
+i18n("italyprovince.kgm", "Vibo Valentia");
+i18n("italyprovince.kgm", "The capital of Vibo Valentia is...");
+i18n("italyprovince.kgm", "Please click on:\nVibo Valentia");
+i18n("italyprovince.kgm", "Vibo Valentia");
+i18n("italyprovince.kgm", "Vibo Valentia is the capital of...");
+i18n("italyprovince.kgm", "Agrigento");
+i18n("italyprovince.kgm", "The capital of Agrigento is...");
+i18n("italyprovince.kgm", "Please click on:\nAgrigento");
+i18n("italyprovince.kgm", "Agrigento");
+i18n("italyprovince.kgm", "Agrigento is the capital of...");
+i18n("italyprovince.kgm", "Caltanissetta");
+i18n("italyprovince.kgm", "The capital of Caltanissetta is...");
+i18n("italyprovince.kgm", "Please click on:\nCaltanissetta");
+i18n("italyprovince.kgm", "Caltanissetta");
+i18n("italyprovince.kgm", "Caltanissetta is the capital of...");
+i18n("italyprovince.kgm", "Catania");
+i18n("italyprovince.kgm", "The capital of Catania is...");
+i18n("italyprovince.kgm", "Please click on:\nCatania");
+i18n("italyprovince.kgm", "Catania");
+i18n("italyprovince.kgm", "Catania is the capital of...");
+i18n("italyprovince.kgm", "Enna");
+i18n("italyprovince.kgm", "The capital of Enna is...");
+i18n("italyprovince.kgm", "Please click on:\nEnna");
+i18n("italyprovince.kgm", "Enna");
+i18n("italyprovince.kgm", "Enna is the capital of...");
+i18n("italyprovince.kgm", "Messina");
+i18n("italyprovince.kgm", "The capital of Messina is...");
+i18n("italyprovince.kgm", "Please click on:\nMessina");
+i18n("italyprovince.kgm", "Messina");
+i18n("italyprovince.kgm", "Messina is the capital of...");
+i18n("italyprovince.kgm", "Palermo");
+i18n("italyprovince.kgm", "The capital of Palermo is...");
+i18n("italyprovince.kgm", "Please click on:\nPalermo");
+i18n("italyprovince.kgm", "Palermo");
+i18n("italyprovince.kgm", "Palermo is the capital of...");
+i18n("italyprovince.kgm", "Ragusa");
+i18n("italyprovince.kgm", "The capital of Ragusa is...");
+i18n("italyprovince.kgm", "Please click on:\nRagusa");
+i18n("italyprovince.kgm", "Ragusa");
+i18n("italyprovince.kgm", "Ragusa is the capital of...");
+i18n("italyprovince.kgm", "Syracuse");
+i18n("italyprovince.kgm", "The capital of Syracuse is...");
+i18n("italyprovince.kgm", "Please click on:\nSyracuse");
+i18n("italyprovince.kgm", "Syracuse");
+i18n("italyprovince.kgm", "Syracuse is the capital of...");
+i18n("italyprovince.kgm", "Trapani");
+i18n("italyprovince.kgm", "The capital of Trapani is...");
+i18n("italyprovince.kgm", "Please click on:\nTrapani");
+i18n("italyprovince.kgm", "Trapani");
+i18n("italyprovince.kgm", "Trapani is the capital of...");
+i18n("italyprovince.kgm", "Cagliari");
+i18n("italyprovince.kgm", "The capital of Cagliari is...");
+i18n("italyprovince.kgm", "Please click on:\nCagliari");
+i18n("italyprovince.kgm", "Cagliari");
+i18n("italyprovince.kgm", "Cagliari is the capital of...");
+i18n("italyprovince.kgm", "Nuoro");
+i18n("italyprovince.kgm", "The capital of Nuoro is...");
+i18n("italyprovince.kgm", "Please click on:\nNuoro");
+i18n("italyprovince.kgm", "Nuoro");
+i18n("italyprovince.kgm", "Nuoro is the capital of...");
+i18n("italyprovince.kgm", "Oristano");
+i18n("italyprovince.kgm", "The capital of Oristano is...");
+i18n("italyprovince.kgm", "Please click on:\nOristano");
+i18n("italyprovince.kgm", "Oristano");
+i18n("italyprovince.kgm", "Oristano is the capital of...");
+i18n("italyprovince.kgm", "Sassari");
+i18n("italyprovince.kgm", "The capital of Sassari is...");
+i18n("italyprovince.kgm", "Please click on:\nSassari");
+i18n("italyprovince.kgm", "Sassari");
+i18n("italyprovince.kgm", "Sassari is the capital of...");
+i18n("ncamerica.kgm", "North and Central America");
+i18n("ncamerica.kgm", "<qt>Current map:<br><b>North and Central America</b></qt>");
+i18n("ncamerica.kgm", "Water");
+i18n("ncamerica.kgm", "Not North and Central America");
+i18n("ncamerica.kgm", "Frontier");
+i18n("ncamerica.kgm", "Canada");
+i18n("ncamerica.kgm", "The capital of Canada is...");
+i18n("ncamerica.kgm", "Please click on:\nCanada");
+i18n("ncamerica.kgm", "The flag of Canada is...");
+i18n("ncamerica.kgm", "Ottawa");
+i18n("ncamerica.kgm", "Ottawa is the capital of...");
+i18n("ncamerica.kgm", "El Salvador");
+i18n("ncamerica.kgm", "The capital of El Salvador is...");
+i18n("ncamerica.kgm", "Please click on:\nEl Salvador");
+i18n("ncamerica.kgm", "The flag of El Salvador is...");
+i18n("ncamerica.kgm", "San Salvador");
+i18n("ncamerica.kgm", "San Salvador is the capital of...");
+i18n("ncamerica.kgm", "The United States of America");
+i18n("ncamerica.kgm", "The capital of The United States of America is...");
+i18n("ncamerica.kgm", "Please click on:\nThe United States of America");
+i18n("ncamerica.kgm", "The flag of The United States of America is...");
+i18n("ncamerica.kgm", "Washington D.C.");
+i18n("ncamerica.kgm", "Washington D.C. is the capital of...");
+i18n("ncamerica.kgm", "The Bahamas");
+i18n("ncamerica.kgm", "The capital of The Bahamas is...");
+i18n("ncamerica.kgm", "Please click on:\nThe Bahamas");
+i18n("ncamerica.kgm", "The flag of The Bahamas is...");
+i18n("ncamerica.kgm", "Nassau");
+i18n("ncamerica.kgm", "Nassau is the capital of...");
+i18n("ncamerica.kgm", "The Dominican Republic");
+i18n("ncamerica.kgm", "The capital of The Dominican Republic is...");
+i18n("ncamerica.kgm", "Please click on:\nThe Dominican Republic");
+i18n("ncamerica.kgm", "The flag of The Dominican Republic is...");
+i18n("ncamerica.kgm", "Santo Domingo");
+i18n("ncamerica.kgm", "Santo Domingo is the capital of...");
+i18n("ncamerica.kgm", "Haiti");
+i18n("ncamerica.kgm", "The capital of Haiti is...");
+i18n("ncamerica.kgm", "Please click on:\nHaiti");
+i18n("ncamerica.kgm", "The flag of Haiti is...");
+i18n("ncamerica.kgm", "Port-au-Prince");
+i18n("ncamerica.kgm", "Port-au-Prince is the capital of...");
+i18n("ncamerica.kgm", "Cuba");
+i18n("ncamerica.kgm", "The capital of Cuba is...");
+i18n("ncamerica.kgm", "Please click on:\nCuba");
+i18n("ncamerica.kgm", "The flag of Cuba is...");
+i18n("ncamerica.kgm", "Havana");
+i18n("ncamerica.kgm", "Havana is the capital of...");
+i18n("ncamerica.kgm", "Jamaica");
+i18n("ncamerica.kgm", "The capital of Jamaica is...");
+i18n("ncamerica.kgm", "Please click on:\nJamaica");
+i18n("ncamerica.kgm", "The flag of Jamaica is...");
+i18n("ncamerica.kgm", "Kingston");
+i18n("ncamerica.kgm", "Kingston is the capital of...");
+i18n("ncamerica.kgm", "Dominica");
+i18n("ncamerica.kgm", "The capital of Dominica is...");
+i18n("ncamerica.kgm", "Please click on:\nDominica");
+i18n("ncamerica.kgm", "The flag of Dominica is...");
+i18n("ncamerica.kgm", "Roseau");
+i18n("ncamerica.kgm", "Roseau is the capital of...");
+i18n("ncamerica.kgm", "Antigua and Barbuda");
+i18n("ncamerica.kgm", "The capital of Antigua and Barbuda is...");
+i18n("ncamerica.kgm", "Please click on:\nAntigua and Barbuda");
+i18n("ncamerica.kgm", "The flag of Antigua and Barbuda is...");
+i18n("ncamerica.kgm", "St. John's");
+i18n("ncamerica.kgm", "St. John's is the capital of...");
+i18n("ncamerica.kgm", "Barbados");
+i18n("ncamerica.kgm", "The capital of Barbados is...");
+i18n("ncamerica.kgm", "Please click on:\nBarbados");
+i18n("ncamerica.kgm", "The flag of Barbados is...");
+i18n("ncamerica.kgm", "Bridgetown");
+i18n("ncamerica.kgm", "Bridgetown is the capital of...");
+i18n("ncamerica.kgm", "Trinidad and Tobago");
+i18n("ncamerica.kgm", "The capital of Trinidad and Tobago is...");
+i18n("ncamerica.kgm", "Please click on:\nTrinidad and Tobago");
+i18n("ncamerica.kgm", "The flag of Trinidad and Tobago is...");
+i18n("ncamerica.kgm", "Port of Spain");
+i18n("ncamerica.kgm", "Port of Spain is the capital of...");
+i18n("ncamerica.kgm", "Mexico");
+i18n("ncamerica.kgm", "The capital of Mexico is...");
+i18n("ncamerica.kgm", "Please click on:\nMexico");
+i18n("ncamerica.kgm", "The flag of Mexico is...");
+i18n("ncamerica.kgm", "Mexico City");
+i18n("ncamerica.kgm", "Mexico City is the capital of...");
+i18n("ncamerica.kgm", "Guatemala");
+i18n("ncamerica.kgm", "The capital of Guatemala is...");
+i18n("ncamerica.kgm", "Please click on:\nGuatemala");
+i18n("ncamerica.kgm", "The flag of Guatemala is...");
+i18n("ncamerica.kgm", "Guatemala City");
+i18n("ncamerica.kgm", "Guatemala City is the capital of...");
+i18n("ncamerica.kgm", "Belize");
+i18n("ncamerica.kgm", "The capital of Belize is...");
+i18n("ncamerica.kgm", "Please click on:\nBelize");
+i18n("ncamerica.kgm", "The flag of Belize is...");
+i18n("ncamerica.kgm", "Belmopan");
+i18n("ncamerica.kgm", "Belmopan is the capital of...");
+i18n("ncamerica.kgm", "Honduras");
+i18n("ncamerica.kgm", "The capital of Honduras is...");
+i18n("ncamerica.kgm", "Please click on:\nHonduras");
+i18n("ncamerica.kgm", "The flag of Honduras is...");
+i18n("ncamerica.kgm", "Tegucigalpa");
+i18n("ncamerica.kgm", "Tegucigalpa is the capital of...");
+i18n("ncamerica.kgm", "Nicaragua");
+i18n("ncamerica.kgm", "The capital of Nicaragua is...");
+i18n("ncamerica.kgm", "Please click on:\nNicaragua");
+i18n("ncamerica.kgm", "The flag of Nicaragua is...");
+i18n("ncamerica.kgm", "Managua");
+i18n("ncamerica.kgm", "Managua is the capital of...");
+i18n("ncamerica.kgm", "Costa Rica");
+i18n("ncamerica.kgm", "The capital of Costa Rica is...");
+i18n("ncamerica.kgm", "Please click on:\nCosta Rica");
+i18n("ncamerica.kgm", "The flag of Costa Rica is...");
+i18n("ncamerica.kgm", "San José");
+i18n("ncamerica.kgm", "San José is the capital of...");
+i18n("ncamerica.kgm", "Panama");
+i18n("ncamerica.kgm", "The capital of Panama is...");
+i18n("ncamerica.kgm", "Please click on:\nPanama");
+i18n("ncamerica.kgm", "The flag of Panama is...");
+i18n("ncamerica.kgm", "Panama City");
+i18n("ncamerica.kgm", "Panama City is the capital of...");
+i18n("ncamerica.kgm", "Greenland [Denmark]");
+i18n("ncamerica.kgm", "Guyana");
+i18n("ncamerica.kgm", "Venezuela");
+i18n("ncamerica.kgm", "Colombia");
+i18n("netherlands.kgm", "The Netherlands");
+i18n("netherlands.kgm", "<qt>Current map:<br><b>The Netherlands</b></qt>");
+i18n("netherlands.kgm", "Frontier");
+i18n("netherlands.kgm", "Not The Netherlands");
+i18n("netherlands.kgm", "Water");
+i18n("netherlands.kgm", "Friesland");
+i18n("netherlands.kgm", "The capital of Friesland is...");
+i18n("netherlands.kgm", "Please click on:\nFriesland");
+i18n("netherlands.kgm", "Leeuwarden");
+i18n("netherlands.kgm", "Leeuwarden is the capital of...");
+i18n("netherlands.kgm", "Groningen");
+i18n("netherlands.kgm", "The capital of Groningen is...");
+i18n("netherlands.kgm", "Please click on:\nGroningen");
+i18n("netherlands.kgm", "Groningen");
+i18n("netherlands.kgm", "Groningen is the capital of...");
+i18n("netherlands.kgm", "Drenthe");
+i18n("netherlands.kgm", "The capital of Drenthe is...");
+i18n("netherlands.kgm", "Please click on:\nDrenthe");
+i18n("netherlands.kgm", "Assen");
+i18n("netherlands.kgm", "Assen is the capital of...");
+i18n("netherlands.kgm", "Overijssel");
+i18n("netherlands.kgm", "The capital of Overijssel is...");
+i18n("netherlands.kgm", "Please click on:\nOverijssel");
+i18n("netherlands.kgm", "Zwolle");
+i18n("netherlands.kgm", "Zwolle is the capital of...");
+i18n("netherlands.kgm", "Gelderland");
+i18n("netherlands.kgm", "The capital of Gelderland is...");
+i18n("netherlands.kgm", "Please click on:\nGelderland");
+i18n("netherlands.kgm", "Arnhem");
+i18n("netherlands.kgm", "Arnhem is the capital of...");
+i18n("netherlands.kgm", "North Brabant");
+i18n("netherlands.kgm", "The capital of North Brabant is...");
+i18n("netherlands.kgm", "Please click on:\nNorth Brabant");
+i18n("netherlands.kgm", "'s Hertogenbosch");
+i18n("netherlands.kgm", "'s Hertogenbosch is the capital of...");
+i18n("netherlands.kgm", "Limburg");
+i18n("netherlands.kgm", "The capital of Limburg is...");
+i18n("netherlands.kgm", "Please click on:\nLimburg");
+i18n("netherlands.kgm", "Maastricht");
+i18n("netherlands.kgm", "Maastricht is the capital of...");
+i18n("netherlands.kgm", "Flevoland");
+i18n("netherlands.kgm", "The capital of Flevoland is...");
+i18n("netherlands.kgm", "Please click on:\nFlevoland");
+i18n("netherlands.kgm", "Lelystad");
+i18n("netherlands.kgm", "Lelystad is the capital of...");
+i18n("netherlands.kgm", "Utrecht");
+i18n("netherlands.kgm", "The capital of Utrecht is...");
+i18n("netherlands.kgm", "Please click on:\nUtrecht");
+i18n("netherlands.kgm", "Utrecht");
+i18n("netherlands.kgm", "Utrecht is the capital of...");
+i18n("netherlands.kgm", "Zeeland");
+i18n("netherlands.kgm", "The capital of Zeeland is...");
+i18n("netherlands.kgm", "Please click on:\nZeeland");
+i18n("netherlands.kgm", "Middelburg");
+i18n("netherlands.kgm", "Middelburg is the capital of...");
+i18n("netherlands.kgm", "North Holland");
+i18n("netherlands.kgm", "The capital of North Holland is...");
+i18n("netherlands.kgm", "Please click on:\nNorth Holland");
+i18n("netherlands.kgm", "Haarlem");
+i18n("netherlands.kgm", "Haarlem is the capital of...");
+i18n("netherlands.kgm", "South Holland");
+i18n("netherlands.kgm", "The capital of South Holland is...");
+i18n("netherlands.kgm", "Please click on:\nSouth Holland");
+i18n("netherlands.kgm", "The Hague");
+i18n("netherlands.kgm", "The Hague is the capital of...");
+i18n("norway.kgm", "Norway");
+i18n("norway.kgm", "<qt>Current map:<br><b>Norway</b></qt>");
+i18n("norway.kgm", "Frontier");
+i18n("norway.kgm", "Not Norway");
+i18n("norway.kgm", "Finnmark");
+i18n("norway.kgm", "The capital of Finnmark is...");
+i18n("norway.kgm", "Please click on:\nFinnmark");
+i18n("norway.kgm", "Vadsø");
+i18n("norway.kgm", "Vadsø is the capital of...");
+i18n("norway.kgm", "Troms");
+i18n("norway.kgm", "The capital of Troms is...");
+i18n("norway.kgm", "Please click on:\nTroms");
+i18n("norway.kgm", "Tromsø");
+i18n("norway.kgm", "Tromsø is the capital of...");
+i18n("norway.kgm", "Nordland");
+i18n("norway.kgm", "The capital of Nordland is...");
+i18n("norway.kgm", "Please click on:\nNordland");
+i18n("norway.kgm", "Bodø");
+i18n("norway.kgm", "Bodø is the capital of...");
+i18n("norway.kgm", "Nord-Trøndelag");
+i18n("norway.kgm", "The capital of Nord-Trøndelag is...");
+i18n("norway.kgm", "Please click on:\nNord-Trøndelag");
+i18n("norway.kgm", "Steinkjer");
+i18n("norway.kgm", "Steinkjer is the capital of...");
+i18n("norway.kgm", "Sør-Trøndelag");
+i18n("norway.kgm", "The capital of Sør-Trøndelag is...");
+i18n("norway.kgm", "Please click on:\nSør-Trøndelag");
+i18n("norway.kgm", "Trondheim");
+i18n("norway.kgm", "Trondheim is the capital of...");
+i18n("norway.kgm", "Møre Og Romsdal");
+i18n("norway.kgm", "The capital of Møre Og Romsdal is...");
+i18n("norway.kgm", "Please click on:\nMøre Og Romsdal");
+i18n("norway.kgm", "Molde");
+i18n("norway.kgm", "Molde is the capital of...");
+i18n("norway.kgm", "Oppland");
+i18n("norway.kgm", "The capital of Oppland is...");
+i18n("norway.kgm", "Please click on:\nOppland");
+i18n("norway.kgm", "Lillehammer");
+i18n("norway.kgm", "Lillehammer is the capital of...");
+i18n("norway.kgm", "Hedmark");
+i18n("norway.kgm", "The capital of Hedmark is...");
+i18n("norway.kgm", "Please click on:\nHedmark");
+i18n("norway.kgm", "Hamar");
+i18n("norway.kgm", "Hamar is the capital of...");
+i18n("norway.kgm", "Sogn Og Fjordane");
+i18n("norway.kgm", "The capital of Sogn Og Fjordane is...");
+i18n("norway.kgm", "Please click on:\nSogn Og Fjordane");
+i18n("norway.kgm", "Hermansverk");
+i18n("norway.kgm", "Hermansverk is the capital of...");
+i18n("norway.kgm", "Hordaland");
+i18n("norway.kgm", "The capital of Hordaland is...");
+i18n("norway.kgm", "Please click on:\nHordaland");
+i18n("norway.kgm", "Bergen");
+i18n("norway.kgm", "Bergen is the capital of...");
+i18n("norway.kgm", "Rogaland");
+i18n("norway.kgm", "The capital of Rogaland is...");
+i18n("norway.kgm", "Please click on:\nRogaland");
+i18n("norway.kgm", "Stavanger");
+i18n("norway.kgm", "Stavanger is the capital of...");
+i18n("norway.kgm", "Vest-Agder");
+i18n("norway.kgm", "The capital of Vest-Agder is...");
+i18n("norway.kgm", "Please click on:\nVest-Agder");
+i18n("norway.kgm", "Kristiansand");
+i18n("norway.kgm", "Kristiansand is the capital of...");
+i18n("norway.kgm", "Aust-Agder");
+i18n("norway.kgm", "The capital of Aust-Agder is...");
+i18n("norway.kgm", "Please click on:\nAust-Agder");
+i18n("norway.kgm", "Arendal");
+i18n("norway.kgm", "Arendal is the capital of...");
+i18n("norway.kgm", "Telemark");
+i18n("norway.kgm", "The capital of Telemark is...");
+i18n("norway.kgm", "Please click on:\nTelemark");
+i18n("norway.kgm", "Skien");
+i18n("norway.kgm", "Skien is the capital of...");
+i18n("norway.kgm", "Buskerud");
+i18n("norway.kgm", "The capital of Buskerud is...");
+i18n("norway.kgm", "Please click on:\nBuskerud");
+i18n("norway.kgm", "Drammen");
+i18n("norway.kgm", "Drammen is the capital of...");
+i18n("norway.kgm", "Vestfold");
+i18n("norway.kgm", "The capital of Vestfold is...");
+i18n("norway.kgm", "Please click on:\nVestfold");
+i18n("norway.kgm", "Tønsberg");
+i18n("norway.kgm", "Tønsberg is the capital of...");
+i18n("norway.kgm", "Oslo");
+i18n("norway.kgm", "The capital of Oslo is...");
+i18n("norway.kgm", "Please click on:\nOslo");
+i18n("norway.kgm", "Oslo");
+i18n("norway.kgm", "Oslo is the capital of...");
+i18n("norway.kgm", "Akershus");
+i18n("norway.kgm", "The capital of Akershus is...");
+i18n("norway.kgm", "Please click on:\nAkershus");
+i18n("norway.kgm", "Oslo");
+i18n("norway.kgm", "Oslo is the capital of...");
+i18n("norway.kgm", "Østfold");
+i18n("norway.kgm", "The capital of Østfold is...");
+i18n("norway.kgm", "Please click on:\nØstfold");
+i18n("norway.kgm", "Sarpsborg");
+i18n("norway.kgm", "Sarpsborg is the capital of...");
+i18n("poland.kgm", "Poland");
+i18n("poland.kgm", "<qt>Current map:<br><b>Poland</b></qt>");
+i18n("poland.kgm", "Frontier");
+i18n("poland.kgm", "Not Poland");
+i18n("poland.kgm", "Masovia");
+i18n("poland.kgm", "The capital of Masovia is...");
+i18n("poland.kgm", "Please click on:\nMasovia");
+i18n("poland.kgm", "Warsaw");
+i18n("poland.kgm", "Warsaw is the capital of...");
+i18n("poland.kgm", "Warmia and Masuria");
+i18n("poland.kgm", "The capital of Warmia and Masuria is...");
+i18n("poland.kgm", "Please click on:\nWarmia and Masuria");
+i18n("poland.kgm", "Olsztyn");
+i18n("poland.kgm", "Olsztyn is the capital of...");
+i18n("poland.kgm", "Podlachia");
+i18n("poland.kgm", "The capital of Podlachia is...");
+i18n("poland.kgm", "Please click on:\nPodlachia");
+i18n("poland.kgm", "Białystok");
+i18n("poland.kgm", "Białystok is the capital of...");
+i18n("poland.kgm", "Lublin");
+i18n("poland.kgm", "The capital of Lublin is...");
+i18n("poland.kgm", "Please click on:\nLublin");
+i18n("poland.kgm", "Lublin");
+i18n("poland.kgm", "Lublin is the capital of...");
+i18n("poland.kgm", "Subcarpathia");
+i18n("poland.kgm", "The capital of Subcarpathia is...");
+i18n("poland.kgm", "Please click on:\nSubcarpathia");
+i18n("poland.kgm", "Rzeszów");
+i18n("poland.kgm", "Rzeszów is the capital of...");
+i18n("poland.kgm", "Świętokrzyskie");
+i18n("poland.kgm", "The capital of Świętokrzyskie is...");
+i18n("poland.kgm", "Please click on:\nŚwiętokrzyskie");
+i18n("poland.kgm", "Kielce");
+i18n("poland.kgm", "Kielce is the capital of...");
+i18n("poland.kgm", "Lesser Poland");
+i18n("poland.kgm", "The capital of Lesser Poland is...");
+i18n("poland.kgm", "Please click on:\nLesser Poland");
+i18n("poland.kgm", "Kraków");
+i18n("poland.kgm", "Kraków is the capital of...");
+i18n("poland.kgm", "Łódź");
+i18n("poland.kgm", "The capital of Łódź is...");
+i18n("poland.kgm", "Please click on:\nŁódź");
+i18n("poland.kgm", "Łódź");
+i18n("poland.kgm", "Łódź is the capital of...");
+i18n("poland.kgm", "Silesia");
+i18n("poland.kgm", "The capital of Silesia is...");
+i18n("poland.kgm", "Please click on:\nSilesia");
+i18n("poland.kgm", "Katowice");
+i18n("poland.kgm", "Katowice is the capital of...");
+i18n("poland.kgm", "Opole");
+i18n("poland.kgm", "The capital of Opole is...");
+i18n("poland.kgm", "Please click on:\nOpole");
+i18n("poland.kgm", "Opole");
+i18n("poland.kgm", "Opole is the capital of...");
+i18n("poland.kgm", "Pomerania");
+i18n("poland.kgm", "The capital of Pomerania is...");
+i18n("poland.kgm", "Please click on:\nPomerania");
+i18n("poland.kgm", "Gdańsk");
+i18n("poland.kgm", "Gdańsk is the capital of...");
+i18n("poland.kgm", "West Pomerania");
+i18n("poland.kgm", "The capital of West Pomerania is...");
+i18n("poland.kgm", "Please click on:\nWest Pomerania");
+i18n("poland.kgm", "Szczecin");
+i18n("poland.kgm", "Szczecin is the capital of...");
+i18n("poland.kgm", "Greater Poland");
+i18n("poland.kgm", "The capital of Greater Poland is...");
+i18n("poland.kgm", "Please click on:\nGreater Poland");
+i18n("poland.kgm", "Poznań");
+i18n("poland.kgm", "Poznań is the capital of...");
+i18n("poland.kgm", "Lower Silesia");
+i18n("poland.kgm", "The capital of Lower Silesia is...");
+i18n("poland.kgm", "Please click on:\nLower Silesia");
+i18n("poland.kgm", "Wrocław");
+i18n("poland.kgm", "Wrocław is the capital of...");
+i18n("poland.kgm", "Lubusz");
+i18n("poland.kgm", "The capital of Lubusz is...");
+i18n("poland.kgm", "Please click on:\nLubusz");
+i18n("poland.kgm", "Zielona Góra, Gorzów Wielkopolski");
+i18n("poland.kgm", "Zielona Góra, Gorzów Wielkopolski is the capital of...");
+i18n("poland.kgm", "Kuyavia-Pomerania");
+i18n("poland.kgm", "The capital of Kuyavia-Pomerania is...");
+i18n("poland.kgm", "Please click on:\nKuyavia-Pomerania");
+i18n("poland.kgm", "Bydgoszcz, Toruń");
+i18n("poland.kgm", "Bydgoszcz, Toruń is the capital of...");
+i18n("southamerica.kgm", "South America");
+i18n("southamerica.kgm", "<qt>Current map:<br><b>South America</b></qt>");
+i18n("southamerica.kgm", "Frontier");
+i18n("southamerica.kgm", "Water");
+i18n("southamerica.kgm", "Coast");
+i18n("southamerica.kgm", "Panama");
+i18n("southamerica.kgm", "Colombia");
+i18n("southamerica.kgm", "The capital of Colombia is...");
+i18n("southamerica.kgm", "Please click on:\nColombia");
+i18n("southamerica.kgm", "The flag of Colombia is...");
+i18n("southamerica.kgm", "Bogotá");
+i18n("southamerica.kgm", "Bogotá is the capital of...");
+i18n("southamerica.kgm", "Venezuela");
+i18n("southamerica.kgm", "The capital of Venezuela is...");
+i18n("southamerica.kgm", "Please click on:\nVenezuela");
+i18n("southamerica.kgm", "The flag of Venezuela is...");
+i18n("southamerica.kgm", "Caracas");
+i18n("southamerica.kgm", "Caracas is the capital of...");
+i18n("southamerica.kgm", "Guyana");
+i18n("southamerica.kgm", "The capital of Guyana is...");
+i18n("southamerica.kgm", "Please click on:\nGuyana");
+i18n("southamerica.kgm", "The flag of Guyana is...");
+i18n("southamerica.kgm", "Georgetown");
+i18n("southamerica.kgm", "Georgetown is the capital of...");
+i18n("southamerica.kgm", "Suriname");
+i18n("southamerica.kgm", "The capital of Suriname is...");
+i18n("southamerica.kgm", "Please click on:\nSuriname");
+i18n("southamerica.kgm", "The flag of Suriname is...");
+i18n("southamerica.kgm", "Paramaribo");
+i18n("southamerica.kgm", "Paramaribo is the capital of...");
+i18n("southamerica.kgm", "French Guiana");
+i18n("southamerica.kgm", "The capital of French Guiana is...");
+i18n("southamerica.kgm", "Please click on:\nFrench Guiana");
+i18n("southamerica.kgm", "The flag of French Guiana is...");
+i18n("southamerica.kgm", "Cayenne");
+i18n("southamerica.kgm", "Cayenne is the capital of...");
+i18n("southamerica.kgm", "Ecuador");
+i18n("southamerica.kgm", "The capital of Ecuador is...");
+i18n("southamerica.kgm", "Please click on:\nEcuador");
+i18n("southamerica.kgm", "The flag of Ecuador is...");
+i18n("southamerica.kgm", "Quito");
+i18n("southamerica.kgm", "Quito is the capital of...");
+i18n("southamerica.kgm", "Peru");
+i18n("southamerica.kgm", "The capital of Peru is...");
+i18n("southamerica.kgm", "Please click on:\nPeru");
+i18n("southamerica.kgm", "The flag of Peru is...");
+i18n("southamerica.kgm", "Lima");
+i18n("southamerica.kgm", "Lima is the capital of...");
+i18n("southamerica.kgm", "Brazil");
+i18n("southamerica.kgm", "The capital of Brazil is...");
+i18n("southamerica.kgm", "Please click on:\nBrazil");
+i18n("southamerica.kgm", "The flag of Brazil is...");
+i18n("southamerica.kgm", "Brasilia");
+i18n("southamerica.kgm", "Brasilia is the capital of...");
+i18n("southamerica.kgm", "Bolivia");
+i18n("southamerica.kgm", "The capital of Bolivia is...");
+i18n("southamerica.kgm", "Please click on:\nBolivia");
+i18n("southamerica.kgm", "The flag of Bolivia is...");
+i18n("southamerica.kgm", "La Paz");
+i18n("southamerica.kgm", "La Paz is the capital of...");
+i18n("southamerica.kgm", "Chile");
+i18n("southamerica.kgm", "The capital of Chile is...");
+i18n("southamerica.kgm", "Please click on:\nChile");
+i18n("southamerica.kgm", "The flag of Chile is...");
+i18n("southamerica.kgm", "Santiago");
+i18n("southamerica.kgm", "Santiago is the capital of...");
+i18n("southamerica.kgm", "Paraguay");
+i18n("southamerica.kgm", "The capital of Paraguay is...");
+i18n("southamerica.kgm", "Please click on:\nParaguay");
+i18n("southamerica.kgm", "The flag of Paraguay is...");
+i18n("southamerica.kgm", "Asunción");
+i18n("southamerica.kgm", "Asunción is the capital of...");
+i18n("southamerica.kgm", "Argentina");
+i18n("southamerica.kgm", "The capital of Argentina is...");
+i18n("southamerica.kgm", "Please click on:\nArgentina");
+i18n("southamerica.kgm", "The flag of Argentina is...");
+i18n("southamerica.kgm", "Buenos Aires");
+i18n("southamerica.kgm", "Buenos Aires is the capital of...");
+i18n("southamerica.kgm", "Uruguay");
+i18n("southamerica.kgm", "The capital of Uruguay is...");
+i18n("southamerica.kgm", "Please click on:\nUruguay");
+i18n("southamerica.kgm", "The flag of Uruguay is...");
+i18n("southamerica.kgm", "Montevideo");
+i18n("southamerica.kgm", "Montevideo is the capital of...");
+i18n("spain.kgm", "Spain");
+i18n("spain.kgm", "<qt>Current map:<br><b>Spain</b></qt>");
+i18n("spain.kgm", "Not Spain");
+i18n("spain.kgm", "Frontier");
+i18n("spain.kgm", "Andalucia");
+i18n("spain.kgm", "The capital of Andalucia is...");
+i18n("spain.kgm", "Please click on:\nAndalucia");
+i18n("spain.kgm", "Seville");
+i18n("spain.kgm", "Seville is the capital of...");
+i18n("spain.kgm", "Aragon");
+i18n("spain.kgm", "The capital of Aragon is...");
+i18n("spain.kgm", "Please click on:\nAragon");
+i18n("spain.kgm", "Zaragoza");
+i18n("spain.kgm", "Zaragoza is the capital of...");
+i18n("spain.kgm", "Asturias");
+i18n("spain.kgm", "The capital of Asturias is...");
+i18n("spain.kgm", "Please click on:\nAsturias");
+i18n("spain.kgm", "Oviedo");
+i18n("spain.kgm", "Oviedo is the capital of...");
+i18n("spain.kgm", "Balearic Islands");
+i18n("spain.kgm", "The capital of Balearic Islands is...");
+i18n("spain.kgm", "Please click on:\nBalearic Islands");
+i18n("spain.kgm", "Palma de Mallorca");
+i18n("spain.kgm", "Palma de Mallorca is the capital of...");
+i18n("spain.kgm", "Basque Country");
+i18n("spain.kgm", "The capital of Basque Country is...");
+i18n("spain.kgm", "Please click on:\nBasque Country");
+i18n("spain.kgm", "Vitoria");
+i18n("spain.kgm", "Vitoria is the capital of...");
+i18n("spain.kgm", "Canary Islands");
+i18n("spain.kgm", "The capital of Canary Islands is...");
+i18n("spain.kgm", "Please click on:\nCanary Islands");
+i18n("spain.kgm", "Las Palmas de Gran Canaria and Santa Cruz de Tenerife");
+i18n("spain.kgm", "Las Palmas de Gran Canaria and Santa Cruz de Tenerife is the capital of...");
+i18n("spain.kgm", "Cantabria");
+i18n("spain.kgm", "The capital of Cantabria is...");
+i18n("spain.kgm", "Please click on:\nCantabria");
+i18n("spain.kgm", "Santander");
+i18n("spain.kgm", "Santander is the capital of...");
+i18n("spain.kgm", "Castile-La Mancha");
+i18n("spain.kgm", "The capital of Castile-La Mancha is...");
+i18n("spain.kgm", "Please click on:\nCastile-La Mancha");
+i18n("spain.kgm", "Toledo");
+i18n("spain.kgm", "Toledo is the capital of...");
+i18n("spain.kgm", "Castile and Leon");
+i18n("spain.kgm", "The capital of Castile and Leon is...");
+i18n("spain.kgm", "Please click on:\nCastile and Leon");
+i18n("spain.kgm", "Valladolid");
+i18n("spain.kgm", "Valladolid is the capital of...");
+i18n("spain.kgm", "Catalonia");
+i18n("spain.kgm", "The capital of Catalonia is...");
+i18n("spain.kgm", "Please click on:\nCatalonia");
+i18n("spain.kgm", "Barcelona");
+i18n("spain.kgm", "Barcelona is the capital of...");
+i18n("spain.kgm", "Extremadura");
+i18n("spain.kgm", "The capital of Extremadura is...");
+i18n("spain.kgm", "Please click on:\nExtremadura");
+i18n("spain.kgm", "Mérida");
+i18n("spain.kgm", "Mérida is the capital of...");
+i18n("spain.kgm", "Galicia");
+i18n("spain.kgm", "The capital of Galicia is...");
+i18n("spain.kgm", "Please click on:\nGalicia");
+i18n("spain.kgm", "Santiago de Compostela");
+i18n("spain.kgm", "Santiago de Compostela is the capital of...");
+i18n("spain.kgm", "La Rioja");
+i18n("spain.kgm", "The capital of La Rioja is...");
+i18n("spain.kgm", "Please click on:\nLa Rioja");
+i18n("spain.kgm", "Logroño");
+i18n("spain.kgm", "Logroño is the capital of...");
+i18n("spain.kgm", "Madrid");
+i18n("spain.kgm", "The capital of Madrid is...");
+i18n("spain.kgm", "Please click on:\nMadrid");
+i18n("spain.kgm", "Madrid");
+i18n("spain.kgm", "Madrid is the capital of...");
+i18n("spain.kgm", "Murcia");
+i18n("spain.kgm", "The capital of Murcia is...");
+i18n("spain.kgm", "Please click on:\nMurcia");
+i18n("spain.kgm", "Murcia");
+i18n("spain.kgm", "Murcia is the capital of...");
+i18n("spain.kgm", "Navarre");
+i18n("spain.kgm", "The capital of Navarre is...");
+i18n("spain.kgm", "Please click on:\nNavarre");
+i18n("spain.kgm", "Pamplona");
+i18n("spain.kgm", "Pamplona is the capital of...");
+i18n("spain.kgm", "Valencian Community");
+i18n("spain.kgm", "The capital of Valencian Community is...");
+i18n("spain.kgm", "Please click on:\nValencian Community");
+i18n("spain.kgm", "Valencia");
+i18n("spain.kgm", "Valencia is the capital of...");
+i18n("usa.kgm", "USA");
+i18n("usa.kgm", "<qt>Current map:<br><b>USA</b></qt>");
+i18n("usa.kgm", "Frontier");
+i18n("usa.kgm", "Coast");
+i18n("usa.kgm", "Water");
+i18n("usa.kgm", "Lake Superior");
+i18n("usa.kgm", "Lake Michigan");
+i18n("usa.kgm", "Lake Huron");
+i18n("usa.kgm", "Lake Erie");
+i18n("usa.kgm", "Lake Ontario");
+i18n("usa.kgm", "The Bahamas");
+i18n("usa.kgm", "Cuba");
+i18n("usa.kgm", "Canada");
+i18n("usa.kgm", "Mexico");
+i18n("usa.kgm", "Russia");
+i18n("usa.kgm", "Washington DC");
+i18n("usa.kgm", "Alabama");
+i18n("usa.kgm", "The capital of Alabama is...");
+i18n("usa.kgm", "Please click on:\nAlabama");
+i18n("usa.kgm", "Montgomery");
+i18n("usa.kgm", "Montgomery is the capital of...");
+i18n("usa.kgm", "Alaska");
+i18n("usa.kgm", "The capital of Alaska is...");
+i18n("usa.kgm", "Please click on:\nAlaska");
+i18n("usa.kgm", "Juneau");
+i18n("usa.kgm", "Juneau is the capital of...");
+i18n("usa.kgm", "Arizona");
+i18n("usa.kgm", "The capital of Arizona is...");
+i18n("usa.kgm", "Please click on:\nArizona");
+i18n("usa.kgm", "Phoenix");
+i18n("usa.kgm", "Phoenix is the capital of...");
+i18n("usa.kgm", "Arkansas");
+i18n("usa.kgm", "The capital of Arkansas is...");
+i18n("usa.kgm", "Please click on:\nArkansas");
+i18n("usa.kgm", "Little Rock");
+i18n("usa.kgm", "Little Rock is the capital of...");
+i18n("usa.kgm", "California");
+i18n("usa.kgm", "The capital of California is...");
+i18n("usa.kgm", "Please click on:\nCalifornia");
+i18n("usa.kgm", "Sacramento");
+i18n("usa.kgm", "Sacramento is the capital of...");
+i18n("usa.kgm", "Colorado");
+i18n("usa.kgm", "The capital of Colorado is...");
+i18n("usa.kgm", "Please click on:\nColorado");
+i18n("usa.kgm", "Denver");
+i18n("usa.kgm", "Denver is the capital of...");
+i18n("usa.kgm", "Connecticut");
+i18n("usa.kgm", "The capital of Connecticut is...");
+i18n("usa.kgm", "Please click on:\nConnecticut");
+i18n("usa.kgm", "Hartford");
+i18n("usa.kgm", "Hartford is the capital of...");
+i18n("usa.kgm", "Delaware");
+i18n("usa.kgm", "The capital of Delaware is...");
+i18n("usa.kgm", "Please click on:\nDelaware");
+i18n("usa.kgm", "Dover");
+i18n("usa.kgm", "Dover is the capital of...");
+i18n("usa.kgm", "Florida");
+i18n("usa.kgm", "The capital of Florida is...");
+i18n("usa.kgm", "Please click on:\nFlorida");
+i18n("usa.kgm", "Tallahassee");
+i18n("usa.kgm", "Tallahassee is the capital of...");
+i18n("usa.kgm", "Georgia");
+i18n("usa.kgm", "The capital of Georgia is...");
+i18n("usa.kgm", "Please click on:\nGeorgia");
+i18n("usa.kgm", "Atlanta");
+i18n("usa.kgm", "Atlanta is the capital of...");
+i18n("usa.kgm", "Hawaii");
+i18n("usa.kgm", "The capital of Hawaii is...");
+i18n("usa.kgm", "Please click on:\nHawaii");
+i18n("usa.kgm", "Honolulu");
+i18n("usa.kgm", "Honolulu is the capital of...");
+i18n("usa.kgm", "Idaho");
+i18n("usa.kgm", "The capital of Idaho is...");
+i18n("usa.kgm", "Please click on:\nIdaho");
+i18n("usa.kgm", "Boise");
+i18n("usa.kgm", "Boise is the capital of...");
+i18n("usa.kgm", "Illinois");
+i18n("usa.kgm", "The capital of Illinois is...");
+i18n("usa.kgm", "Please click on:\nIllinois");
+i18n("usa.kgm", "Springfield");
+i18n("usa.kgm", "Springfield is the capital of...");
+i18n("usa.kgm", "Indiana");
+i18n("usa.kgm", "The capital of Indiana is...");
+i18n("usa.kgm", "Please click on:\nIndiana");
+i18n("usa.kgm", "Indianapolis");
+i18n("usa.kgm", "Indianapolis is the capital of...");
+i18n("usa.kgm", "Iowa");
+i18n("usa.kgm", "The capital of Iowa is...");
+i18n("usa.kgm", "Please click on:\nIowa");
+i18n("usa.kgm", "Des Moines");
+i18n("usa.kgm", "Des Moines is the capital of...");
+i18n("usa.kgm", "Kansas");
+i18n("usa.kgm", "The capital of Kansas is...");
+i18n("usa.kgm", "Please click on:\nKansas");
+i18n("usa.kgm", "Topeka");
+i18n("usa.kgm", "Topeka is the capital of...");
+i18n("usa.kgm", "Kentucky");
+i18n("usa.kgm", "The capital of Kentucky is...");
+i18n("usa.kgm", "Please click on:\nKentucky");
+i18n("usa.kgm", "Frankfort");
+i18n("usa.kgm", "Frankfort is the capital of...");
+i18n("usa.kgm", "Louisiana");
+i18n("usa.kgm", "The capital of Louisiana is...");
+i18n("usa.kgm", "Please click on:\nLouisiana");
+i18n("usa.kgm", "Baton Rouge");
+i18n("usa.kgm", "Baton Rouge is the capital of...");
+i18n("usa.kgm", "Maine");
+i18n("usa.kgm", "The capital of Maine is...");
+i18n("usa.kgm", "Please click on:\nMaine");
+i18n("usa.kgm", "Augusta");
+i18n("usa.kgm", "Augusta is the capital of...");
+i18n("usa.kgm", "Maryland");
+i18n("usa.kgm", "The capital of Maryland is...");
+i18n("usa.kgm", "Please click on:\nMaryland");
+i18n("usa.kgm", "Annapolis");
+i18n("usa.kgm", "Annapolis is the capital of...");
+i18n("usa.kgm", "Massachusetts");
+i18n("usa.kgm", "The capital of Massachusetts is...");
+i18n("usa.kgm", "Please click on:\nMassachusetts");
+i18n("usa.kgm", "Boston");
+i18n("usa.kgm", "Boston is the capital of...");
+i18n("usa.kgm", "Michigan");
+i18n("usa.kgm", "The capital of Michigan is...");
+i18n("usa.kgm", "Please click on:\nMichigan");
+i18n("usa.kgm", "Lansing");
+i18n("usa.kgm", "Lansing is the capital of...");
+i18n("usa.kgm", "Minnesota");
+i18n("usa.kgm", "The capital of Minnesota is...");
+i18n("usa.kgm", "Please click on:\nMinnesota");
+i18n("usa.kgm", "Saint Paul");
+i18n("usa.kgm", "Saint Paul is the capital of...");
+i18n("usa.kgm", "Mississippi");
+i18n("usa.kgm", "The capital of Mississippi is...");
+i18n("usa.kgm", "Please click on:\nMississippi");
+i18n("usa.kgm", "Jackson");
+i18n("usa.kgm", "Jackson is the capital of...");
+i18n("usa.kgm", "Missouri");
+i18n("usa.kgm", "The capital of Missouri is...");
+i18n("usa.kgm", "Please click on:\nMissouri");
+i18n("usa.kgm", "Jefferson City");
+i18n("usa.kgm", "Jefferson City is the capital of...");
+i18n("usa.kgm", "Montana");
+i18n("usa.kgm", "The capital of Montana is...");
+i18n("usa.kgm", "Please click on:\nMontana");
+i18n("usa.kgm", "Helena");
+i18n("usa.kgm", "Helena is the capital of...");
+i18n("usa.kgm", "Nebraska");
+i18n("usa.kgm", "The capital of Nebraska is...");
+i18n("usa.kgm", "Please click on:\nNebraska");
+i18n("usa.kgm", "Lincoln");
+i18n("usa.kgm", "Lincoln is the capital of...");
+i18n("usa.kgm", "Nevada");
+i18n("usa.kgm", "The capital of Nevada is...");
+i18n("usa.kgm", "Please click on:\nNevada");
+i18n("usa.kgm", "Carson City");
+i18n("usa.kgm", "Carson City is the capital of...");
+i18n("usa.kgm", "New Hampshire");
+i18n("usa.kgm", "The capital of New Hampshire is...");
+i18n("usa.kgm", "Please click on:\nNew Hampshire");
+i18n("usa.kgm", "Concord");
+i18n("usa.kgm", "Concord is the capital of...");
+i18n("usa.kgm", "New Jersey");
+i18n("usa.kgm", "The capital of New Jersey is...");
+i18n("usa.kgm", "Please click on:\nNew Jersey");
+i18n("usa.kgm", "Trenton");
+i18n("usa.kgm", "Trenton is the capital of...");
+i18n("usa.kgm", "New Mexico");
+i18n("usa.kgm", "The capital of New Mexico is...");
+i18n("usa.kgm", "Please click on:\nNew Mexico");
+i18n("usa.kgm", "Santa Fe");
+i18n("usa.kgm", "Santa Fe is the capital of...");
+i18n("usa.kgm", "New York");
+i18n("usa.kgm", "The capital of New York is...");
+i18n("usa.kgm", "Please click on:\nNew York");
+i18n("usa.kgm", "Albany");
+i18n("usa.kgm", "Albany is the capital of...");
+i18n("usa.kgm", "North Carolina");
+i18n("usa.kgm", "The capital of North Carolina is...");
+i18n("usa.kgm", "Please click on:\nNorth Carolina");
+i18n("usa.kgm", "Raleigh");
+i18n("usa.kgm", "Raleigh is the capital of...");
+i18n("usa.kgm", "North Dakota");
+i18n("usa.kgm", "The capital of North Dakota is...");
+i18n("usa.kgm", "Please click on:\nNorth Dakota");
+i18n("usa.kgm", "Bismarck");
+i18n("usa.kgm", "Bismarck is the capital of...");
+i18n("usa.kgm", "Ohio");
+i18n("usa.kgm", "The capital of Ohio is...");
+i18n("usa.kgm", "Please click on:\nOhio");
+i18n("usa.kgm", "Columbus");
+i18n("usa.kgm", "Columbus is the capital of...");
+i18n("usa.kgm", "Oklahoma");
+i18n("usa.kgm", "The capital of Oklahoma is...");
+i18n("usa.kgm", "Please click on:\nOklahoma");
+i18n("usa.kgm", "Oklahoma City");
+i18n("usa.kgm", "Oklahoma City is the capital of...");
+i18n("usa.kgm", "Oregon");
+i18n("usa.kgm", "The capital of Oregon is...");
+i18n("usa.kgm", "Please click on:\nOregon");
+i18n("usa.kgm", "Salem");
+i18n("usa.kgm", "Salem is the capital of...");
+i18n("usa.kgm", "Pennsylvania");
+i18n("usa.kgm", "The capital of Pennsylvania is...");
+i18n("usa.kgm", "Please click on:\nPennsylvania");
+i18n("usa.kgm", "Harrisburg");
+i18n("usa.kgm", "Harrisburg is the capital of...");
+i18n("usa.kgm", "Rhode Island");
+i18n("usa.kgm", "The capital of Rhode Island is...");
+i18n("usa.kgm", "Please click on:\nRhode Island");
+i18n("usa.kgm", "Providence");
+i18n("usa.kgm", "Providence is the capital of...");
+i18n("usa.kgm", "South Carolina");
+i18n("usa.kgm", "The capital of South Carolina is...");
+i18n("usa.kgm", "Please click on:\nSouth Carolina");
+i18n("usa.kgm", "Columbia");
+i18n("usa.kgm", "Columbia is the capital of...");
+i18n("usa.kgm", "South Dakota");
+i18n("usa.kgm", "The capital of South Dakota is...");
+i18n("usa.kgm", "Please click on:\nSouth Dakota");
+i18n("usa.kgm", "Pierre");
+i18n("usa.kgm", "Pierre is the capital of...");
+i18n("usa.kgm", "Tennessee");
+i18n("usa.kgm", "The capital of Tennessee is...");
+i18n("usa.kgm", "Please click on:\nTennessee");
+i18n("usa.kgm", "Nashville");
+i18n("usa.kgm", "Nashville is the capital of...");
+i18n("usa.kgm", "Texas");
+i18n("usa.kgm", "The capital of Texas is...");
+i18n("usa.kgm", "Please click on:\nTexas");
+i18n("usa.kgm", "Austin");
+i18n("usa.kgm", "Austin is the capital of...");
+i18n("usa.kgm", "Utah");
+i18n("usa.kgm", "The capital of Utah is...");
+i18n("usa.kgm", "Please click on:\nUtah");
+i18n("usa.kgm", "Salt Lake City");
+i18n("usa.kgm", "Salt Lake City is the capital of...");
+i18n("usa.kgm", "Vermont");
+i18n("usa.kgm", "The capital of Vermont is...");
+i18n("usa.kgm", "Please click on:\nVermont");
+i18n("usa.kgm", "Montpelier");
+i18n("usa.kgm", "Montpelier is the capital of...");
+i18n("usa.kgm", "Virginia");
+i18n("usa.kgm", "The capital of Virginia is...");
+i18n("usa.kgm", "Please click on:\nVirginia");
+i18n("usa.kgm", "Richmond");
+i18n("usa.kgm", "Richmond is the capital of...");
+i18n("usa.kgm", "Washington");
+i18n("usa.kgm", "The capital of Washington is...");
+i18n("usa.kgm", "Please click on:\nWashington");
+i18n("usa.kgm", "Olympia");
+i18n("usa.kgm", "Olympia is the capital of...");
+i18n("usa.kgm", "West Virginia");
+i18n("usa.kgm", "The capital of West Virginia is...");
+i18n("usa.kgm", "Please click on:\nWest Virginia");
+i18n("usa.kgm", "Charleston");
+i18n("usa.kgm", "Charleston is the capital of...");
+i18n("usa.kgm", "Wisconsin");
+i18n("usa.kgm", "The capital of Wisconsin is...");
+i18n("usa.kgm", "Please click on:\nWisconsin");
+i18n("usa.kgm", "Madison");
+i18n("usa.kgm", "Madison is the capital of...");
+i18n("usa.kgm", "Wyoming");
+i18n("usa.kgm", "The capital of Wyoming is...");
+i18n("usa.kgm", "Please click on:\nWyoming");
+i18n("usa.kgm", "Cheyenne");
+i18n("usa.kgm", "Cheyenne is the capital of...");
+i18n("world.kgm", "World");
+i18n("world.kgm", "<qt>Current map:<br><b>World</b></qt>");
+i18n("world.kgm", "Not a Nation");
+i18n("world.kgm", "Algeria");
+i18n("world.kgm", "The capital of Algeria is...");
+i18n("world.kgm", "Please click on:\nAlgeria");
+i18n("world.kgm", "The flag of Algeria is...");
+i18n("world.kgm", "Algiers");
+i18n("world.kgm", "Algiers is the capital of...");
+i18n("world.kgm", "Angola");
+i18n("world.kgm", "The capital of Angola is...");
+i18n("world.kgm", "Please click on:\nAngola");
+i18n("world.kgm", "The flag of Angola is...");
+i18n("world.kgm", "Luanda");
+i18n("world.kgm", "Luanda is the capital of...");
+i18n("world.kgm", "Benin");
+i18n("world.kgm", "The capital of Benin is...");
+i18n("world.kgm", "Please click on:\nBenin");
+i18n("world.kgm", "The flag of Benin is...");
+i18n("world.kgm", "Porto Novo");
+i18n("world.kgm", "Porto Novo is the capital of...");
+i18n("world.kgm", "Botswana");
+i18n("world.kgm", "The capital of Botswana is...");
+i18n("world.kgm", "Please click on:\nBotswana");
+i18n("world.kgm", "The flag of Botswana is...");
+i18n("world.kgm", "Gaborone");
+i18n("world.kgm", "Gaborone is the capital of...");
+i18n("world.kgm", "Burkina Faso");
+i18n("world.kgm", "The capital of Burkina Faso is...");
+i18n("world.kgm", "Please click on:\nBurkina Faso");
+i18n("world.kgm", "The flag of Burkina Faso is...");
+i18n("world.kgm", "Ouagadougou");
+i18n("world.kgm", "Ouagadougou is the capital of...");
+i18n("world.kgm", "Burundi");
+i18n("world.kgm", "The capital of Burundi is...");
+i18n("world.kgm", "Please click on:\nBurundi");
+i18n("world.kgm", "The flag of Burundi is...");
+i18n("world.kgm", "Bujumbura");
+i18n("world.kgm", "Bujumbura is the capital of...");
+i18n("world.kgm", "Cameroon");
+i18n("world.kgm", "The capital of Cameroon is...");
+i18n("world.kgm", "Please click on:\nCameroon");
+i18n("world.kgm", "The flag of Cameroon is...");
+i18n("world.kgm", "Yaoundé");
+i18n("world.kgm", "Yaoundé is the capital of...");
+i18n("world.kgm", "Central African Republic");
+i18n("world.kgm", "The capital of Central African Republic is...");
+i18n("world.kgm", "Please click on:\nCentral African Republic");
+i18n("world.kgm", "The flag of Central African Republic is...");
+i18n("world.kgm", "Bangui");
+i18n("world.kgm", "Bangui is the capital of...");
+i18n("world.kgm", "Chad");
+i18n("world.kgm", "The capital of Chad is...");
+i18n("world.kgm", "Please click on:\nChad");
+i18n("world.kgm", "The flag of Chad is...");
+i18n("world.kgm", "N'Djamena");
+i18n("world.kgm", "N'Djamena is the capital of...");
+i18n("world.kgm", "Côte d'Ivoire");
+i18n("world.kgm", "The capital of Côte d'Ivoire is...");
+i18n("world.kgm", "Please click on:\nCôte d'Ivoire");
+i18n("world.kgm", "The flag of Côte d'Ivoire is...");
+i18n("world.kgm", "Yamoussoukro");
+i18n("world.kgm", "Yamoussoukro is the capital of...");
+i18n("world.kgm", "Democratic Republic of the Congo");
+i18n("world.kgm", "The capital of Democratic Republic of the Congo is...");
+i18n("world.kgm", "Please click on:\nDemocratic Republic of the Congo");
+i18n("world.kgm", "The flag of Democratic Republic of the Congo is...");
+i18n("world.kgm", "Kinshasa");
+i18n("world.kgm", "Kinshasa is the capital of...");
+i18n("world.kgm", "Djibouti");
+i18n("world.kgm", "The capital of Djibouti is...");
+i18n("world.kgm", "Please click on:\nDjibouti");
+i18n("world.kgm", "The flag of Djibouti is...");
+i18n("world.kgm", "Djibouti");
+i18n("world.kgm", "Djibouti is the capital of...");
+i18n("world.kgm", "Egypt");
+i18n("world.kgm", "The capital of Egypt is...");
+i18n("world.kgm", "Please click on:\nEgypt");
+i18n("world.kgm", "The flag of Egypt is...");
+i18n("world.kgm", "Cairo");
+i18n("world.kgm", "Cairo is the capital of...");
+i18n("world.kgm", "Equatorial Guinea");
+i18n("world.kgm", "The capital of Equatorial Guinea is...");
+i18n("world.kgm", "Please click on:\nEquatorial Guinea");
+i18n("world.kgm", "The flag of Equatorial Guinea is...");
+i18n("world.kgm", "Malabo");
+i18n("world.kgm", "Malabo is the capital of...");
+i18n("world.kgm", "Eritrea");
+i18n("world.kgm", "The capital of Eritrea is...");
+i18n("world.kgm", "Please click on:\nEritrea");
+i18n("world.kgm", "The flag of Eritrea is...");
+i18n("world.kgm", "Asmara");
+i18n("world.kgm", "Asmara is the capital of...");
+i18n("world.kgm", "Ethiopia");
+i18n("world.kgm", "The capital of Ethiopia is...");
+i18n("world.kgm", "Please click on:\nEthiopia");
+i18n("world.kgm", "The flag of Ethiopia is...");
+i18n("world.kgm", "Addis Ababa");
+i18n("world.kgm", "Addis Ababa is the capital of...");
+i18n("world.kgm", "Gabon");
+i18n("world.kgm", "The capital of Gabon is...");
+i18n("world.kgm", "Please click on:\nGabon");
+i18n("world.kgm", "The flag of Gabon is...");
+i18n("world.kgm", "Libreville");
+i18n("world.kgm", "Libreville is the capital of...");
+i18n("world.kgm", "Ghana");
+i18n("world.kgm", "The capital of Ghana is...");
+i18n("world.kgm", "Please click on:\nGhana");
+i18n("world.kgm", "The flag of Ghana is...");
+i18n("world.kgm", "Accra");
+i18n("world.kgm", "Accra is the capital of...");
+i18n("world.kgm", "Guinea");
+i18n("world.kgm", "The capital of Guinea is...");
+i18n("world.kgm", "Please click on:\nGuinea");
+i18n("world.kgm", "The flag of Guinea is...");
+i18n("world.kgm", "Conakry");
+i18n("world.kgm", "Conakry is the capital of...");
+i18n("world.kgm", "Guinea-Bissau");
+i18n("world.kgm", "The capital of Guinea-Bissau is...");
+i18n("world.kgm", "Please click on:\nGuinea-Bissau");
+i18n("world.kgm", "The flag of Guinea-Bissau is...");
+i18n("world.kgm", "Bissau");
+i18n("world.kgm", "Bissau is the capital of...");
+i18n("world.kgm", "Iran");
+i18n("world.kgm", "The capital of Iran is...");
+i18n("world.kgm", "Please click on:\nIran");
+i18n("world.kgm", "The flag of Iran is...");
+i18n("world.kgm", "Tehran");
+i18n("world.kgm", "Tehran is the capital of...");
+i18n("world.kgm", "Iraq");
+i18n("world.kgm", "The capital of Iraq is...");
+i18n("world.kgm", "Please click on:\nIraq");
+i18n("world.kgm", "The flag of Iraq is...");
+i18n("world.kgm", "Baghdad");
+i18n("world.kgm", "Baghdad is the capital of...");
+i18n("world.kgm", "Israel");
+i18n("world.kgm", "The capital of Israel is...");
+i18n("world.kgm", "Please click on:\nIsrael");
+i18n("world.kgm", "The flag of Israel is...");
+i18n("world.kgm", "Jerusalem");
+i18n("world.kgm", "Jerusalem is the capital of...");
+i18n("world.kgm", "Jordan");
+i18n("world.kgm", "The capital of Jordan is...");
+i18n("world.kgm", "Please click on:\nJordan");
+i18n("world.kgm", "The flag of Jordan is...");
+i18n("world.kgm", "Amman");
+i18n("world.kgm", "Amman is the capital of...");
+i18n("world.kgm", "Kenya");
+i18n("world.kgm", "The capital of Kenya is...");
+i18n("world.kgm", "Please click on:\nKenya");
+i18n("world.kgm", "The flag of Kenya is...");
+i18n("world.kgm", "Nairobi");
+i18n("world.kgm", "Nairobi is the capital of...");
+i18n("world.kgm", "Kuwait");
+i18n("world.kgm", "The capital of Kuwait is...");
+i18n("world.kgm", "Please click on:\nKuwait");
+i18n("world.kgm", "The flag of Kuwait is...");
+i18n("world.kgm", "Kuwait City");
+i18n("world.kgm", "Kuwait City is the capital of...");
+i18n("world.kgm", "Lebanon");
+i18n("world.kgm", "The capital of Lebanon is...");
+i18n("world.kgm", "Please click on:\nLebanon");
+i18n("world.kgm", "The flag of Lebanon is...");
+i18n("world.kgm", "Beirut");
+i18n("world.kgm", "Beirut is the capital of...");
+i18n("world.kgm", "Lesotho");
+i18n("world.kgm", "The capital of Lesotho is...");
+i18n("world.kgm", "Please click on:\nLesotho");
+i18n("world.kgm", "The flag of Lesotho is...");
+i18n("world.kgm", "Maseru");
+i18n("world.kgm", "Maseru is the capital of...");
+i18n("world.kgm", "Liberia");
+i18n("world.kgm", "The capital of Liberia is...");
+i18n("world.kgm", "Please click on:\nLiberia");
+i18n("world.kgm", "The flag of Liberia is...");
+i18n("world.kgm", "Monrovia");
+i18n("world.kgm", "Monrovia is the capital of...");
+i18n("world.kgm", "Libya");
+i18n("world.kgm", "The capital of Libya is...");
+i18n("world.kgm", "Please click on:\nLibya");
+i18n("world.kgm", "The flag of Libya is...");
+i18n("world.kgm", "Tripoli");
+i18n("world.kgm", "Tripoli is the capital of...");
+i18n("world.kgm", "Liechtenstein");
+i18n("world.kgm", "The capital of Liechtenstein is...");
+i18n("world.kgm", "Please click on:\nLiechtenstein");
+i18n("world.kgm", "The flag of Liechtenstein is...");
+i18n("world.kgm", "Vaduz");
+i18n("world.kgm", "Vaduz is the capital of...");
+i18n("world.kgm", "Madagascar");
+i18n("world.kgm", "The capital of Madagascar is...");
+i18n("world.kgm", "Please click on:\nMadagascar");
+i18n("world.kgm", "The flag of Madagascar is...");
+i18n("world.kgm", "Antananarivo");
+i18n("world.kgm", "Antananarivo is the capital of...");
+i18n("world.kgm", "Malawi");
+i18n("world.kgm", "The capital of Malawi is...");
+i18n("world.kgm", "Please click on:\nMalawi");
+i18n("world.kgm", "The flag of Malawi is...");
+i18n("world.kgm", "Lilongwe");
+i18n("world.kgm", "Lilongwe is the capital of...");
+i18n("world.kgm", "Mali");
+i18n("world.kgm", "The capital of Mali is...");
+i18n("world.kgm", "Please click on:\nMali");
+i18n("world.kgm", "The flag of Mali is...");
+i18n("world.kgm", "Bamako");
+i18n("world.kgm", "Bamako is the capital of...");
+i18n("world.kgm", "Mauritania");
+i18n("world.kgm", "The capital of Mauritania is...");
+i18n("world.kgm", "Please click on:\nMauritania");
+i18n("world.kgm", "The flag of Mauritania is...");
+i18n("world.kgm", "Nouakchott");
+i18n("world.kgm", "Nouakchott is the capital of...");
+i18n("world.kgm", "Morocco");
+i18n("world.kgm", "The capital of Morocco is...");
+i18n("world.kgm", "Please click on:\nMorocco");
+i18n("world.kgm", "The flag of Morocco is...");
+i18n("world.kgm", "Rabat");
+i18n("world.kgm", "Rabat is the capital of...");
+i18n("world.kgm", "Mozambique");
+i18n("world.kgm", "The capital of Mozambique is...");
+i18n("world.kgm", "Please click on:\nMozambique");
+i18n("world.kgm", "The flag of Mozambique is...");
+i18n("world.kgm", "Maputo");
+i18n("world.kgm", "Maputo is the capital of...");
+i18n("world.kgm", "Namibia");
+i18n("world.kgm", "The capital of Namibia is...");
+i18n("world.kgm", "Please click on:\nNamibia");
+i18n("world.kgm", "The flag of Namibia is...");
+i18n("world.kgm", "Windhoek");
+i18n("world.kgm", "Windhoek is the capital of...");
+i18n("world.kgm", "Niger");
+i18n("world.kgm", "The capital of Niger is...");
+i18n("world.kgm", "Please click on:\nNiger");
+i18n("world.kgm", "The flag of Niger is...");
+i18n("world.kgm", "Niamey");
+i18n("world.kgm", "Niamey is the capital of...");
+i18n("world.kgm", "Nigeria");
+i18n("world.kgm", "The capital of Nigeria is...");
+i18n("world.kgm", "Please click on:\nNigeria");
+i18n("world.kgm", "The flag of Nigeria is...");
+i18n("world.kgm", "Abuja");
+i18n("world.kgm", "Abuja is the capital of...");
+i18n("world.kgm", "Qatar");
+i18n("world.kgm", "The capital of Qatar is...");
+i18n("world.kgm", "Please click on:\nQatar");
+i18n("world.kgm", "The flag of Qatar is...");
+i18n("world.kgm", "Doha");
+i18n("world.kgm", "Doha is the capital of...");
+i18n("world.kgm", "Republic of the Congo");
+i18n("world.kgm", "The capital of Republic of the Congo is...");
+i18n("world.kgm", "Please click on:\nRepublic of the Congo");
+i18n("world.kgm", "The flag of Republic of the Congo is...");
+i18n("world.kgm", "Brazzaville");
+i18n("world.kgm", "Brazzaville is the capital of...");
+i18n("world.kgm", "Rwanda");
+i18n("world.kgm", "The capital of Rwanda is...");
+i18n("world.kgm", "Please click on:\nRwanda");
+i18n("world.kgm", "The flag of Rwanda is...");
+i18n("world.kgm", "Kigali");
+i18n("world.kgm", "Kigali is the capital of...");
+i18n("world.kgm", "Saudi Arabia");
+i18n("world.kgm", "The capital of Saudi Arabia is...");
+i18n("world.kgm", "Please click on:\nSaudi Arabia");
+i18n("world.kgm", "The flag of Saudi Arabia is...");
+i18n("world.kgm", "Riyadh");
+i18n("world.kgm", "Riyadh is the capital of...");
+i18n("world.kgm", "Senegal");
+i18n("world.kgm", "The capital of Senegal is...");
+i18n("world.kgm", "Please click on:\nSenegal");
+i18n("world.kgm", "The flag of Senegal is...");
+i18n("world.kgm", "Dakar");
+i18n("world.kgm", "Dakar is the capital of...");
+i18n("world.kgm", "Sierra Leone");
+i18n("world.kgm", "The capital of Sierra Leone is...");
+i18n("world.kgm", "Please click on:\nSierra Leone");
+i18n("world.kgm", "The flag of Sierra Leone is...");
+i18n("world.kgm", "Freetown");
+i18n("world.kgm", "Freetown is the capital of...");
+i18n("world.kgm", "Somalia");
+i18n("world.kgm", "The capital of Somalia is...");
+i18n("world.kgm", "Please click on:\nSomalia");
+i18n("world.kgm", "The flag of Somalia is...");
+i18n("world.kgm", "Mogadishu");
+i18n("world.kgm", "Mogadishu is the capital of...");
+i18n("world.kgm", "South Africa");
+i18n("world.kgm", "The capital of South Africa is...");
+i18n("world.kgm", "Please click on:\nSouth Africa");
+i18n("world.kgm", "The flag of South Africa is...");
+i18n("world.kgm", "Pretoria, Bloemfontein and Cape Town");
+i18n("world.kgm", "Pretoria, Bloemfontein and Cape Town is the capital of...");
+i18n("world.kgm", "Sudan");
+i18n("world.kgm", "The capital of Sudan is...");
+i18n("world.kgm", "Please click on:\nSudan");
+i18n("world.kgm", "The flag of Sudan is...");
+i18n("world.kgm", "Khartoum");
+i18n("world.kgm", "Khartoum is the capital of...");
+i18n("world.kgm", "Swaziland");
+i18n("world.kgm", "The capital of Swaziland is...");
+i18n("world.kgm", "Please click on:\nSwaziland");
+i18n("world.kgm", "The flag of Swaziland is...");
+i18n("world.kgm", "Mbabane");
+i18n("world.kgm", "Mbabane is the capital of...");
+i18n("world.kgm", "Syria");
+i18n("world.kgm", "The capital of Syria is...");
+i18n("world.kgm", "Please click on:\nSyria");
+i18n("world.kgm", "The flag of Syria is...");
+i18n("world.kgm", "Damascus");
+i18n("world.kgm", "Damascus is the capital of...");
+i18n("world.kgm", "Tanzania");
+i18n("world.kgm", "The capital of Tanzania is...");
+i18n("world.kgm", "Please click on:\nTanzania");
+i18n("world.kgm", "The flag of Tanzania is...");
+i18n("world.kgm", "Dodoma");
+i18n("world.kgm", "Dodoma is the capital of...");
+i18n("world.kgm", "The Gambia");
+i18n("world.kgm", "The capital of The Gambia is...");
+i18n("world.kgm", "Please click on:\nThe Gambia");
+i18n("world.kgm", "The flag of The Gambia is...");
+i18n("world.kgm", "Banjul");
+i18n("world.kgm", "Banjul is the capital of...");
+i18n("world.kgm", "Togo");
+i18n("world.kgm", "The capital of Togo is...");
+i18n("world.kgm", "Please click on:\nTogo");
+i18n("world.kgm", "The flag of Togo is...");
+i18n("world.kgm", "Lomé");
+i18n("world.kgm", "Lomé is the capital of...");
+i18n("world.kgm", "Tunisia");
+i18n("world.kgm", "The capital of Tunisia is...");
+i18n("world.kgm", "Please click on:\nTunisia");
+i18n("world.kgm", "The flag of Tunisia is...");
+i18n("world.kgm", "Tunis");
+i18n("world.kgm", "Tunis is the capital of...");
+i18n("world.kgm", "Uganda");
+i18n("world.kgm", "The capital of Uganda is...");
+i18n("world.kgm", "Please click on:\nUganda");
+i18n("world.kgm", "The flag of Uganda is...");
+i18n("world.kgm", "Kampala");
+i18n("world.kgm", "Kampala is the capital of...");
+i18n("world.kgm", "United Arab Emirates");
+i18n("world.kgm", "The capital of United Arab Emirates is...");
+i18n("world.kgm", "Please click on:\nUnited Arab Emirates");
+i18n("world.kgm", "The flag of United Arab Emirates is...");
+i18n("world.kgm", "Abu Dhabi City");
+i18n("world.kgm", "Abu Dhabi City is the capital of...");
+i18n("world.kgm", "Oman");
+i18n("world.kgm", "The capital of Oman is...");
+i18n("world.kgm", "Please click on:\nOman");
+i18n("world.kgm", "The flag of Oman is...");
+i18n("world.kgm", "Muscat");
+i18n("world.kgm", "Muscat is the capital of...");
+i18n("world.kgm", "West Bank");
+i18n("world.kgm", "Western Sahara");
+i18n("world.kgm", "The capital of Western Sahara is...");
+i18n("world.kgm", "Please click on:\nWestern Sahara");
+i18n("world.kgm", "The flag of Western Sahara is...");
+i18n("world.kgm", "Laayoune");
+i18n("world.kgm", "Laayoune is the capital of...");
+i18n("world.kgm", "Yemen");
+i18n("world.kgm", "The capital of Yemen is...");
+i18n("world.kgm", "Please click on:\nYemen");
+i18n("world.kgm", "The flag of Yemen is...");
+i18n("world.kgm", "Sana'a");
+i18n("world.kgm", "Sana'a is the capital of...");
+i18n("world.kgm", "Zambia");
+i18n("world.kgm", "The capital of Zambia is...");
+i18n("world.kgm", "Please click on:\nZambia");
+i18n("world.kgm", "The flag of Zambia is...");
+i18n("world.kgm", "Lusaka");
+i18n("world.kgm", "Lusaka is the capital of...");
+i18n("world.kgm", "Zimbabwe");
+i18n("world.kgm", "The capital of Zimbabwe is...");
+i18n("world.kgm", "Please click on:\nZimbabwe");
+i18n("world.kgm", "The flag of Zimbabwe is...");
+i18n("world.kgm", "Harare");
+i18n("world.kgm", "Harare is the capital of...");
+i18n("world.kgm", "Albania");
+i18n("world.kgm", "The capital of Albania is...");
+i18n("world.kgm", "Please click on:\nAlbania");
+i18n("world.kgm", "The flag of Albania is...");
+i18n("world.kgm", "Tirana");
+i18n("world.kgm", "Tirana is the capital of...");
+i18n("world.kgm", "Austria");
+i18n("world.kgm", "The capital of Austria is...");
+i18n("world.kgm", "Please click on:\nAustria");
+i18n("world.kgm", "The flag of Austria is...");
+i18n("world.kgm", "Vienna");
+i18n("world.kgm", "Vienna is the capital of...");
+i18n("world.kgm", "Belarus");
+i18n("world.kgm", "The capital of Belarus is...");
+i18n("world.kgm", "Please click on:\nBelarus");
+i18n("world.kgm", "The flag of Belarus is...");
+i18n("world.kgm", "Minsk");
+i18n("world.kgm", "Minsk is the capital of...");
+i18n("world.kgm", "Belgium");
+i18n("world.kgm", "The capital of Belgium is...");
+i18n("world.kgm", "Please click on:\nBelgium");
+i18n("world.kgm", "The flag of Belgium is...");
+i18n("world.kgm", "Brussels");
+i18n("world.kgm", "Brussels is the capital of...");
+i18n("world.kgm", "Bosnia and Herzegovina");
+i18n("world.kgm", "The capital of Bosnia and Herzegovina is...");
+i18n("world.kgm", "Please click on:\nBosnia and Herzegovina");
+i18n("world.kgm", "The flag of Bosnia and Herzegovina is...");
+i18n("world.kgm", "Sarajevo");
+i18n("world.kgm", "Sarajevo is the capital of...");
+i18n("world.kgm", "Bulgaria");
+i18n("world.kgm", "The capital of Bulgaria is...");
+i18n("world.kgm", "Please click on:\nBulgaria");
+i18n("world.kgm", "The flag of Bulgaria is...");
+i18n("world.kgm", "Sofia");
+i18n("world.kgm", "Sofia is the capital of...");
+i18n("world.kgm", "Croatia");
+i18n("world.kgm", "The capital of Croatia is...");
+i18n("world.kgm", "Please click on:\nCroatia");
+i18n("world.kgm", "The flag of Croatia is...");
+i18n("world.kgm", "Zagreb");
+i18n("world.kgm", "Zagreb is the capital of...");
+i18n("world.kgm", "Czech Republic");
+i18n("world.kgm", "The capital of Czech Republic is...");
+i18n("world.kgm", "Please click on:\nCzech Republic");
+i18n("world.kgm", "The flag of Czech Republic is...");
+i18n("world.kgm", "Prague");
+i18n("world.kgm", "Prague is the capital of...");
+i18n("world.kgm", "Denmark");
+i18n("world.kgm", "The capital of Denmark is...");
+i18n("world.kgm", "Please click on:\nDenmark");
+i18n("world.kgm", "The flag of Denmark is...");
+i18n("world.kgm", "Copenhagen");
+i18n("world.kgm", "Copenhagen is the capital of...");
+i18n("world.kgm", "Estonia");
+i18n("world.kgm", "The capital of Estonia is...");
+i18n("world.kgm", "Please click on:\nEstonia");
+i18n("world.kgm", "The flag of Estonia is...");
+i18n("world.kgm", "Tallinn");
+i18n("world.kgm", "Tallinn is the capital of...");
+i18n("world.kgm", "Finland");
+i18n("world.kgm", "The capital of Finland is...");
+i18n("world.kgm", "Please click on:\nFinland");
+i18n("world.kgm", "The flag of Finland is...");
+i18n("world.kgm", "Helsinki");
+i18n("world.kgm", "Helsinki is the capital of...");
+i18n("world.kgm", "Macedonia");
+i18n("world.kgm", "The capital of Macedonia is...");
+i18n("world.kgm", "Please click on:\nMacedonia");
+i18n("world.kgm", "The flag of Macedonia is...");
+i18n("world.kgm", "Skopje");
+i18n("world.kgm", "Skopje is the capital of...");
+i18n("world.kgm", "France");
+i18n("world.kgm", "The capital of France is...");
+i18n("world.kgm", "Please click on:\nFrance");
+i18n("world.kgm", "The flag of France is...");
+i18n("world.kgm", "Paris");
+i18n("world.kgm", "Paris is the capital of...");
+i18n("world.kgm", "Germany");
+i18n("world.kgm", "The capital of Germany is...");
+i18n("world.kgm", "Please click on:\nGermany");
+i18n("world.kgm", "The flag of Germany is...");
+i18n("world.kgm", "Berlin");
+i18n("world.kgm", "Berlin is the capital of...");
+i18n("world.kgm", "Greece");
+i18n("world.kgm", "The capital of Greece is...");
+i18n("world.kgm", "Please click on:\nGreece");
+i18n("world.kgm", "The flag of Greece is...");
+i18n("world.kgm", "Athens");
+i18n("world.kgm", "Athens is the capital of...");
+i18n("world.kgm", "Hungary");
+i18n("world.kgm", "The capital of Hungary is...");
+i18n("world.kgm", "Please click on:\nHungary");
+i18n("world.kgm", "The flag of Hungary is...");
+i18n("world.kgm", "Budapest");
+i18n("world.kgm", "Budapest is the capital of...");
+i18n("world.kgm", "Iceland");
+i18n("world.kgm", "The capital of Iceland is...");
+i18n("world.kgm", "Please click on:\nIceland");
+i18n("world.kgm", "The flag of Iceland is...");
+i18n("world.kgm", "Reykjavik");
+i18n("world.kgm", "Reykjavik is the capital of...");
+i18n("world.kgm", "Ireland");
+i18n("world.kgm", "The capital of Ireland is...");
+i18n("world.kgm", "Please click on:\nIreland");
+i18n("world.kgm", "The flag of Ireland is...");
+i18n("world.kgm", "Dublin");
+i18n("world.kgm", "Dublin is the capital of...");
+i18n("world.kgm", "Italy");
+i18n("world.kgm", "The capital of Italy is...");
+i18n("world.kgm", "Please click on:\nItaly");
+i18n("world.kgm", "The flag of Italy is...");
+i18n("world.kgm", "Rome");
+i18n("world.kgm", "Rome is the capital of...");
+i18n("world.kgm", "Latvia");
+i18n("world.kgm", "The capital of Latvia is...");
+i18n("world.kgm", "Please click on:\nLatvia");
+i18n("world.kgm", "The flag of Latvia is...");
+i18n("world.kgm", "Riga");
+i18n("world.kgm", "Riga is the capital of...");
+i18n("world.kgm", "Lithuania");
+i18n("world.kgm", "The capital of Lithuania is...");
+i18n("world.kgm", "Please click on:\nLithuania");
+i18n("world.kgm", "The flag of Lithuania is...");
+i18n("world.kgm", "Vilnius");
+i18n("world.kgm", "Vilnius is the capital of...");
+i18n("world.kgm", "Luxembourg");
+i18n("world.kgm", "The capital of Luxembourg is...");
+i18n("world.kgm", "Please click on:\nLuxembourg");
+i18n("world.kgm", "The flag of Luxembourg is...");
+i18n("world.kgm", "Luxembourg");
+i18n("world.kgm", "Luxembourg is the capital of...");
+i18n("world.kgm", "Moldova");
+i18n("world.kgm", "The capital of Moldova is...");
+i18n("world.kgm", "Please click on:\nMoldova");
+i18n("world.kgm", "The flag of Moldova is...");
+i18n("world.kgm", "Chisinau");
+i18n("world.kgm", "Chisinau is the capital of...");
+i18n("world.kgm", "Netherlands");
+i18n("world.kgm", "The capital of Netherlands is...");
+i18n("world.kgm", "Please click on:\nNetherlands");
+i18n("world.kgm", "The flag of Netherlands is...");
+i18n("world.kgm", "Amsterdam");
+i18n("world.kgm", "Amsterdam is the capital of...");
+i18n("world.kgm", "Norway");
+i18n("world.kgm", "The capital of Norway is...");
+i18n("world.kgm", "Please click on:\nNorway");
+i18n("world.kgm", "The flag of Norway is...");
+i18n("world.kgm", "Oslo");
+i18n("world.kgm", "Oslo is the capital of...");
+i18n("world.kgm", "Poland");
+i18n("world.kgm", "The capital of Poland is...");
+i18n("world.kgm", "Please click on:\nPoland");
+i18n("world.kgm", "The flag of Poland is...");
+i18n("world.kgm", "Warsaw");
+i18n("world.kgm", "Warsaw is the capital of...");
+i18n("world.kgm", "Portugal");
+i18n("world.kgm", "The capital of Portugal is...");
+i18n("world.kgm", "Please click on:\nPortugal");
+i18n("world.kgm", "The flag of Portugal is...");
+i18n("world.kgm", "Lisbon");
+i18n("world.kgm", "Lisbon is the capital of...");
+i18n("world.kgm", "Romania");
+i18n("world.kgm", "The capital of Romania is...");
+i18n("world.kgm", "Please click on:\nRomania");
+i18n("world.kgm", "The flag of Romania is...");
+i18n("world.kgm", "Bucharest");
+i18n("world.kgm", "Bucharest is the capital of...");
+i18n("world.kgm", "Russia");
+i18n("world.kgm", "The capital of Russia is...");
+i18n("world.kgm", "Please click on:\nRussia");
+i18n("world.kgm", "The flag of Russia is...");
+i18n("world.kgm", "Moscow");
+i18n("world.kgm", "Moscow is the capital of...");
+i18n("world.kgm", "San Marino");
+i18n("world.kgm", "The capital of San Marino is...");
+i18n("world.kgm", "Please click on:\nSan Marino");
+i18n("world.kgm", "The flag of San Marino is...");
+i18n("world.kgm", "San Marino");
+i18n("world.kgm", "San Marino is the capital of...");
+i18n("world.kgm", "Serbia");
+i18n("world.kgm", "The capital of Serbia is...");
+i18n("world.kgm", "Please click on:\nSerbia");
+i18n("world.kgm", "The flag of Serbia is...");
+i18n("world.kgm", "Belgrade");
+i18n("world.kgm", "Belgrade is the capital of...");
+i18n("world.kgm", "Montenegro");
+i18n("world.kgm", "The capital of Montenegro is...");
+i18n("world.kgm", "Please click on:\nMontenegro");
+i18n("world.kgm", "The flag of Montenegro is...");
+i18n("world.kgm", "Podgorica");
+i18n("world.kgm", "Podgorica is the capital of...");
+i18n("world.kgm", "Slovakia");
+i18n("world.kgm", "The capital of Slovakia is...");
+i18n("world.kgm", "Please click on:\nSlovakia");
+i18n("world.kgm", "The flag of Slovakia is...");
+i18n("world.kgm", "Bratislava");
+i18n("world.kgm", "Bratislava is the capital of...");
+i18n("world.kgm", "Slovenia");
+i18n("world.kgm", "The capital of Slovenia is...");
+i18n("world.kgm", "Please click on:\nSlovenia");
+i18n("world.kgm", "The flag of Slovenia is...");
+i18n("world.kgm", "Ljubljana");
+i18n("world.kgm", "Ljubljana is the capital of...");
+i18n("world.kgm", "Spain");
+i18n("world.kgm", "The capital of Spain is...");
+i18n("world.kgm", "Please click on:\nSpain");
+i18n("world.kgm", "The flag of Spain is...");
+i18n("world.kgm", "Madrid");
+i18n("world.kgm", "Madrid is the capital of...");
+i18n("world.kgm", "Sweden");
+i18n("world.kgm", "The capital of Sweden is...");
+i18n("world.kgm", "Please click on:\nSweden");
+i18n("world.kgm", "The flag of Sweden is...");
+i18n("world.kgm", "Stockholm");
+i18n("world.kgm", "Stockholm is the capital of...");
+i18n("world.kgm", "Switzerland");
+i18n("world.kgm", "The capital of Switzerland is...");
+i18n("world.kgm", "Please click on:\nSwitzerland");
+i18n("world.kgm", "The flag of Switzerland is...");
+i18n("world.kgm", "Bern");
+i18n("world.kgm", "Bern is the capital of...");
+i18n("world.kgm", "Turkey");
+i18n("world.kgm", "The capital of Turkey is...");
+i18n("world.kgm", "Please click on:\nTurkey");
+i18n("world.kgm", "The flag of Turkey is...");
+i18n("world.kgm", "Ankara");
+i18n("world.kgm", "Ankara is the capital of...");
+i18n("world.kgm", "Ukraine");
+i18n("world.kgm", "The capital of Ukraine is...");
+i18n("world.kgm", "Please click on:\nUkraine");
+i18n("world.kgm", "The flag of Ukraine is...");
+i18n("world.kgm", "Kiev");
+i18n("world.kgm", "Kiev is the capital of...");
+i18n("world.kgm", "United Kingdom");
+i18n("world.kgm", "The capital of United Kingdom is...");
+i18n("world.kgm", "Please click on:\nUnited Kingdom");
+i18n("world.kgm", "The flag of United Kingdom is...");
+i18n("world.kgm", "London");
+i18n("world.kgm", "London is the capital of...");
+i18n("world.kgm", "Canada");
+i18n("world.kgm", "The capital of Canada is...");
+i18n("world.kgm", "Please click on:\nCanada");
+i18n("world.kgm", "The flag of Canada is...");
+i18n("world.kgm", "Ottawa");
+i18n("world.kgm", "Ottawa is the capital of...");
+i18n("world.kgm", "El Salvador");
+i18n("world.kgm", "The capital of El Salvador is...");
+i18n("world.kgm", "Please click on:\nEl Salvador");
+i18n("world.kgm", "The flag of El Salvador is...");
+i18n("world.kgm", "San Salvador");
+i18n("world.kgm", "San Salvador is the capital of...");
+i18n("world.kgm", "The United States of America");
+i18n("world.kgm", "The capital of The United States of America is...");
+i18n("world.kgm", "Please click on:\nThe United States of America");
+i18n("world.kgm", "The flag of The United States of America is...");
+i18n("world.kgm", "Washington D.C.");
+i18n("world.kgm", "Washington D.C. is the capital of...");
+i18n("world.kgm", "The Bahamas");
+i18n("world.kgm", "The capital of The Bahamas is...");
+i18n("world.kgm", "Please click on:\nThe Bahamas");
+i18n("world.kgm", "The flag of The Bahamas is...");
+i18n("world.kgm", "Nassau");
+i18n("world.kgm", "Nassau is the capital of...");
+i18n("world.kgm", "The Dominican Republic");
+i18n("world.kgm", "The capital of The Dominican Republic is...");
+i18n("world.kgm", "Please click on:\nThe Dominican Republic");
+i18n("world.kgm", "The flag of The Dominican Republic is...");
+i18n("world.kgm", "Santo Domingo");
+i18n("world.kgm", "Santo Domingo is the capital of...");
+i18n("world.kgm", "Haiti");
+i18n("world.kgm", "The capital of Haiti is...");
+i18n("world.kgm", "Please click on:\nHaiti");
+i18n("world.kgm", "The flag of Haiti is...");
+i18n("world.kgm", "Port-au-Prince");
+i18n("world.kgm", "Port-au-Prince is the capital of...");
+i18n("world.kgm", "Cuba");
+i18n("world.kgm", "The capital of Cuba is...");
+i18n("world.kgm", "Please click on:\nCuba");
+i18n("world.kgm", "The flag of Cuba is...");
+i18n("world.kgm", "Havana");
+i18n("world.kgm", "Havana is the capital of...");
+i18n("world.kgm", "Jamaica");
+i18n("world.kgm", "The capital of Jamaica is...");
+i18n("world.kgm", "Please click on:\nJamaica");
+i18n("world.kgm", "The flag of Jamaica is...");
+i18n("world.kgm", "Kingston");
+i18n("world.kgm", "Kingston is the capital of...");
+i18n("world.kgm", "Dominica");
+i18n("world.kgm", "The capital of Dominica is...");
+i18n("world.kgm", "Please click on:\nDominica");
+i18n("world.kgm", "The flag of Dominica is...");
+i18n("world.kgm", "Roseau");
+i18n("world.kgm", "Roseau is the capital of...");
+i18n("world.kgm", "Barbados");
+i18n("world.kgm", "The capital of Barbados is...");
+i18n("world.kgm", "Please click on:\nBarbados");
+i18n("world.kgm", "The flag of Barbados is...");
+i18n("world.kgm", "Bridgetown");
+i18n("world.kgm", "Bridgetown is the capital of...");
+i18n("world.kgm", "Antigua and Barbuda");
+i18n("world.kgm", "The capital of Antigua and Barbuda is...");
+i18n("world.kgm", "Please click on:\nAntigua and Barbuda");
+i18n("world.kgm", "The flag of Antigua and Barbuda is...");
+i18n("world.kgm", "St. John's");
+i18n("world.kgm", "St. John's is the capital of...");
+i18n("world.kgm", "Trinidad and Tobago");
+i18n("world.kgm", "The capital of Trinidad and Tobago is...");
+i18n("world.kgm", "Please click on:\nTrinidad and Tobago");
+i18n("world.kgm", "The flag of Trinidad and Tobago is...");
+i18n("world.kgm", "Port of Spain");
+i18n("world.kgm", "Port of Spain is the capital of...");
+i18n("world.kgm", "Mexico");
+i18n("world.kgm", "The capital of Mexico is...");
+i18n("world.kgm", "Please click on:\nMexico");
+i18n("world.kgm", "The flag of Mexico is...");
+i18n("world.kgm", "Mexico City");
+i18n("world.kgm", "Mexico City is the capital of...");
+i18n("world.kgm", "Guatemala");
+i18n("world.kgm", "The capital of Guatemala is...");
+i18n("world.kgm", "Please click on:\nGuatemala");
+i18n("world.kgm", "The flag of Guatemala is...");
+i18n("world.kgm", "Guatemala City");
+i18n("world.kgm", "Guatemala City is the capital of...");
+i18n("world.kgm", "Belize");
+i18n("world.kgm", "The capital of Belize is...");
+i18n("world.kgm", "Please click on:\nBelize");
+i18n("world.kgm", "The flag of Belize is...");
+i18n("world.kgm", "Belmopan");
+i18n("world.kgm", "Belmopan is the capital of...");
+i18n("world.kgm", "Honduras");
+i18n("world.kgm", "The capital of Honduras is...");
+i18n("world.kgm", "Please click on:\nHonduras");
+i18n("world.kgm", "The flag of Honduras is...");
+i18n("world.kgm", "Tegucigalpa");
+i18n("world.kgm", "Tegucigalpa is the capital of...");
+i18n("world.kgm", "Nicaragua");
+i18n("world.kgm", "The capital of Nicaragua is...");
+i18n("world.kgm", "Please click on:\nNicaragua");
+i18n("world.kgm", "The flag of Nicaragua is...");
+i18n("world.kgm", "Managua");
+i18n("world.kgm", "Managua is the capital of...");
+i18n("world.kgm", "Costa Rica");
+i18n("world.kgm", "The capital of Costa Rica is...");
+i18n("world.kgm", "Please click on:\nCosta Rica");
+i18n("world.kgm", "The flag of Costa Rica is...");
+i18n("world.kgm", "San José");
+i18n("world.kgm", "San José is the capital of...");
+i18n("world.kgm", "Panama");
+i18n("world.kgm", "The capital of Panama is...");
+i18n("world.kgm", "Please click on:\nPanama");
+i18n("world.kgm", "The flag of Panama is...");
+i18n("world.kgm", "Panama City");
+i18n("world.kgm", "Panama City is the capital of...");
+i18n("world.kgm", "Colombia");
+i18n("world.kgm", "The capital of Colombia is...");
+i18n("world.kgm", "Please click on:\nColombia");
+i18n("world.kgm", "The flag of Colombia is...");
+i18n("world.kgm", "Bogotá");
+i18n("world.kgm", "Bogotá is the capital of...");
+i18n("world.kgm", "Venezuela");
+i18n("world.kgm", "The capital of Venezuela is...");
+i18n("world.kgm", "Please click on:\nVenezuela");
+i18n("world.kgm", "The flag of Venezuela is...");
+i18n("world.kgm", "Caracas");
+i18n("world.kgm", "Caracas is the capital of...");
+i18n("world.kgm", "Guyana");
+i18n("world.kgm", "The capital of Guyana is...");
+i18n("world.kgm", "Please click on:\nGuyana");
+i18n("world.kgm", "The flag of Guyana is...");
+i18n("world.kgm", "Georgetown");
+i18n("world.kgm", "Georgetown is the capital of...");
+i18n("world.kgm", "Suriname");
+i18n("world.kgm", "The capital of Suriname is...");
+i18n("world.kgm", "Please click on:\nSuriname");
+i18n("world.kgm", "The flag of Suriname is...");
+i18n("world.kgm", "Paramaribo");
+i18n("world.kgm", "Paramaribo is the capital of...");
+i18n("world.kgm", "French Guiana");
+i18n("world.kgm", "The capital of French Guiana is...");
+i18n("world.kgm", "Please click on:\nFrench Guiana");
+i18n("world.kgm", "The flag of French Guiana is...");
+i18n("world.kgm", "Cayenne");
+i18n("world.kgm", "Cayenne is the capital of...");
+i18n("world.kgm", "Ecuador");
+i18n("world.kgm", "The capital of Ecuador is...");
+i18n("world.kgm", "Please click on:\nEcuador");
+i18n("world.kgm", "The flag of Ecuador is...");
+i18n("world.kgm", "Quito");
+i18n("world.kgm", "Quito is the capital of...");
+i18n("world.kgm", "Peru");
+i18n("world.kgm", "The capital of Peru is...");
+i18n("world.kgm", "Please click on:\nPeru");
+i18n("world.kgm", "The flag of Peru is...");
+i18n("world.kgm", "Lima");
+i18n("world.kgm", "Lima is the capital of...");
+i18n("world.kgm", "Brazil");
+i18n("world.kgm", "The capital of Brazil is...");
+i18n("world.kgm", "Please click on:\nBrazil");
+i18n("world.kgm", "The flag of Brazil is...");
+i18n("world.kgm", "Brasilia");
+i18n("world.kgm", "Brasilia is the capital of...");
+i18n("world.kgm", "Bolivia");
+i18n("world.kgm", "The capital of Bolivia is...");
+i18n("world.kgm", "Please click on:\nBolivia");
+i18n("world.kgm", "The flag of Bolivia is...");
+i18n("world.kgm", "La Paz");
+i18n("world.kgm", "La Paz is the capital of...");
+i18n("world.kgm", "Chile");
+i18n("world.kgm", "The capital of Chile is...");
+i18n("world.kgm", "Please click on:\nChile");
+i18n("world.kgm", "The flag of Chile is...");
+i18n("world.kgm", "Santiago");
+i18n("world.kgm", "Santiago is the capital of...");
+i18n("world.kgm", "Paraguay");
+i18n("world.kgm", "The capital of Paraguay is...");
+i18n("world.kgm", "Please click on:\nParaguay");
+i18n("world.kgm", "The flag of Paraguay is...");
+i18n("world.kgm", "Asunción");
+i18n("world.kgm", "Asunción is the capital of...");
+i18n("world.kgm", "Argentina");
+i18n("world.kgm", "The capital of Argentina is...");
+i18n("world.kgm", "Please click on:\nArgentina");
+i18n("world.kgm", "The flag of Argentina is...");
+i18n("world.kgm", "Buenos Aires");
+i18n("world.kgm", "Buenos Aires is the capital of...");
+i18n("world.kgm", "Uruguay");
+i18n("world.kgm", "The capital of Uruguay is...");
+i18n("world.kgm", "Please click on:\nUruguay");
+i18n("world.kgm", "The flag of Uruguay is...");
+i18n("world.kgm", "Montevideo");
+i18n("world.kgm", "Montevideo is the capital of...");
+i18n("world.kgm", "Australia");
+i18n("world.kgm", "The capital of Australia is...");
+i18n("world.kgm", "Please click on:\nAustralia");
+i18n("world.kgm", "The flag of Australia is...");
+i18n("world.kgm", "Canberra");
+i18n("world.kgm", "Canberra is the capital of...");
+i18n("world.kgm", "New Zealand");
+i18n("world.kgm", "The capital of New Zealand is...");
+i18n("world.kgm", "Please click on:\nNew Zealand");
+i18n("world.kgm", "The flag of New Zealand is...");
+i18n("world.kgm", "Wellington");
+i18n("world.kgm", "Wellington is the capital of...");
+i18n("world.kgm", "Vatican City");
+i18n("world.kgm", "The capital of Vatican City is...");
+i18n("world.kgm", "Please click on:\nVatican City");
+i18n("world.kgm", "The flag of Vatican City is...");
+i18n("world.kgm", "Vatican City");
+i18n("world.kgm", "Vatican City is the capital of...");
+i18n("world.kgm", "Andorra");
+i18n("world.kgm", "The capital of Andorra is...");
+i18n("world.kgm", "Please click on:\nAndorra");
+i18n("world.kgm", "The flag of Andorra is...");
+i18n("world.kgm", "Andorra la Vella");
+i18n("world.kgm", "Andorra la Vella is the capital of...");
+i18n("world.kgm", "Monaco");
+i18n("world.kgm", "The capital of Monaco is...");
+i18n("world.kgm", "Please click on:\nMonaco");
+i18n("world.kgm", "The flag of Monaco is...");
+i18n("world.kgm", "Monaco-Ville");
+i18n("world.kgm", "Monaco-Ville is the capital of...");
+i18n("world.kgm", "China");
+i18n("world.kgm", "The capital of China is...");
+i18n("world.kgm", "Please click on:\nChina");
+i18n("world.kgm", "The flag of China is...");
+i18n("world.kgm", "Beijing");
+i18n("world.kgm", "Beijing is the capital of...");
+i18n("world.kgm", "India");
+i18n("world.kgm", "The capital of India is...");
+i18n("world.kgm", "Please click on:\nIndia");
+i18n("world.kgm", "The flag of India is...");
+i18n("world.kgm", "New Delhi");
+i18n("world.kgm", "New Delhi is the capital of...");
+i18n("world.kgm", "Sri Lanka");
+i18n("world.kgm", "The capital of Sri Lanka is...");
+i18n("world.kgm", "Please click on:\nSri Lanka");
+i18n("world.kgm", "The flag of Sri Lanka is...");
+i18n("world.kgm", "Colombo and Sri Jayewardenepura");
+i18n("world.kgm", "Colombo and Sri Jayewardenepura is the capital of...");
+i18n("world.kgm", "Mongolia");
+i18n("world.kgm", "The capital of Mongolia is...");
+i18n("world.kgm", "Please click on:\nMongolia");
+i18n("world.kgm", "The flag of Mongolia is...");
+i18n("world.kgm", "Ulaanbaatar");
+i18n("world.kgm", "Ulaanbaatar is the capital of...");
+i18n("world.kgm", "Kazakhstan");
+i18n("world.kgm", "The capital of Kazakhstan is...");
+i18n("world.kgm", "Please click on:\nKazakhstan");
+i18n("world.kgm", "The flag of Kazakhstan is...");
+i18n("world.kgm", "Astana");
+i18n("world.kgm", "Astana is the capital of...");
+i18n("world.kgm", "Japan");
+i18n("world.kgm", "The capital of Japan is...");
+i18n("world.kgm", "Please click on:\nJapan");
+i18n("world.kgm", "The flag of Japan is...");
+i18n("world.kgm", "Tokyo");
+i18n("world.kgm", "Tokyo is the capital of...");
+i18n("world.kgm", "Myanmar");
+i18n("world.kgm", "The capital of Myanmar is...");
+i18n("world.kgm", "Please click on:\nMyanmar");
+i18n("world.kgm", "The flag of Myanmar is...");
+i18n("world.kgm", "Naypyidaw");
+i18n("world.kgm", "Naypyidaw is the capital of...");
+i18n("world.kgm", "Nepal");
+i18n("world.kgm", "The capital of Nepal is...");
+i18n("world.kgm", "Please click on:\nNepal");
+i18n("world.kgm", "The flag of Nepal is...");
+i18n("world.kgm", "Kathmandu");
+i18n("world.kgm", "Kathmandu is the capital of...");
+i18n("world.kgm", "Bhutan");
+i18n("world.kgm", "The capital of Bhutan is...");
+i18n("world.kgm", "Please click on:\nBhutan");
+i18n("world.kgm", "The flag of Bhutan is...");
+i18n("world.kgm", "Thimphu");
+i18n("world.kgm", "Thimphu is the capital of...");
+i18n("world.kgm", "Indonesia");
+i18n("world.kgm", "The capital of Indonesia is...");
+i18n("world.kgm", "Please click on:\nIndonesia");
+i18n("world.kgm", "The flag of Indonesia is...");
+i18n("world.kgm", "Jakarta");
+i18n("world.kgm", "Jakarta is the capital of...");
+i18n("world.kgm", "Malaysia");
+i18n("world.kgm", "The capital of Malaysia is...");
+i18n("world.kgm", "Please click on:\nMalaysia");
+i18n("world.kgm", "The flag of Malaysia is...");
+i18n("world.kgm", "Kuala Lumpur");
+i18n("world.kgm", "Kuala Lumpur is the capital of...");
+i18n("world.kgm", "Bangladesh");
+i18n("world.kgm", "The capital of Bangladesh is...");
+i18n("world.kgm", "Please click on:\nBangladesh");
+i18n("world.kgm", "The flag of Bangladesh is...");
+i18n("world.kgm", "Dhaka");
+i18n("world.kgm", "Dhaka is the capital of...");
+i18n("world.kgm", "Cyprus");
+i18n("world.kgm", "The capital of Cyprus is...");
+i18n("world.kgm", "Please click on:\nCyprus");
+i18n("world.kgm", "The flag of Cyprus is...");
+i18n("world.kgm", "Nicosia");
+i18n("world.kgm", "Nicosia is the capital of...");
+i18n("world.kgm", "Afghanistan");
+i18n("world.kgm", "The capital of Afghanistan is...");
+i18n("world.kgm", "Please click on:\nAfghanistan");
+i18n("world.kgm", "The flag of Afghanistan is...");
+i18n("world.kgm", "Kabul");
+i18n("world.kgm", "Kabul is the capital of...");
+i18n("world.kgm", "Azerbaijan");
+i18n("world.kgm", "The capital of Azerbaijan is...");
+i18n("world.kgm", "Please click on:\nAzerbaijan");
+i18n("world.kgm", "The flag of Azerbaijan is...");
+i18n("world.kgm", "Baku");
+i18n("world.kgm", "Baku is the capital of...");
+i18n("world.kgm", "Armenia");
+i18n("world.kgm", "The capital of Armenia is...");
+i18n("world.kgm", "Please click on:\nArmenia");
+i18n("world.kgm", "The flag of Armenia is...");
+i18n("world.kgm", "Yerevan");
+i18n("world.kgm", "Yerevan is the capital of...");
+i18n("world.kgm", "Bahrain");
+i18n("world.kgm", "The capital of Bahrain is...");
+i18n("world.kgm", "Please click on:\nBahrain");
+i18n("world.kgm", "The flag of Bahrain is...");
+i18n("world.kgm", "Manama");
+i18n("world.kgm", "Manama is the capital of...");
+i18n("world.kgm", "Georgia");
+i18n("world.kgm", "The capital of Georgia is...");
+i18n("world.kgm", "Please click on:\nGeorgia");
+i18n("world.kgm", "The flag of Georgia is...");
+i18n("world.kgm", "Tbilisi");
+i18n("world.kgm", "Tbilisi is the capital of...");
+i18n("world.kgm", "Turkmenistan");
+i18n("world.kgm", "The capital of Turkmenistan is...");
+i18n("world.kgm", "Please click on:\nTurkmenistan");
+i18n("world.kgm", "The flag of Turkmenistan is...");
+i18n("world.kgm", "Ashgabat");
+i18n("world.kgm", "Ashgabat is the capital of...");
+i18n("world.kgm", "Uzbekistan");
+i18n("world.kgm", "The capital of Uzbekistan is...");
+i18n("world.kgm", "Please click on:\nUzbekistan");
+i18n("world.kgm", "The flag of Uzbekistan is...");
+i18n("world.kgm", "Tashkent");
+i18n("world.kgm", "Tashkent is the capital of...");
+i18n("world.kgm", "Kyrgyzstan");
+i18n("world.kgm", "The capital of Kyrgyzstan is...");
+i18n("world.kgm", "Please click on:\nKyrgyzstan");
+i18n("world.kgm", "The flag of Kyrgyzstan is...");
+i18n("world.kgm", "Bishkek");
+i18n("world.kgm", "Bishkek is the capital of...");
+i18n("world.kgm", "Tajikistan");
+i18n("world.kgm", "The capital of Tajikistan is...");
+i18n("world.kgm", "Please click on:\nTajikistan");
+i18n("world.kgm", "The flag of Tajikistan is...");
+i18n("world.kgm", "Dushanbe");
+i18n("world.kgm", "Dushanbe is the capital of...");
+i18n("world.kgm", "Pakistan");
+i18n("world.kgm", "The capital of Pakistan is...");
+i18n("world.kgm", "Please click on:\nPakistan");
+i18n("world.kgm", "The flag of Pakistan is...");
+i18n("world.kgm", "Islamabad");
+i18n("world.kgm", "Islamabad is the capital of...");
+i18n("world.kgm", "Laos");
+i18n("world.kgm", "The capital of Laos is...");
+i18n("world.kgm", "Please click on:\nLaos");
+i18n("world.kgm", "The flag of Laos is...");
+i18n("world.kgm", "Vientiane");
+i18n("world.kgm", "Vientiane is the capital of...");
+i18n("world.kgm", "Cambodia");
+i18n("world.kgm", "The capital of Cambodia is...");
+i18n("world.kgm", "Please click on:\nCambodia");
+i18n("world.kgm", "The flag of Cambodia is...");
+i18n("world.kgm", "Phnom Penh");
+i18n("world.kgm", "Phnom Penh is the capital of...");
+i18n("world.kgm", "East Timor");
+i18n("world.kgm", "The capital of East Timor is...");
+i18n("world.kgm", "Please click on:\nEast Timor");
+i18n("world.kgm", "The flag of East Timor is...");
+i18n("world.kgm", "Dili");
+i18n("world.kgm", "Dili is the capital of...");
+i18n("world.kgm", "Brunei");
+i18n("world.kgm", "The capital of Brunei is...");
+i18n("world.kgm", "Please click on:\nBrunei");
+i18n("world.kgm", "The flag of Brunei is...");
+i18n("world.kgm", "Bandar Seri Begawan");
+i18n("world.kgm", "Bandar Seri Begawan is the capital of...");
+i18n("world.kgm", "Philippines");
+i18n("world.kgm", "The capital of Philippines is...");
+i18n("world.kgm", "Please click on:\nPhilippines");
+i18n("world.kgm", "The flag of Philippines is...");
+i18n("world.kgm", "Manila");
+i18n("world.kgm", "Manila is the capital of...");
+i18n("world.kgm", "Thailand");
+i18n("world.kgm", "The capital of Thailand is...");
+i18n("world.kgm", "Please click on:\nThailand");
+i18n("world.kgm", "The flag of Thailand is...");
+i18n("world.kgm", "Bangkok");
+i18n("world.kgm", "Bangkok is the capital of...");
+i18n("world.kgm", "Vietnam");
+i18n("world.kgm", "The capital of Vietnam is...");
+i18n("world.kgm", "Please click on:\nVietnam");
+i18n("world.kgm", "The flag of Vietnam is...");
+i18n("world.kgm", "Hanoi");
+i18n("world.kgm", "Hanoi is the capital of...");
+i18n("world.kgm", "Republic of China (Taiwan)");
+i18n("world.kgm", "The capital of Republic of China (Taiwan) is...");
+i18n("world.kgm", "Please click on:\nRepublic of China (Taiwan)");
+i18n("world.kgm", "The flag of Republic of China (Taiwan) is...");
+i18n("world.kgm", "Taipei");
+i18n("world.kgm", "Taipei is the capital of...");
+i18n("world.kgm", "Singapore");
+i18n("world.kgm", "The capital of Singapore is...");
+i18n("world.kgm", "Please click on:\nSingapore");
+i18n("world.kgm", "The flag of Singapore is...");
+i18n("world.kgm", "Singapore");
+i18n("world.kgm", "Singapore is the capital of...");
+i18n("world.kgm", "Democratic People's Republic of Korea");
+i18n("world.kgm", "The capital of Democratic People's Republic of Korea is...");
+i18n("world.kgm", "Please click on:\nDemocratic People's Republic of Korea");
+i18n("world.kgm", "The flag of Democratic People's Republic of Korea is...");
+i18n("world.kgm", "Pyeongyang");
+i18n("world.kgm", "Pyeongyang is the capital of...");
+i18n("world.kgm", "Republic of Korea");
+i18n("world.kgm", "The capital of Republic of Korea is...");
+i18n("world.kgm", "Please click on:\nRepublic of Korea");
+i18n("world.kgm", "The flag of Republic of Korea is...");
+i18n("world.kgm", "Seoul");
+i18n("world.kgm", "Seoul is the capital of...");
+i18n("world.kgm", "Fiji");
+i18n("world.kgm", "The capital of Fiji is...");
+i18n("world.kgm", "Please click on:\nFiji");
+i18n("world.kgm", "The flag of Fiji is...");
+i18n("world.kgm", "Suva");
+i18n("world.kgm", "Suva is the capital of...");
+i18n("world.kgm", "Tonga");
+i18n("world.kgm", "The capital of Tonga is...");
+i18n("world.kgm", "Please click on:\nTonga");
+i18n("world.kgm", "The flag of Tonga is...");
+i18n("world.kgm", "Nuku'alofa");
+i18n("world.kgm", "Nuku'alofa is the capital of...");
+i18n("world.kgm", "Papua New Guinea");
+i18n("world.kgm", "The capital of Papua New Guinea is...");
+i18n("world.kgm", "Please click on:\nPapua New Guinea");
+i18n("world.kgm", "The flag of Papua New Guinea is...");
+i18n("world.kgm", "Port Moresby");
+i18n("world.kgm", "Port Moresby is the capital of...");
+i18n("world.kgm", "Greenland (Denmark)");
+i18n("world.kgm", "The capital of Greenland (Denmark) is...");
+i18n("world.kgm", "Please click on:\nGreenland (Denmark)");
+i18n("world.kgm", "The flag of Greenland (Denmark) is...");
+i18n("world.kgm", "Nuuk");
+i18n("world.kgm", "Nuuk is the capital of...");
diff --git a/kgeography/src/mapwidget.cpp b/kgeography/src/mapwidget.cpp
new file mode 100644
index 00000000..754179ef
--- /dev/null
+++ b/kgeography/src/mapwidget.cpp
@@ -0,0 +1,332 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <math.h> // for rint
+#include <stdlib.h>
+
+#include <kapplication.h>
+#include <klocale.h>
+
+#include <qcursor.h>
+#include <qpainter.h>
+
+#include "mapwidget.h"
+
+mapWidget::mapWidget(QWidget *parent) : QWidget(parent)
+{
+ p_wantZoom = false;
+ p_zooming = false;
+ p_wantMove = false;
+ p_moving = false;
+ p_zoomW = 0;
+ p_zoomH = 0;
+ p_scrollBarWidth = 0;
+ p_scrollBarHeight = 0;
+ p_scrollBarsVisible = 0;
+}
+
+void mapWidget::init(const QString &path, int scrollBarWidth, int scrollBarHeight)
+{
+ p_scrollBarWidth = scrollBarWidth;
+ p_scrollBarHeight = scrollBarHeight;
+ p_originalImage.load(path);
+ emit updateMaximumSize(p_originalImage.width(), p_originalImage.height());
+ setOriginalImage();
+}
+
+void mapWidget::setMapMove(bool b)
+{
+ p_wantMove = b;
+ if (b)
+ {
+ emit setZoomActionChecked(false);
+ p_wantZoom = false;
+ }
+}
+
+void mapWidget::setMapZoom(bool b)
+{
+ p_wantZoom = b;
+ if (b)
+ {
+ emit setMoveActionChecked(false);
+ p_wantMove = false;
+ }
+}
+
+QSize mapWidget::sizeHint() const
+{
+ return maximumSize();
+}
+
+void mapWidget::updateHPosition(int value)
+{
+ p_zoomX = value;
+ updateShownImage();
+}
+
+void mapWidget::updateVPosition(int value)
+{
+ p_zoomY = value;
+ updateShownImage();
+}
+
+void mapWidget::mousePressEvent(QMouseEvent *e)
+{
+ if (e -> button() == Qt::LeftButton)
+ {
+ if (p_wantZoom)
+ {
+ p_initial = e -> pos();
+ p_prev = e -> pos();
+ p_zooming = true;
+ }
+ else if (p_wantMove)
+ {
+ p_initial = e -> pos();
+ setCursor(Qt::SizeAllCursor);
+ p_moving = true;
+ }
+ else
+ {
+ QRgb rgb;
+ QImage *currentImage;
+
+ currentImage = getCurrentImage();
+
+ rgb = currentImage -> pixel(e -> x(), e -> y());
+ emit clicked(rgb, e -> pos());
+ }
+ }
+ else
+ {
+ if (p_wantZoom)
+ {
+ setOriginalImage();
+ }
+ else e->ignore(); // that makes the event go to mapasker and clear the popup
+ }
+}
+
+void mapWidget::mouseMoveEvent(QMouseEvent *e)
+{
+ if (p_zooming)
+ {
+ QPainter p(this);
+
+ p.setRasterOp(Qt::XorROP);
+ p.setPen(QPen(Qt::white, 1, Qt::DotLine));
+
+ // remove previous rectangle
+ p.drawRect(QRect(p_initial, p_prev));
+ // put new rectangle
+ p.drawRect(QRect(p_initial, e -> pos()));
+
+ p_prev = e -> pos();
+ }
+ else if (p_moving)
+ {
+ int oW, oH;
+ int auxX, auxY;
+ bool updatePos = false;
+
+ // some shortcuts :-D
+ oW = p_originalImage.width();
+ oH = p_originalImage.height();
+
+ // where next x and y will be
+ auxX = (int) ((p_initial.x() - e -> pos().x()) * p_lastFactorX);
+ if (abs(auxX) > 0)
+ {
+ p_zoomX += auxX;
+ updatePos = true;
+ }
+
+ auxY = (int) ((p_initial.y() - e -> pos().y()) * p_lastFactorY);
+ if (abs(auxY) > 0)
+ {
+ p_zoomY += auxY;
+ updatePos = true;
+ }
+
+ // make sure we don't go out of bounds
+ if (p_zoomX < 0) p_zoomX = 0;
+ if (p_zoomY < 0) p_zoomY = 0;
+ if (p_zoomX > oW - width() * p_lastFactorX) p_zoomX = (int)rint(oW - width() * p_lastFactorX);
+ if (p_zoomY > oH - height() * p_lastFactorY) p_zoomY = (int)rint(oH - height() * p_lastFactorY);
+
+ if (updatePos) p_initial = e -> pos();
+
+ updateShownImage();
+ emit updatePosition(p_zoomX, p_zoomY);
+ }
+}
+
+void mapWidget::mouseReleaseEvent(QMouseEvent *e)
+{
+ if (p_zooming)
+ {
+ QPainter p(this);
+ QRect r(p_initial, e -> pos());
+
+ p.setRasterOp(Qt::XorROP);
+ p.setPen(QPen(Qt::white, 1, Qt::DotLine));
+ // remove previous rectangle
+ p.drawRect(r);
+
+ r = r.normalize();
+
+ p_zoomX += (int)rint(r.left() * p_lastFactorX);
+ p_zoomY += (int)rint(r.top() * p_lastFactorY);
+
+ p_zoomW = (int)rint(r.width() * p_lastFactorX);
+ p_zoomH = (int)rint(r.height() * p_lastFactorY);
+
+ if (r.right() > width()) p_zoomW = width() - p_zoomX;
+ if (r.height() > height()) p_zoomH = height() - p_zoomY;
+ if (p_zoomX < 0)
+ {
+ p_zoomX = 0;
+ p_zoomW = (int)rint(r.right() * p_lastFactorX);
+ }
+ if (p_zoomY < 0)
+ {
+ p_zoomY = 0;
+ p_zoomH = (int)rint(r.bottom() * p_lastFactorY);
+ }
+
+ p_zooming = false;
+
+ if (p_zoomW > 1 && p_zoomH > 1)
+ {
+ double factorX, factorY;
+ int maxX, maxY;
+
+ updateShownImage();
+
+ factorX = (double)p_zoomW / width();
+ factorY = (double)p_zoomH / height();
+
+ maxX = (int)rint(p_originalImage.width() / factorX);
+ maxY = (int)rint(p_originalImage.height() / factorY);
+ setMaximumSize(maxX, maxY);
+
+ emit updateVisibleSize(p_zoomW, p_zoomH);
+ emit updatePosition(p_zoomX, p_zoomY);
+
+ p_lastFactorX = factorX;
+ p_lastFactorY = factorY;
+
+ emitMoveActionEnabled();
+ }
+ }
+ else if (p_moving)
+ {
+ unsetCursor();
+ p_moving = false;
+ }
+}
+
+void mapWidget::resizeEvent(QResizeEvent *e)
+{
+ if (p_originalImage.isNull()) return;
+
+ p_zoomW = (int)rint(e -> size().width() * p_lastFactorX);
+ p_zoomH = (int)rint(e -> size().height() * p_lastFactorY);
+
+ emit updateVisibleSize(p_zoomW, p_zoomH);
+ updateShownImage();
+ emitMoveActionEnabled();
+}
+
+void mapWidget::emitMoveActionEnabled()
+{
+ int w, h;
+
+ w = p_zoomW;
+ h = p_zoomH;
+ if (p_scrollBarsVisible)
+ {
+ w += p_scrollBarWidth;
+ h += p_scrollBarHeight;
+ }
+
+ if (w < maximumWidth() * p_lastFactorX || h < maximumHeight() * p_lastFactorY)
+ {
+ p_scrollBarsVisible = true;
+ emit setMoveActionEnabled(true);
+ }
+ else
+ {
+ p_scrollBarsVisible = false;
+ emit setMoveActionChecked(false);
+ emit setMoveActionEnabled(false);
+ }
+}
+
+QImage *mapWidget::getCurrentImage()
+{
+ if (p_zoomedImageShown.isNull()) return &p_originalImage;
+ else return &p_zoomedImageShown;
+}
+
+void mapWidget::setOriginalImage()
+{
+ setPaletteBackgroundPixmap(p_originalImage);
+ erase();
+ p_zoomedImageShown = QImage();
+ p_lastFactorX = 1;
+ p_lastFactorY = 1;
+ p_zoomX = 0;
+ p_zoomY = 0;
+
+ if (p_zoomH != 0 && p_zoomW != 0)
+ {
+ /* setting the original image not when opening the app */
+ p_zoomW = width();
+ p_zoomH = height();
+ }
+
+ p_oldZoomX = p_zoomX;
+ p_oldZoomY = p_zoomY;
+ p_oldZoomW = p_zoomW;
+ p_oldZoomH = p_zoomH;
+ p_oldSize = size();
+
+ emit updatePosition(0, 0);
+ emit updateVisibleSize(p_zoomW, p_zoomH);
+ setMaximumSize(p_originalImage.size());
+ emitMoveActionEnabled();
+}
+
+void mapWidget::updateShownImage()
+{
+ if (p_originalImage.isNull()) return;
+
+ if (p_oldZoomX != p_zoomX || p_oldZoomY != p_zoomY || p_oldZoomW != p_zoomW || p_oldZoomH != p_zoomH || size() != p_oldSize)
+ {
+ p_zoomedImageShown = p_originalImage.copy(p_zoomX, p_zoomY, p_zoomW, p_zoomH);
+ p_zoomedImageShown = p_zoomedImageShown.scale(size());
+ setPaletteBackgroundPixmap(p_zoomedImageShown);
+ erase();
+ p_oldZoomX = p_zoomX;
+ p_oldZoomY = p_zoomY;
+ p_oldZoomW = p_zoomW;
+ p_oldZoomH = p_zoomH;
+ p_oldSize = size();
+ }
+}
+
+QSize mapWidget::mapSize() const
+{
+ return p_originalImage.size();
+}
+
+#include "mapwidget.moc"
diff --git a/kgeography/src/mapwidget.h b/kgeography/src/mapwidget.h
new file mode 100644
index 00000000..282fa1b4
--- /dev/null
+++ b/kgeography/src/mapwidget.h
@@ -0,0 +1,69 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef MAPWIDGET_H
+#define MAPWIDGET_H
+
+#include <qimage.h>
+#include <qpoint.h>
+#include <qwidget.h>
+
+class mapWidget : public QWidget
+{
+Q_OBJECT
+ public:
+ mapWidget(QWidget *parent);
+
+ void init(const QString &path, int scrollBarWidth, int scrollBarHeight);
+
+ void setMapMove(bool b);
+ void setMapZoom(bool b);
+
+ QSize sizeHint() const;
+ QSize mapSize() const;
+
+ public slots:
+ void updateHPosition(int value);
+ void updateVPosition(int value);
+ void setOriginalImage();
+
+ signals:
+ void setMoveActionChecked(bool b);
+ void setZoomActionChecked(bool b);
+ void setMoveActionEnabled(bool b);
+ void clicked(QRgb, const QPoint&);
+ void updatePosition(int X, int Y);
+ void updateVisibleSize(int w, int h);
+ void updateMaximumSize(int w, int h);
+
+ protected:
+ void mousePressEvent(QMouseEvent *e);
+ void mouseMoveEvent(QMouseEvent *e);
+ void mouseReleaseEvent(QMouseEvent *e);
+ void resizeEvent(QResizeEvent *e);
+
+ private:
+ void emitMoveActionEnabled();
+ QImage *getCurrentImage();
+ void updateShownImage();
+
+ QImage p_originalImage, p_zoomedImageShown;
+ bool p_zooming, p_wantZoom, p_moving, p_wantMove;
+ QPoint p_initial, p_prev; // rubberbanding and moving
+ int p_zoomX, p_zoomY, p_zoomW, p_zoomH;
+ double p_lastFactorX, p_lastFactorY;
+ // useful to not do that many updateShownImage
+ QSize p_oldSize;
+ int p_oldZoomX, p_oldZoomY, p_oldZoomW, p_oldZoomH;
+ int p_scrollBarWidth, p_scrollBarHeight;
+ bool p_scrollBarsVisible;
+};
+
+#endif
diff --git a/kgeography/src/mypopup.cpp b/kgeography/src/mypopup.cpp
new file mode 100644
index 00000000..c7dede67
--- /dev/null
+++ b/kgeography/src/mypopup.cpp
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+#include "mypopup.h"
+
+
+myPopup::myPopup(QWidget *parent, const QString &text, const QString &text2, const QString &flagFile) : QFrame(parent)
+{
+ QHBoxLayout *lay = new QHBoxLayout(this);
+ lay -> setMargin(4);
+ lay -> setSpacing(4);
+
+ QWidget *vbox = new QWidget(this);
+ lay -> addWidget(vbox);
+ QVBoxLayout *vboxLayout = new QVBoxLayout(vbox);
+ vboxLayout -> setMargin(0);
+ vboxLayout -> setSpacing(0);
+ QLabel *l = new QLabel(text, vbox);
+ vboxLayout -> addWidget(l);
+
+ if (!text2.isNull())
+ {
+ QLabel *l2 = new QLabel(text2, vbox);
+ l2 -> setAlignment(Qt::AlignCenter);
+ vboxLayout -> addWidget(l2);
+ }
+
+ if (!flagFile.isNull())
+ {
+ QLabel *flag = new QLabel(this);
+ lay -> addWidget(flag);
+ QImage flagImg(flagFile);
+ flag -> setPixmap(flagImg.smoothScale(flagImg.width() / 5, flagImg. height() / 5));
+ flag -> setAlignment(Qt::AlignCenter);
+ }
+
+ l -> setAlignment(Qt::AlignCenter);
+ QFont f = l -> font();
+ f.setBold(true);
+ l -> setFont(f);
+
+
+ setFrameStyle(QFrame::Box | QFrame::Plain);
+ setLineWidth(2);
+
+ setFixedSize(sizeHint());
+}
+
+void myPopup::mousePressEvent(QMouseEvent *)
+{
+ emit deleteMe();
+}
+
+#include "mypopup.moc"
diff --git a/kgeography/src/mypopup.h b/kgeography/src/mypopup.h
new file mode 100644
index 00000000..3b0dd421
--- /dev/null
+++ b/kgeography/src/mypopup.h
@@ -0,0 +1,31 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef MYPOPUP_H
+#define MYPOPUP_H
+
+#include <qframe.h>
+
+class myPopup : public QFrame
+{
+Q_OBJECT
+ friend class popupManager;
+
+ private:
+ myPopup(QWidget *parent, const QString &text, const QString &text2 = QString::null, const QString &flagFile = QString::null);
+
+ signals:
+ void deleteMe();
+
+ protected:
+ void mousePressEvent(QMouseEvent *);
+};
+
+#endif
diff --git a/kgeography/src/popupmanager.cpp b/kgeography/src/popupmanager.cpp
new file mode 100644
index 00000000..4b19d4d5
--- /dev/null
+++ b/kgeography/src/popupmanager.cpp
@@ -0,0 +1,67 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include "mypopup.h"
+#include "popupmanager.h"
+
+popupManager::popupManager(QWidget *parent)
+{
+ p_parent = parent;
+ p_mp = 0;
+}
+
+void popupManager::show(const QString &text, const QString &text2, const QPoint &p, const QString &flagFile)
+{
+ delete p_mp;
+
+ p_mp = new myPopup(p_parent, text, text2, flagFile);
+ init(p);
+}
+
+void popupManager::show(const QString &text, const QString &text2, const QPoint &p)
+{
+ delete p_mp;
+
+ p_mp = new myPopup(p_parent, text, text2);
+ init(p);
+}
+
+void popupManager::show(const QString &text, const QPoint &p)
+{
+ delete p_mp;
+
+ p_mp = new myPopup(p_parent, text);
+ init(p);
+}
+
+void popupManager::clear()
+{
+ if (p_mp)
+ {
+ p_mp -> deleteLater();
+ p_mp = 0;
+ }
+}
+
+void popupManager::init(const QPoint &p)
+{
+ int x, y, maxX, maxY;
+ maxX = p_parent -> width() - p_mp -> width();
+ maxY = p_parent -> height() - p_mp -> height();
+ if (p.x() < maxX) x = p.x();
+ else x = maxX;
+ if (p.y() < maxY) y = p.y();
+ else y = maxY;
+ p_mp -> move(x, y);
+ p_mp -> show();
+ connect(p_mp, SIGNAL(deleteMe()), this, SLOT(clear()));
+}
+
+#include "popupmanager.moc"
diff --git a/kgeography/src/popupmanager.h b/kgeography/src/popupmanager.h
new file mode 100644
index 00000000..8fdfeef7
--- /dev/null
+++ b/kgeography/src/popupmanager.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * Copyright (C) 2004-2005 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#ifndef POPUPMANAGER_H
+#define POPUPMANAGER_H
+
+#include <qobject.h>
+
+class QWidget;
+
+class myPopup;
+
+class popupManager : public QObject
+{
+Q_OBJECT
+ public:
+ popupManager(QWidget *parent);
+
+ // shows text at p and the flag
+ void show(const QString &text, const QString &text2, const QPoint &p, const QString &flagFile);
+
+ // shows text at p
+ void show(const QString &text, const QString &text2, const QPoint &p);
+
+ // shows text at p
+ void show(const QString &text, const QPoint &p);
+
+ public slots:
+ void clear();
+
+ private:
+ void init(const QPoint &p);
+
+ myPopup *p_mp;
+ QWidget *p_parent;
+};
+
+#endif
diff --git a/kgeography/src/script.cpp b/kgeography/src/script.cpp
new file mode 100644
index 00000000..b23d31d0
--- /dev/null
+++ b/kgeography/src/script.cpp
@@ -0,0 +1,86 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Albert Astals Cid *
+ * tsdgeos@terra.es *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ ***************************************************************************/
+
+#include <stdio.h>
+
+#include <qdir.h>
+#include <qdom.h>
+#include <qstring.h>
+#include <qstringlist.h>
+
+int main(int argc, char *argv[])
+{
+ if (argc != 3)
+ {
+ qDebug("Usage: ./script dirWithkgmFiles fileToOutputTranslations");
+ return 1;
+ }
+
+ QDir d(argv[1], "*.kgm");
+ if (!d.exists()) return 2;
+
+ QFile *output = new QFile(argv[2]);
+ output->open(IO_WriteOnly | IO_Truncate);
+ QTextStream os(output);
+ os.setEncoding(QTextStream::UnicodeUTF8);
+
+ QStringList files = d.entryList();
+ QStringList::const_iterator it;
+ QDomDocument dd;
+
+ for (it = files.begin(); it != files.end(); ++it)
+ {
+ QFile *f = new QFile(d.absPath() + "/" + *it);
+ f -> open(IO_ReadOnly);
+ dd.setContent(f);
+
+ QDomNode n, n2, n3, n4, n5;
+ QDomNodeList nodes = dd.firstChild().childNodes();
+ for (uint i = 0; i < nodes.count(); i++)
+ {
+ n = nodes.item(i);
+ if (n.nodeName() == "name")
+ {
+ os << "i18n(\"" << *it << "\", \"" << n.firstChild().nodeValue() << "\");\n";
+ os << "i18n(\"" << *it << "\", \"<qt>Current map:<br><b>" << n.firstChild().nodeValue() << "</b></qt>\");\n";
+ }
+ else if (n.nodeName() == "division")
+ {
+ n2 = n.namedItem("name");
+ os << "i18n(\"" << *it << "\", \"" << n2.firstChild().nodeValue() << "\");\n";
+
+ n3 = n.namedItem("ignore");
+ if (n3.isNull() || (n3.firstChild().nodeValue() != "yes" && n3.firstChild().nodeValue() != "allowClickMode"))
+ {
+ os << "i18n(\"" << *it << "\", \"The capital of " << n2.firstChild().nodeValue() << " is...\");\n";
+ os << "i18n(\"" << *it << "\", \"Please click on:\\n" << n2.firstChild().nodeValue() << "\");\n";
+
+ n4 = n.namedItem("flag");
+ if (!n4.isNull())
+ {
+ os << "i18n(\"" << *it << "\", \"The flag of " << n2.firstChild().nodeValue() << " is...\");\n";
+ }
+
+ n5 = n.namedItem("capital");
+ os << "i18n(\"" << *it << "\", \"" << n5.firstChild().nodeValue() << "\");\n";
+ os << "i18n(\"" << *it << "\", \"" << n5.firstChild().nodeValue() << " is the capital of...\");\n";
+ }
+ else if (n3.firstChild().nodeValue() == "allowClickMode")
+ {
+ os << "i18n(\"" << *it << "\", \"Please click on:\\n" << n2.firstChild().nodeValue() << "\");\n";
+ }
+ }
+ }
+
+ f -> close();
+ delete f;
+ }
+ output->close();
+}
diff --git a/kgeography/src/settings.kcfgc b/kgeography/src/settings.kcfgc
new file mode 100644
index 00000000..8cbf2bf2
--- /dev/null
+++ b/kgeography/src/settings.kcfgc
@@ -0,0 +1,5 @@
+# Code generation options for kconfig_compiler
+File=kgeography.kcfg
+ClassName=kgeographySettings
+Singleton=true
+Mutators=true