diff --git a/examples/dokk/datafiles/dengue/levelF.ini b/examples/dokk/datafiles/dengue/levelF.ini
index 0f9ccae45abc48c89b0347570e3d2263648406ae..55afca839941045110cf3131fd15dbf1a2790fbb 100644
--- a/examples/dokk/datafiles/dengue/levelF.ini
+++ b/examples/dokk/datafiles/dengue/levelF.ini
@@ -13,29 +13,29 @@ TEXTCOLORBLUE: 255
 TEXTSIZE: 30
 TEXT_QUICKSTART: 7 
 TEXT_COUNT: 10
-TEXT1: Voilà, la phase d'entrainement du jeu est terminée ...
+TEXT1: Voil�, la phase d'entrainement du jeu est termin�e ...
 TEXTTIME1: 3000
 
-TEXT2: Au niveau suivant, vous devez approcher/docker le ligand sur la protéine aussi bien que possible.
+TEXT2: Au niveau suivant, vous devez approcher/docker le ligand sur la prot�ine aussi bien que possible.
 TEXTTIME2: 8000
 
-TEXT3: La première cible est une enzyme importante du virus de la dengue.
+TEXT3: La premi�re cible est une enzyme importante du virus de la dengue.
 TEXTTIME3: 8000
 
-TEXT4: Pour arrêter le virus de la dengue, placez le ligand, le mieux que vous le pouvez,
-à l'intérieur de la protéine.
+TEXT4: Pour arr�ter le virus de la dengue, placez le ligand, le mieux que vous le pouvez,
+  � l'int�rieur de la prot�ine.
 TEXTTIME4: 8000
 
-TEXT5: Vous pouvez lire votre score actuel en haut à gauche de l'écran. Si vous êtes
-satisfait du score, vous pouvez appuyer sur "FIT" pour terminer ce
-niveau.
+TEXT5: Vous pouvez lire votre score actuel en haut � gauche de l'�cran. Si vous �tes
+  satisfait du score, vous pouvez appuyer sur "FIT" pour terminer ce 
+  niveau.
 TEXTTIME5: 8000
 
-TEXT6: Le plus rapidement vous terminez un niveau, le moins de temps de pénalité sera
-ajouté à votre score.
+TEXT6: Le plus rapidement vous terminez un niveau, le moins de temps de p�nalit� sera
+  ajout� � votre score.
 TEXTTIME6: 8000
 
-TEXT7: Êtes-vous prêt? Maintenant, cela devient sérieux.
+TEXT7: �tes-vous pr�t? Maintenant, cela devient s�rieux.
 TEXTTIME7: 3000
 
 TEXT8: 3
@@ -67,8 +67,8 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 2
 
-TEXT1: Malheureusement, vous n'êtes pas arrivés parmi les top 10. Votre
-score est de $DIFFERENCE points trop élevé.
+TEXT1: Malheureusement, vous n'�tes pas arriv�s parmi les top 10. Votre
+  score est de $DIFFERENCE points trop �lev�.
 TEXTTIME1: 4000
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
@@ -76,8 +76,8 @@ TEXTCOLORBLUE1: 0
 TEXTSIZE1: 40
 
 TEXT2: RMSD:              $RMSD
-       Pénalité de temps: $TIMEMALUS
-       Résultat final:    $SCORE
+       P�nalit� de temps: $TIMEMALUS
+       R�sultat final:    $SCORE
 TEXTTIME2: -1
 TEXTCOLORRED2: 255
 TEXTCOLORGREEN2: 64
@@ -92,10 +92,10 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Bravo, vous avez termine $RANKème! 
+TEXT1: Bravo, vous avez termine $RANK�me! 
        RMSD:              $RMSD
-       Pénalité de temps: $TIMEMALUS
-       Résultat final:    $SCORE
+       P�nalit� de temps: $TIMEMALUS
+       R�sultat final:    $SCORE
 TEXTTIME1: 4000
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
@@ -103,8 +103,8 @@ TEXTCOLORBLUE1: 64
 TEXTSIZE1: 40
 
 [Info]
-TEXT: Pour arrêter le virus de la dengue, placez le ligand, le mieux que vous le pouvez,
-à l'intérieur de la protéine.
+TEXT: Pour arr�ter le virus de la dengue, placez le ligand, le mieux que vous le pouvez,
+  � l'int�rieur de la prot�ine.
 
 [Box]
 XMIN:-50
