DATABASES =         your database setting dict (don't forget to create the database if needed)
     MEDIA_ROOT =        absolute path to the media directory you just created
     INSTALLED_APPS =    add 'telemeta' and 'jsonrpc' to the tuple
+
+Set the following languages:
+    
+    LANGUAGES = [ ('fr', 'French'),
+                  ('en', 'English'),
+    ]
+
+
+Set the following Middlewares:
     
+    MIDDLEWARE_CLASSES = (
+        'django.middleware.common.CommonMiddleware',
+        'django.contrib.sessions.middleware.SessionMiddleware',
+        'django.middleware.csrf.CsrfViewMiddleware',
+        'django.contrib.auth.middleware.AuthenticationMiddleware',
+        'django.contrib.messages.middleware.MessageMiddleware',
+        'django.middleware.locale.LocaleMiddleware',
+    )
+
 Add the following variables:
     
     TEMPLATE_CONTEXT_PROCESSORS = (
         'django.core.context_processors.request',
         'django.contrib.auth.context_processors.auth',)
 
-    TELEMETA_ORGANIZATION =  name of the organization which hosts this installation
-    TELEMETA_SUBJECTS =      tuple of subject keywords (used for Dublin Core), such as "Ethnology", etc...
-    TELEMETA_CACHE_DIR =     absolute path to the cache directory that you just created
-    TELEMETA_GMAP_KEY =      your Google Map API key
-    TELEMETA_DOWNLOAD_ENABLED =  True to enable audio data download
-    TELEMETA_PUBLIC_ACCESS_PERIOD = 51 # (in years)
-
+    TELEMETA_ORGANIZATION =         name of the organization which hosts this installation
+    TELEMETA_SUBJECTS =             tuple of subject keywords (used for Dublin Core), such as "Ethnology", etc...
+    TELEMETA_CACHE_DIR =            absolute path to the cache directory that you just created
+    TELEMETA_GMAP_KEY =             your Google Map API key
+    TELEMETA_DOWNLOAD_ENABLED =     True to enable audio data download
+    TELEMETA_PUBLIC_ACCESS_PERIOD = number of years above which item files are automagically published
+    EMAIL_HOST =                    your default SMTP server
+    DEFAULT_FROM_EMAIL =            the default sending email address 
+    
 Just paste the lines below::
 
     LOGIN_URL = '/login'
     LOGIN_REDIRECT_URL = '/'
+    AUTH_PROFILE_MODULE = 'telemeta.userprofile'
     TELEMETA_EXPORT_CACHE_DIR = TELEMETA_CACHE_DIR + "/export"
     TELEMETA_DATA_CACHE_DIR = TELEMETA_CACHE_DIR + "/data"
     CACHE_BACKEND = "file://" + TELEMETA_CACHE_DIR + "/data"
 
 msgid "Last login"
 msgstr "Dernière connexion"
 
+#: templates/telemeta_default/profile_detail.html:60
+msgid "Set"
+msgstr "Appliquer"
+
+#: templates/telemeta_default/profile_detail.html:50
+msgid "Language"
+msgstr "Langue"
+
 #: templates/telemeta_default/login.html:21
 msgid "Password forgotten"
 msgstr "Mot de passe oublié"
 
     {% block tabcontents %}
     {% endblock %}
 </div>
+
 {% endblock %}
 
 <div id="quick_search">
 <form action="{% url telemeta-search %}" id="_quickSearchForm" method="GET">
 <input type="text" id="quick_search_pattern" name="pattern" />
-<!--<input type="submit" value="{% trans 'Search' %}" />-->
 <a href="#" class="component button"
                 onclick="document.getElementById('_quickSearchForm').submit(); return false;">{% trans "Search" %}</a>
 </form>
 
 {% extends "telemeta/base.html" %}
 {% load i18n %}
 {% load telemeta_utils %}
-
+        
 {% block head_title %}{% trans "User Profile" %} : {{ usr.username }}{% endblock %}
 
-
-
 {% block content %}
   <div class="module-set" style="width: 33%">
   {% block modules %}
   </div>
 
   <h3>{% trans "User profile" %} : {{ usr.username }}</h3>
-{% if user.is_authenticated %}
-      <a href="{% url telemeta-profile-edit usr.username %}" class="component_icon button icon_edit" style="float:right">{% trans "Edit" %}</a>
-     {% endif %}
     <div class="infos" style="padding-top: 1em;">
      <dl class="listing">
       <dt>{% trans "First Name" %}</dt><dd>{{ usr.first_name }}</dd>
       <dt>{% trans "Is staff" %}</dt><dd>{{ usr.is_staff }}</dd>
       <dt>{% trans "Is superuser" %}</dt><dd>{{ usr.is_superuser }}</dd>
       <dt>{% trans "Last login" %}</dt><dd>{{ usr.last_login }}</dd>
+      {% if user.is_authenticated and user.username == usr.username %}
+        {% get_current_language as LANGUAGE_CODE %}
+        {% get_available_languages as LANGUAGES %}
+      <dt>{% trans "Language" %}</dt><dd><form id="setlang" action="/i18n/setlang/" method="post">{% csrf_token %}
+        <input name="next" type="hidden" value="" />
+          <select name="language">
+            {% for lang in LANGUAGES %}
+             <option {% if lang.0 == LANGUAGE_CODE %}selected{% endif %} value="{{ lang.0 }}">{{ lang.1 }}</option>
+            {% endfor %}
+          </select>
+          <a href="#" class="component_icon button icon_save" 
+            onclick="document.getElementById('setlang').submit(); return false;">{% trans "Set" %}</a>
+         </form>
+        </dd>
+      {%  endif %}
      </dl>
     </div>
-    <a href="{% url telemeta-password-change %}" class="component_icon button icon_login" style="float:left">{% trans "Change password" %}</a>
-   </div>
+        
+    {% if user.is_authenticated and user.username == usr.username or user.is_staff %}
+    <a href="{% url telemeta-profile-edit usr.username %}" class="component_icon button icon_edit">{% trans "Edit" %}</a>
+    {%  endif %}
+    {% if user.is_authenticated and user.username == usr.username %}
+    <a href="{% url telemeta-password-change %}" class="component_icon button icon_login">{% trans "Change password" %}</a>
+    {%  endif %}
+ 
+  </div>
 {% endblock %}
 
 
     url(r'^accounts/password_reset_complete/$', 'django.contrib.auth.views.password_reset_complete', {'template_name': 'telemeta/registration/password_reset_complete.html'}, name="telemeta-password-reset-complete"),
        
     # JSON RPC
-    url(r'^json/browse/', 'jsonrpc.views.browse', name="jsonrpc_browser"), # for the graphical browser/web console only, omissible
     url(r'^json/$', jsonrpc_site.dispatch, name='jsonrpc_mountpoint'),
-    url(r'^json/(?P<method>[a-zA-Z0-9.]+)$', jsonrpc_site.dispatch),  # for HTTP GET only, also omissible
+    # for the graphical browser/web console only, omissible
+    url(r'^json/browse/', 'jsonrpc.views.browse', name="jsonrpc_browser"), 
+    # for HTTP GET only, also omissible
+    #url(r'^json/(?P<method>[a-zA-Z0-9.]+)$', jsonrpc_site.dispatch),  
     
     # Playlists
     url(r'^playlists/(?P<public_id>[a-zA-Z0-9]+)/(?P<resource_type>[a-zA-Z0-9]+)/csv/$', web_view.playlist_csv_export, name="telemeta-playlist-csv-export"),
     
     # Not allowed
     url(r'/*/(?P<public_id>[A-Za-z0-9._-]+)/not_allowed/$', web_view.not_allowed, name="telemeta-not-allowed"),
+    
 )