summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDidier Raboud <odyx@debian.org>2012-12-28 23:06:12 +0100
committerDidier Raboud <odyx@debian.org>2012-12-28 23:06:12 +0100
commit1b4208cdc5143cfc8f46da063a1a991795d7f307 (patch)
tree53817bb71f0b77752bbd506c79ac2620e61d183f /src
parentf4c6f49b2fd01de2d6daff5ec1b9c181c39d09b7 (diff)
downloadcolobot-1b4208cdc5143cfc8f46da063a1a991795d7f307.tar.gz
colobot-1b4208cdc5143cfc8f46da063a1a991795d7f307.tar.bz2
colobot-1b4208cdc5143cfc8f46da063a1a991795d7f307.zip
Implement language Char for level files
This currently lacks fallback to an existing entry for non-translated entries
Diffstat (limited to 'src')
-rw-r--r--src/app/app.cpp45
-rw-r--r--src/app/app.h1
-rw-r--r--src/object/robotmain.cpp8
-rw-r--r--src/ui/maindialog.cpp20
4 files changed, 59 insertions, 15 deletions
diff --git a/src/app/app.cpp b/src/app/app.cpp
index 32f68e1..1e577ca 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -1412,6 +1412,32 @@ Language CApplication::GetLanguage()
return m_language;
}
+char CApplication::GetLanguageChar()
+{
+ char langChar = 'E';
+ switch (m_language)
+ {
+ default:
+ case LANGUAGE_ENV:
+ case LANGUAGE_ENGLISH:
+ langChar = 'E';
+ break;
+
+ case LANGUAGE_GERMAN:
+ langChar = 'D';
+ break;
+
+ case LANGUAGE_FRENCH:
+ langChar = 'F';
+ break;
+
+ case LANGUAGE_POLISH:
+ langChar = 'P';
+ break;
+ }
+ return langChar;
+}
+
void CApplication::SetLanguage(Language language)
{
m_language = language;
@@ -1445,7 +1471,24 @@ void CApplication::SetLanguage(Language language)
if (locale.empty())
{
- GetLogger()->Trace("SetLanguage: Inherit LANGUAGE=%s from environment\n", getenv("LANGUAGE"));
+ char *envLang = getenv("LANGUAGE");
+ if (strncmp(envLang,"en",2) == 0)
+ {
+ m_language = LANGUAGE_ENGLISH;
+ }
+ else if (strncmp(envLang,"de",2) == 0)
+ {
+ m_language = LANGUAGE_GERMAN;
+ }
+ else if (strncmp(envLang,"fr",2) == 0)
+ {
+ m_language = LANGUAGE_FRENCH;
+ }
+ else if (strncmp(envLang,"po",2) == 0)
+ {
+ m_language = LANGUAGE_POLISH;
+ }
+ GetLogger()->Trace("SetLanguage: Inherit LANGUAGE=%s from environment\n", envLang);
}
else
{
diff --git a/src/app/app.h b/src/app/app.h
index 20d07df..2da20d3 100644
--- a/src/app/app.h
+++ b/src/app/app.h
@@ -294,6 +294,7 @@ public:
//! Management of language
//@{
Language GetLanguage();
+ char GetLanguageChar();
void SetLanguage(Language language);
//@}
diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp
index d5805d0..aa2fe22 100644
--- a/src/object/robotmain.cpp
+++ b/src/object/robotmain.cpp
@@ -3808,16 +3808,16 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
}
}
- // TODO: language letters
- sprintf(op, "Title.%c", 'E' /*GetLanguageLetter()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_title);
- sprintf(op, "Resume.%c", 'E' /*GetLanguageLetter()*/);
+ sprintf(op, "Resume.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_resume);
- sprintf(op, "ScriptName.%c", 'E' /*GetLanguageLetter()*/);
+ sprintf(op, "ScriptName.%c", m_app->GetLanguageChar());
if (Cmd(line, op) && !resetObject)
OpString(line, "text", m_scriptName);
diff --git a/src/ui/maindialog.cpp b/src/ui/maindialog.cpp
index ebf7d10..68e7854 100644
--- a/src/ui/maindialog.cpp
+++ b/src/ui/maindialog.cpp
@@ -4305,8 +4305,8 @@ void CMainDialog::IOReadName()
}
}
- // TODO: language letters
- sprintf(op, "Title.%c", 'E' /*MAX_FNAME()*/ );
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar() );
if ( Cmd(line, op) )
{
OpString(line, "resume", resume);
@@ -4701,8 +4701,8 @@ void CMainDialog::UpdateSceneChap(int &chap)
}
}
- /* TODO: language letters */
- sprintf(op, "Title.%c", 'E' /*GetLanguageLetter()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) )
{
OpString(line, "text", name);
@@ -4748,8 +4748,8 @@ void CMainDialog::UpdateSceneChap(int &chap)
}
}
- // TODO: language letters
- sprintf(op, "Title.%c", 'E'/*GetLanguageLetter()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) )
{
OpString(line, "text", name);
@@ -4851,8 +4851,8 @@ void CMainDialog::UpdateSceneList(int chap, int &sel)
}
}
- // TODO: language letters
- sprintf(op, "Title.%c", 'E' /*MAX_FNAME()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Title.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) )
{
OpString(line, "text", name);
@@ -4996,8 +4996,8 @@ void CMainDialog::UpdateSceneResume(int rank)
}
}
- // TODO: language letters
- sprintf(op, "Resume.%c", 'E' /*MAX_FNAME()*/);
+ // TODO: Fallback to an non-localized entry
+ sprintf(op, "Resume.%c", m_app->GetLanguageChar());
if ( Cmd(line, op) )
{
OpString(line, "text", name);