diff --git a/examples/dokk/datafiles/glyoxalase/levelF.ini b/examples/dokk/datafiles/glyoxalase/levelF.ini
index 982bfa431a532508ac23a34146927f9cd52dd751..1d707c1cbc5561545f53fe139d0bf250fb6daa98 100644
--- a/examples/dokk/datafiles/glyoxalase/levelF.ini
+++ b/examples/dokk/datafiles/glyoxalase/levelF.ini
@@ -14,7 +14,7 @@ TEXTCOLORBLUE: 255
 TEXTSIZE: 30
 TEXT_QUICKSTART: 2
 TEXT_COUNT: 4
-TEXT1: Êtes-vous prêt? Maintenant, cela devient sérieux.
+TEXT1: �tes-vous pr�t? Maintenant, cela devient s�rieux.
 TEXTTIME1: 3000
 
 TEXT2: 3
@@ -46,8 +46,8 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 2
 
-TEXT1: Malheureusement, vous n'êtes pas arrivés parmi les top 10. Votre
-score est de $DIFFERENCE points trop élevé.
+TEXT1: Malheureusement, vous n'�tes pas arriv�s parmi les top 10. Votre
+  score est de $DIFFERENCE points trop �lev�.
 TEXTTIME1: 4000
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
@@ -55,8 +55,8 @@ TEXTCOLORBLUE1: 0
 TEXTSIZE1: 40
 
 TEXT2: RMSD:              $RMSD
-       Pénalité de temps: $TIMEMALUS
-       Résultat final:    $SCORE
+       P�nalit� de temps: $TIMEMALUS
+       R�sultat final:    $SCORE
 TEXTTIME2: -1
 TEXTCOLORRED2: 255
 TEXTCOLORGREEN2: 64
@@ -71,10 +71,10 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Bravo, vous avez termine $RANKème! 
+TEXT1: Bravo, vous avez termine $RANK�me! 
        RMSD:              $RMSD
-       Pénalité de temps: $TIMEMALUS
-       Résultat final:    $SCORE
+       P�nalit� de temps: $TIMEMALUS
+       R�sultat final:    $SCORE
 TEXTTIME1: 4000
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
diff --git a/examples/dokk/datafiles/retinol/levelF.ini b/examples/dokk/datafiles/retinol/levelF.ini
index 91437a95c632aef307ff0127351ca2de660c705f..e53c7b83a60ed8aa452c73cdd0eabcc8a1276dbb 100644
--- a/examples/dokk/datafiles/retinol/levelF.ini
+++ b/examples/dokk/datafiles/retinol/levelF.ini
@@ -13,7 +13,7 @@ TEXTCOLORBLUE: 255
 TEXTSIZE: 30
 TEXT_QUICKSTART: 2
 TEXT_COUNT: 4
-TEXT1: Êtes-vous prêt? Maintenant, cela devient sérieux.
+TEXT1: �tes-vous pr�t? Maintenant, cela devient s�rieux.
 TEXTTIME1: 5000
 
 TEXT2: 3
@@ -45,8 +45,8 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 2
 
-TEXT1: Malheureusement, vous n'êtes pas arrivés parmi les top 10. Votre
-score est de $DIFFERENCE points trop élevé.
+TEXT1: Malheureusement, vous n'�tes pas arriv�s parmi les top 10. Votre
+  score est de $DIFFERENCE points trop �lev�.
 TEXTTIME1: 4000
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
@@ -54,8 +54,8 @@ TEXTCOLORBLUE1: 0
 TEXTSIZE1: 40
 
 TEXT2: RMSD:              $RMSD
-       Pénalité de temps: $TIMEMALUS
-       Résultat final:    $SCORE
+       P�nalit� de temps: $TIMEMALUS
+       R�sultat final:    $SCORE
 TEXTTIME2: -1
 TEXTCOLORRED2: 255
 TEXTCOLORGREEN2: 64
@@ -70,10 +70,10 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Bravo, vous avez termine $RANKème! 
+TEXT1: Bravo, vous avez termine $RANK�me! 
        RMSD:              $RMSD
-       Pénalité de temps: $TIMEMALUS
-       Résultat final:    $SCORE
+       P�nalit� de temps: $TIMEMALUS
+       R�sultat final:    $SCORE
 TEXTTIME1: 4000
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
diff --git a/examples/dokk/datafiles/thrombin/levelF.ini b/examples/dokk/datafiles/thrombin/levelF.ini
index aa9004ef863bec912ec45b11d5891573d6185292..58147c97a9a565284f10846be2ee2b9c2f9fa397 100644
--- a/examples/dokk/datafiles/thrombin/levelF.ini
+++ b/examples/dokk/datafiles/thrombin/levelF.ini
@@ -13,7 +13,7 @@ TEXTCOLORBLUE: 255
 TEXTSIZE: 30
 TEXT_QUICKSTART: 2
 TEXT_COUNT: 4
-TEXT1: Êtes-vous prêt? Maintenant, cela devient sérieux.
+TEXT1: �tes-vous pr�t? Maintenant, cela devient s�rieux.
 TEXTTIME1: 3000
 
 TEXT2: 3
@@ -45,8 +45,8 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 20
 TEXT_COUNT: 2
 
-TEXT1: Malheureusement, vous n'êtes pas arrivés parmi les top 10. Votre
-score est de $DIFFERENCE points trop élevé.
+TEXT1: Malheureusement, vous n'�tes pas arriv�s parmi les top 10. Votre
+  score est de $DIFFERENCE points trop �lev�.
 TEXTTIME1: 4000
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
@@ -54,8 +54,8 @@ TEXTCOLORBLUE1: 0
 TEXTSIZE1: 40
 
 TEXT2: RMSD:              $RMSD
-       Pénalité de temps: $TIMEMALUS
-       Résultat final:    $SCORE
+       P�nalit� de temps: $TIMEMALUS
+       R�sultat final:    $SCORE
 TEXTTIME2: -1
 TEXTCOLORRED2: 255
 TEXTCOLORGREEN2: 64
@@ -70,10 +70,10 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Bravo, vous avez termine $RANKème! 
+TEXT1: Bravo, vous avez termine $RANK�me! 
        RMSD:              $RMSD
-       Pénalité de temps: $TIMEMALUS
-       Résultat final:    $SCORE
+       P�nalit� de temps: $TIMEMALUS
+       R�sultat final:    $SCORE
 TEXTTIME1: 4000
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
diff --git a/examples/dokk/datafiles/tutorial_1/levelF.ini b/examples/dokk/datafiles/tutorial_1/levelF.ini
index 53698a8c963ecee06355d45913fbd5dbc0e6462c..fc342bf93f7a881b13c26e0394a43c34eb69418f 100644
--- a/examples/dokk/datafiles/tutorial_1/levelF.ini
+++ b/examples/dokk/datafiles/tutorial_1/levelF.ini
@@ -18,22 +18,22 @@ TEXT1: Bonjour et bienvenue chez dokk, le jeu de docking.
 TEXTTIME1: 8000
 
 TEXT2: Il s'agit du premier niveau d'entrainement. Vous allez apprendre
-comment on peut changer la position d'une molécule en 3D.
+  comment on peut changer la position d'une mol�cule en 3D.
 TEXTTIME2: 8000
 
-TEXT3: Votre tâche est de amener le ligand (en vert) dans la bonne position
-dans la protéine (en blanc).
+TEXT3: Votre t�che est de amener le ligand (en vert) dans la bonne position
+  dans la prot�ine (en blanc).
 TEXTTIME3: 8000
 
-TEXT4: Vous pouvez déplacer le ligand avec le périphérique d'entrée 3D,
-en déplaçant le joystick dans la direction appropriée.
+TEXT4: Vous pouvez d�placer le ligand avec le p�riph�rique d'entr�e 3D,
+  en d�pla�ant le joystick dans la direction appropri�e.
 TEXTTIME4: 13000
 TEXTIMG4: images/translation.png
  
-TEXT5: Si vous avez des questions, n'hésitez pas à contacter un de nos professionnels.
+TEXT5: Si vous avez des questions, n'h�sitez pas � contacter un de nos professionnels.
 TEXTTIME5: 5000
 
-TEXT6: Êtes-vous prêt? Vous avez 60 secondes.
+TEXT6: �tes-vous pr�t? Vous avez 60 secondes.
 TEXTTIME6: 3000
 
 TEXT7: C'est parti!
@@ -68,8 +68,8 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Malheureusement, vous n'avez pas réussi! Vous pouvez essayer à
-nouveau pour terminer ce niveau.
+TEXT1: Malheureusement, vous n'avez pas r�ussi! Vous pouvez essayer �
+  nouveau pour terminer ce niveau.
 TEXTTIME1: -1
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
@@ -84,7 +84,7 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Bravo, vous avez réussi! Vous pouvez maintenant essayer le niveau suivant.
+TEXT1: Bravo, vous avez r�ussi! Vous pouvez maintenant essayer le niveau suivant.
 TEXTTIME1: 8000
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
@@ -113,3 +113,4 @@ FRAMESKIP: 2
 
 [Name]
 TEXT: No Save
+
diff --git a/examples/dokk/datafiles/tutorial_2/levelF.ini b/examples/dokk/datafiles/tutorial_2/levelF.ini
index c923e651db20e30afb43fb839900760656d8d6a3..bccebc5f02c20ba30f8441e05227c9cc9d88d034 100644
--- a/examples/dokk/datafiles/tutorial_2/levelF.ini
+++ b/examples/dokk/datafiles/tutorial_2/levelF.ini
@@ -1,6 +1,6 @@
 [Level]
 NAME: Tutorial 2
-DIFFICULTY: Entrainement avancé
+DIFFICULTY: Entrainement avanc�
 TIME: 60000
 SAVE: 0
 SHOW_SOLUTION: 0
@@ -14,16 +14,16 @@ TEXTCOLORBLUE: 255
 TEXTSIZE: 30
 TEXT_QUICKSTART: 3
 TEXT_COUNT: 6
-TEXT1: Très bien, vous avez compris le principe du jeu et vous avez déjà
-réussi à déplacer le ligand.
+TEXT1: Tr�s bien, vous avez compris le principe du jeu et vous avez d�j�
+  r�ussi � d�placer le ligand.
 TEXTTIME1: 3000
 
-TEXT2: Dans ce niveau du jeu, vous apprendrez comment le ligand peut être
-tourné. Pour le faire, vous pouvez tourner et incliner votre joystick.
+TEXT2: Dans ce niveau du jeu, vous apprendrez comment le ligand peut �tre
+  tourn�. Pour le faire, vous pouvez tourner et incliner votre joystick.
 TEXTTIME2: 13000
 TEXTIMG2: images/rotation.png
 
-TEXT3: Êtes-vous prêt? Cela deviendra un peu plus difficile.
+TEXT3: �tes-vous pr�t? Cela deviendra un peu plus difficile.
 TEXTTIME3: 3000
 
 TEXT4: 3
@@ -55,8 +55,8 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Malheureusement, vous n'avez pas réussi! Vous pouvez essayer à
-nouveau pour terminer ce niveau.
+TEXT1: Malheureusement, vous n'avez pas r�ussi! Vous pouvez essayer �
+  nouveau pour terminer ce niveau.
 TEXTTIME1: -1
 TEXTCOLORRED1: 255
 TEXTCOLORGREEN1: 64
@@ -71,7 +71,7 @@ TEXTCOLORBLUE: 0
 TEXTSIZE: 16
 TEXT_COUNT: 1
 
-TEXT1: Bravo, vous avez terminé les niveaux d'entrainement avec succès!
+TEXT1: Bravo, vous avez termin� les niveaux d'entrainement avec succ�s!
 TEXTTIME1: 8000
 TEXTCOLORRED1: 0
 TEXTCOLORGREEN1: 255
diff --git a/examples/dokk/dokk.py b/examples/dokk/dokk.py
index c164f2a299b72ff95488ef85e171824734789cb5..fbdb4dc339b57b9cd92addc71682160e9d4ff0de 100644
--- a/examples/dokk/dokk.py
+++ b/examples/dokk/dokk.py
@@ -1,3 +1,8 @@
+import getopt
+import sys
+
+from PyQt4 import QtGui
+
 import glwin
 import level
 
@@ -14,7 +19,8 @@ class Dokk(object):
       self._current_index = -1
       self._current_level = None
       self._ready = True
-
+      self._language=""
+      
   def SetLevels(self,levels):
     self._current_index = -1
     if isinstance(levels, list):
@@ -47,14 +53,58 @@ class Dokk(object):
   def GetLevel(self):
     return self._current_level
   
+  def GetLanguage(self):
+    return self._language
+  
+  def SetLanguage(self, lang):
+    lang_str = str(lang).upper()
+    if len(lang_str) > 0:
+      self._language = lang_str[0]
+      print self._language
+    else:
+      self._language = ""
+  
   def Start(self, args):
+    try:
+        opts, args = getopt.getopt(args[1:], "hfsl:", ["help", "fullscreen", "stereo", "language="])
+    except getopt.GetoptError, err:
+        print str(err) # will print something like "option -a not recognized"
+        self._Usage()
+        QtGui.QApplication.exit()
+        sys.exit(2)
+    fullscreen = False
+    stereo = False
+    language = ""
+    for o, value in opts:
+      if o in ("-h", "--help"):
+        self._Usage()
+        QtGui.QApplication.exit()
+        sys.exit()
+      elif o in ("-f", "--fullscreen"):
+        fullscreen=True
+      elif o in ("-s", "--stereo"):
+        stereo=True
+      elif o in ("-l", "--language"):
+        language = value
+      else:
+        assert False, "unhandled option"
+    self.SetLanguage(language)
     self.NextLevel()
-    self.gl_win.Show(fullscreen=('--fullscreen' in args))
-    if '--stereo' in args:
-      self.gl_win.SetStereo(1)
+    self.gl_win.Show(fullscreen)
+    self.gl_win.SetStereo(stereo)
 
   def _LoadLevel(self):
     if self._current_level is not None:
       self._current_level.Close()
     self._current_level = level.Level(self.levels_[self._current_index])
     self.gl_win.SetLevel(self._current_level)
+
+  def _Usage(self):
+    print """
+Usage: dokk [OPTIONS] 
+     -h --help                    Display this usage message
+     -f --fullscreen              Start dokk in fullscreen mode
+     -s --stereo                  Enable stereo view
+     -l <lang>, --language=<lang> Set language to <lang>
+"""
+
diff --git a/examples/dokk/glwin.py b/examples/dokk/glwin.py
index 747dfc2ea2c663a5a88a385341dfc4ec01d76fbb..a544bb42eb54d631bef99a3edc09b627487fe446 100644
--- a/examples/dokk/glwin.py
+++ b/examples/dokk/glwin.py
@@ -1,11 +1,14 @@
 # -*- coding: iso-8859-15 -*-
 
 import math
+import os
 from ost import gfx
 from PyQt4.QtGui import *
 from PyQt4.QtCore import *
 from PyQt4.QtOpenGL import *
 
+from config import Config
+
 from spnav_input import SpnavInputDevice
 from hud import HUD, HUDObject
 
@@ -27,7 +30,8 @@ class DokkGLCanvas(QGLWidget):
     self.update_timer.start(UPDATE_INTERVAL)
     
     self.hud = HUD()
-        
+    self.config = None
+    
     self._lock_input = False
     QObject.connect(self.update_timer, SIGNAL("timeout()"), self.update)
         
@@ -38,6 +42,8 @@ class DokkGLCanvas(QGLWidget):
     gfx.Scene().RenderGL()
 
   def SetLevel(self, level):
+    ini_file = "hud"+self.dokk.GetLanguage()+".ini"
+    self.config = Config(os.path.join('datafiles', ini_file))
     self.spnav_input.SetLevel(level)
     
   def paintEvent(self, event):
@@ -54,13 +60,13 @@ class DokkGLCanvas(QGLWidget):
     painter.drawRect(QRect(QPoint(0, 0), QSize(self.width(), 35)))
     painter.setPen(QPen(QColor(255,255,255), Qt.SolidLine))
     painter.setFont(QFont("Verdana",20))
-    painter.drawText(QPoint(10, 25), "Sie sind %.1f von der L�sung entfernt" % self.dokk.GetLevel().GetRMSD())
+    painter.drawText(QPoint(10, 25), self.config.Text["RMSD"] % self.dokk.GetLevel().GetRMSD())
     if self.dokk.GetLevel().IsIntroDone():
       time_col=self.dokk.GetLevel().GetRemainingTime()/10
       if time_col>1:
         time_col=1
       painter.setPen(QPen(QColor(255,255*time_col,255*time_col), Qt.SolidLine))
-    painter.drawText(QPoint(self.width()-250, 25), "noch %.0f Sekunden" % self.dokk.GetLevel().GetRemainingTime())
+    painter.drawText(QPoint(self.width()-275, 25), self.config.Text["SECONDS"] % self.dokk.GetLevel().GetRemainingTime())
     if self.hud is not None:
       self.hud.Paint(painter)
     self.dokk.GetLevel().CheckSolved()
diff --git a/examples/dokk/level.py b/examples/dokk/level.py
index a0e729b32ec1d574b3b1769b571cbd7a832b2d73..0cd665f6e2faafb0468dbcd4cbe2bc406f311c0c 100644
--- a/examples/dokk/level.py
+++ b/examples/dokk/level.py
@@ -34,7 +34,8 @@ class Level(QtCore.QObject):
     
   def Load(self):
     level_dir=os.path.join('datafiles', self.name_)
-    self.config = Config(os.path.join(level_dir, 'level.ini'))
+    ini_file = "level"+Dokk().GetLanguage()+".ini"
+    self.config = Config(os.path.join(level_dir, ini_file))
     self.topten = TopTen(os.path.join(level_dir, 'top_ten.ini'))
     print 'Loading %s' % self.config.Level["NAME"]
     ligand_ent=io.LoadSDF(os.path.join(level_dir, 'ligand.sdf'))