diff --git a/daemon/src/audio/alsa/alsalayer.cpp b/daemon/src/audio/alsa/alsalayer.cpp
index d903bb5cdb26ec3d2fcc7a403a22bc26ede9ee99..c1e7620f8af80a1a062426e8d528d209e3a501f9 100644
--- a/daemon/src/audio/alsa/alsalayer.cpp
+++ b/daemon/src/audio/alsa/alsalayer.cpp
@@ -78,7 +78,7 @@ AlsaLayer::AlsaLayer()
     , ringtoneHandle_(NULL)
     , captureHandle_(NULL)
     , audioPlugin_(audioPref.getPlugin())
-    , IDSoundCards_()
+    // , IDSoundCards_()
     , is_playback_prepared_(false)
     , is_capture_prepared_(false)
     , is_playback_running_(false)
@@ -160,7 +160,7 @@ AlsaLayer::startStream()
         if (not is_playback_open_)
             Manager::instance().getDbusManager()->getConfigurationManager()->errorAlert(ALSA_PLAYBACK_DEVICE);
 
-        if (getIndexOut() != getIndexRing())
+        if (getIndexPlayback() != getIndexRingtone())
             if (!openDevice(&ringtoneHandle_, pcmr, SND_PCM_STREAM_PLAYBACK))
                 Manager::instance().getDbusManager()->getConfigurationManager()->errorAlert(ALSA_PLAYBACK_DEVICE);
     }
@@ -432,7 +432,23 @@ AlsaLayer::buildDeviceTopo(const std::string &plugin, int card)
 }
 
 std::vector<std::string>
-AlsaLayer::getSoundCardsInfo(int stream)
+AlsaLayer::getAudioDeviceList(AudioStreamDirection dir) const
+{
+    std::vector<HwIDPair> deviceMap;
+    std::vector<std::string> audioDeviceList;
+
+    deviceMap = getAudioDeviceIndexMap(dir);
+
+    for(std::vector<HwIDPair>::const_iterator iter = deviceMap.begin(); iter != deviceMap.end(); iter++) {
+         audioDeviceList.push_back(iter->second);
+    }
+
+    return audioDeviceList;
+}
+
+
+std::vector<HwIDPair>
+AlsaLayer::getAudioDeviceIndexMap(AudioStreamDirection dir) const
 {
     snd_ctl_t* handle;
     snd_ctl_card_info_t *info;
@@ -442,10 +458,10 @@ AlsaLayer::getSoundCardsInfo(int stream)
 
     int numCard = -1 ;
 
-    std::vector<std::string> cards_id;
+    std::vector<HwIDPair> audioDevice;
 
     if (snd_card_next(&numCard) < 0 || numCard < 0)
-        return cards_id;
+        return audioDevice;
 
     do {
         std::stringstream ss;
@@ -455,10 +471,11 @@ AlsaLayer::getSoundCardsInfo(int stream)
         if (snd_ctl_open(&handle, name.c_str(), 0) == 0) {
             if (snd_ctl_card_info(handle, info) == 0) {
                 snd_pcm_info_set_device(pcminfo , 0);
-                snd_pcm_info_set_stream(pcminfo, (stream == SFL_PCM_CAPTURE) ? SND_PCM_STREAM_CAPTURE : SND_PCM_STREAM_PLAYBACK);
+                snd_pcm_info_set_stream(pcminfo, (dir == AUDIO_STREAM_CAPTURE) ? SND_PCM_STREAM_CAPTURE : SND_PCM_STREAM_PLAYBACK);
 
-                if (snd_ctl_pcm_info(handle ,pcminfo) < 0)
+                if (snd_ctl_pcm_info(handle ,pcminfo) < 0) {
                     DEBUG(" Cannot get info");
+                }
                 else {
                     DEBUG("card %i : %s [%s]",
                            numCard,
@@ -467,9 +484,9 @@ AlsaLayer::getSoundCardsInfo(int stream)
                     std::string description = snd_ctl_card_info_get_name(info);
                     description.append(" - ");
                     description.append(snd_pcm_info_get_name(pcminfo));
-                    cards_id.push_back(description);
+                    
                     // The number of the sound card is associated with a string description
-                    IDSoundCards_.push_back(HwIDPair(numCard , description));
+                    audioDevice.push_back(HwIDPair(numCard , description));
                 }
             }
 
@@ -478,7 +495,7 @@ AlsaLayer::getSoundCardsInfo(int stream)
     } while (snd_card_next(&numCard) >= 0 && numCard >= 0);
 
 
-    return cards_id;
+    return audioDevice;
 }
 
 
@@ -503,9 +520,17 @@ AlsaLayer::soundCardIndexExists(int card, int stream)
 }
 
 int
-AlsaLayer::soundCardGetIndex(const std::string &description)
+AlsaLayer::getAudioDeviceIndex(const std::string &description) const
 {
-    for (std::vector<HwIDPair>::const_iterator iter = IDSoundCards_.begin(); iter != IDSoundCards_.end(); ++iter)
+    std::vector<HwIDPair> audioDeviceIndexMap; 
+    
+    std::vector<HwIDPair> captureDevice = getAudioDeviceIndexMap(AUDIO_STREAM_CAPTURE);
+    std::vector<HwIDPair> playbackDevice = getAudioDeviceIndexMap(AUDIO_STREAM_PLAYBACK);
+
+    audioDeviceIndexMap.insert(audioDeviceIndexMap.end(), captureDevice.begin(), captureDevice.end());
+    audioDeviceIndexMap.insert(audioDeviceIndexMap.end(), playbackDevice.begin(), playbackDevice.end());
+
+    for (std::vector<HwIDPair>::const_iterator iter = audioDeviceIndexMap.begin(); iter != audioDeviceIndexMap.end(); ++iter)
         if (iter->second == description)
             return iter->first;
 
diff --git a/daemon/src/audio/alsa/alsalayer.h b/daemon/src/audio/alsa/alsalayer.h
index 083e7f2500b348783d1a4912588aac92cfca87dc..f15d0d333a5a3d9592ff6397df5f1ee5d30f22bf 100644
--- a/daemon/src/audio/alsa/alsalayer.h
+++ b/daemon/src/audio/alsa/alsalayer.h
@@ -65,14 +65,14 @@ class AlsaLayer : public AudioLayer {
          * The playback starts accordingly to its threshold
          * ALSA Library API
          */
-        void startStream();
+        virtual void startStream();
 
         /**
          * Stop the playback and capture streams.
          * Drops the pending frames and put the capture and playback handles to PREPARED state
          * ALSA Library API
          */
-        void stopStream();
+        virtual void stopStream();
 
         /**
          * Concatenate two strings. Used to build a valid pcm device name.
@@ -90,7 +90,12 @@ class AlsaLayer : public AudioLayer {
          *		   SFL_PCM_BOTH
          * @return std::vector<std::string> The vector containing the string description of the card
          */
-        std::vector<std::string> getSoundCardsInfo(int stream);
+        virtual std::vector<std::string> getAudioDeviceList(AudioStreamDirection dir) const;
+
+        /**
+         * Returns a map of audio device hardware description and index
+         */
+        std::vector<HwIDPair> getAudioDeviceIndexMap(AudioStreamDirection dir) const;
 
         /**
          * Check if the given index corresponds to an existing sound card and supports the specified streaming mode
@@ -109,7 +114,7 @@ class AlsaLayer : public AudioLayer {
          * @param description The string description
          * @return	int	  Its index
          */
-        int soundCardGetIndex(const std::string &description);
+        int getAudioDeviceIndex(const std::string &description) const;
 
         void playback(int maxSamples);
         void capture();
@@ -121,7 +126,7 @@ class AlsaLayer : public AudioLayer {
          * @return int The index of the card used for capture
          *                     0 for the first available card on the system, 1 ...
          */
-        int getIndexIn() const {
+        int getIndexCapture() const {
             return indexIn_;
         }
 
@@ -130,7 +135,7 @@ class AlsaLayer : public AudioLayer {
          * @return int The index of the card used for playback
          *                     0 for the first available card on the system, 1 ...
          */
-        int getIndexOut() const {
+        int getIndexPlayback() const {
             return indexOut_;
         }
 
@@ -139,7 +144,7 @@ class AlsaLayer : public AudioLayer {
          * @return int The index of the card used for ringtone
          *                 0 for the first available card on the system, 1 ...
          */
-        int getIndexRing() const {
+        int getIndexRingtone() const {
             return indexRing_;
         }
 
@@ -227,7 +232,7 @@ class AlsaLayer : public AudioLayer {
         std::string audioPlugin_;
 
         /** Vector to manage all soundcard index - description association of the system */
-        std::vector<HwIDPair> IDSoundCards_;
+        // std::vector<HwIDPair> IDSoundCards_;
 
         bool is_playback_prepared_;
         bool is_capture_prepared_;
diff --git a/daemon/src/audio/audiolayer.h b/daemon/src/audio/audiolayer.h
index cc36e453745a342178cee867df424bfcca88dabb..87d76caf2576f3668e506688de03041f623af73f 100644
--- a/daemon/src/audio/audiolayer.h
+++ b/daemon/src/audio/audiolayer.h
@@ -54,6 +54,8 @@ namespace ost {
 class Time;
 }
 
+enum AudioStreamDirection { AUDIO_STREAM_CAPTURE, AUDIO_STREAM_PLAYBACK };
+
 class AudioLayer {
     private:
         NON_COPYABLE(AudioLayer);
@@ -62,6 +64,8 @@ class AudioLayer {
         AudioLayer();
         virtual ~AudioLayer();
 
+        virtual std::vector<std::string> getAudioDeviceList(AudioStreamDirection dir) const = 0;
+
         /**
          * Start the capture stream and prepare the playback stream.
          * The playback starts accordingly to its threshold
@@ -76,6 +80,9 @@ class AudioLayer {
          */
         virtual void stopStream() = 0;
 
+        /**
+         * Determine wether or not the audio layer is active (i.e. stream opened) 
+         */
         bool isStarted() const {
             return isStarted_;
         }
@@ -88,11 +95,18 @@ class AudioLayer {
          */
         void putUrgent(void* buffer, int toCopy);
 
+        /**
+         * Flush main buffer 
+         */
         void flushMain();
 
+        /**
+         * Flush urgent buffer
+         */
         void flushUrgent();
 
 
+
         /**
          * Get the sample rate of the audio layer
          * @return unsigned int The sample rate
@@ -109,6 +123,9 @@ class AudioLayer {
             return &mutex_;
         }
 
+	/**
+         * Emit an audio notification on incoming calls
+         */
         void notifyincomingCall();
 
     protected:
diff --git a/daemon/src/audio/pulseaudio/audiostream.cpp b/daemon/src/audio/pulseaudio/audiostream.cpp
index 3f29c187baccea7b2f011f70d2d11187b54f8267..387d31fcbc8cd84c9cfbf060310be99d1b186510 100644
--- a/daemon/src/audio/pulseaudio/audiostream.cpp
+++ b/daemon/src/audio/pulseaudio/audiostream.cpp
@@ -31,7 +31,7 @@
 #include <audiostream.h>
 #include "pulselayer.h"
 
-AudioStream::AudioStream(pa_context *c, pa_threaded_mainloop *m, const char *desc, int type, int smplrate, std::string *deviceName)
+AudioStream::AudioStream(pa_context *c, pa_threaded_mainloop *m, const char *desc, int type, int smplrate, std::string& deviceName)
     : audiostream_(0), mainloop_(m)
 {
     static const pa_channel_map channel_map = {
@@ -62,14 +62,14 @@ AudioStream::AudioStream(pa_context *c, pa_threaded_mainloop *m, const char *des
     attributes.fragsize = pa_usec_to_bytes(80 * PA_USEC_PER_MSEC, &sample_spec);
     attributes.minreq = (uint32_t) -1;
 
-    const char *name = deviceName ? deviceName->c_str() : NULL;
-
     pa_threaded_mainloop_lock(mainloop_);
 
     if (type == PLAYBACK_STREAM || type == RINGTONE_STREAM)
-        pa_stream_connect_playback(audiostream_, name, &attributes, (pa_stream_flags_t)(PA_STREAM_ADJUST_LATENCY|PA_STREAM_AUTO_TIMING_UPDATE), NULL, NULL);
+        pa_stream_connect_playback(audiostream_, deviceName == "" ? NULL : deviceName.c_str(), &attributes, 
+		(pa_stream_flags_t)(PA_STREAM_ADJUST_LATENCY|PA_STREAM_AUTO_TIMING_UPDATE), NULL, NULL);
     else if (type == CAPTURE_STREAM)
-        pa_stream_connect_record(audiostream_, name, &attributes, (pa_stream_flags_t)(PA_STREAM_ADJUST_LATENCY|PA_STREAM_AUTO_TIMING_UPDATE));
+        pa_stream_connect_record(audiostream_, deviceName == "" ? NULL : deviceName.c_str(), &attributes, 
+		(pa_stream_flags_t)(PA_STREAM_ADJUST_LATENCY|PA_STREAM_AUTO_TIMING_UPDATE));
 
     pa_threaded_mainloop_unlock(mainloop_);
 
diff --git a/daemon/src/audio/pulseaudio/audiostream.h b/daemon/src/audio/pulseaudio/audiostream.h
index 8d484407b91962c00603f49dc824b2ca49aff8cc..f89fd7babe1a8a36de38ff2c08a4bad6c737ae76 100644
--- a/daemon/src/audio/pulseaudio/audiostream.h
+++ b/daemon/src/audio/pulseaudio/audiostream.h
@@ -55,7 +55,7 @@ class AudioStream {
          * @param audio sampling rate
          * @param device name
          */
-        AudioStream(pa_context *, pa_threaded_mainloop *, const char *, int, int, std::string *);
+        AudioStream(pa_context *, pa_threaded_mainloop *, const char *, int, int, std::string&);
 
         ~AudioStream();
 
diff --git a/daemon/src/audio/pulseaudio/pulselayer.cpp b/daemon/src/audio/pulseaudio/pulselayer.cpp
index 2568b3a08d9a62186291637ae719a7642a54b90e..74f2dbf47e4bcdd05ced33787121ea8ad32dd449 100644
--- a/daemon/src/audio/pulseaudio/pulselayer.cpp
+++ b/daemon/src/audio/pulseaudio/pulselayer.cpp
@@ -65,7 +65,6 @@ void stream_moved_callback(pa_stream *s, void *userdata UNUSED)
 
 } // end anonymous namespace
 
-
 PulseLayer::PulseLayer()
     : playback_(0)
     , record_(0)
@@ -148,6 +147,7 @@ void PulseLayer::context_state_callback(pa_context* c, void* user_data)
                                  PA_SUBSCRIPTION_MASK_SOURCE), NULL, pulse);
             pa_context_set_subscribe_callback(c, context_changed_callback, pulse);
             pulse->updateSinkList();
+            pulse->updateSourceList();
             break;
 
         case PA_CONTEXT_TERMINATED:
@@ -187,30 +187,40 @@ bool PulseLayer::inSourceList(const std::string &deviceName) const
     return std::find(sourceList_.begin(), sourceList_.end(), deviceName) != sourceList_.end();
 }
 
+std::vector<std::string> PulseLayer::getAudioDeviceList(AudioStreamDirection dir) const 
+{
+    if(AUDIO_STREAM_CAPTURE == dir) {
+        return sinkList_;
+    }
+    if(AUDIO_STREAM_PLAYBACK) {
+        return sourceList_;
+    }
+}
 
 void PulseLayer::createStreams(pa_context* c)
 {
     std::string playbackDevice(audioPref.getDevicePlayback());
-    std::string recordDevice(audioPref.getDeviceRecord());
+    std::string captureDevice(audioPref.getDeviceRecord());
     std::string ringtoneDevice(audioPref.getDeviceRingtone());
+    std::string defaultDevice = "";
 
-    DEBUG("PulseAudio: Devices: playback %s , record %s , ringtone %s",
-           playbackDevice.c_str(), recordDevice.c_str(), ringtoneDevice.c_str());
+    DEBUG("PulseAudio: Devices:\n   playback: %s\n   record: %s\n   ringtone: %s",
+           playbackDevice.c_str(), captureDevice.c_str(), ringtoneDevice.c_str());
 
     playback_ = new AudioStream(c, mainloop_, "SFLphone playback", PLAYBACK_STREAM, audioSampleRate_,
-                                inSinkList(playbackDevice) ? &playbackDevice : NULL);
+                                inSourceList(playbackDevice) ? playbackDevice : defaultDevice);
 
     pa_stream_set_write_callback(playback_->pulseStream(), playback_callback, this);
     pa_stream_set_moved_callback(playback_->pulseStream(), stream_moved_callback, this);
 
     record_ = new AudioStream(c, mainloop_, "SFLphone capture", CAPTURE_STREAM, audioSampleRate_,
-                              inSourceList(recordDevice) ? &recordDevice : NULL);
+                              inSinkList(captureDevice) ? captureDevice : defaultDevice);
 
     pa_stream_set_read_callback(record_->pulseStream() , capture_callback, this);
     pa_stream_set_moved_callback(record_->pulseStream(), stream_moved_callback, this);
 
     ringtone_ = new AudioStream(c, mainloop_, "SFLphone ringtone", RINGTONE_STREAM, audioSampleRate_,
-                                inSourceList(ringtoneDevice) ? &ringtoneDevice : NULL);
+                                inSourceList(ringtoneDevice) ? ringtoneDevice : defaultDevice);
 
     pa_stream_set_write_callback(ringtone_->pulseStream(), ringtone_callback, this);
     pa_stream_set_moved_callback(ringtone_->pulseStream(), stream_moved_callback, this);
@@ -512,7 +522,7 @@ void PulseLayer::source_input_info_callback(pa_context *c UNUSED, const pa_sourc
 {
     char s[PA_SAMPLE_SPEC_SNPRINT_MAX], cv[PA_CVOLUME_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX];
 
-    if (!eol)
+    if (eol)
         return;
 
     DEBUG("Sink %u\n"
diff --git a/daemon/src/audio/pulseaudio/pulselayer.h b/daemon/src/audio/pulseaudio/pulselayer.h
index ae4092b1324b33ec21331ef386b6c11d929215e8..fc6c742a28d744ac21c614633165c328c7a4a6f0 100644
--- a/daemon/src/audio/pulseaudio/pulselayer.h
+++ b/daemon/src/audio/pulseaudio/pulselayer.h
@@ -62,9 +62,11 @@ class PulseLayer : public AudioLayer {
 
         bool inSourceList(const std::string &deviceName) const;
 
-        void startStream();
+        virtual std::vector<std::string> getAudioDeviceList(AudioStreamDirection dir) const;
 
-        void stopStream();
+        virtual void startStream();
+
+        virtual void stopStream();
 
     private:
         static void context_state_callback(pa_context* c, void* user_data);
@@ -106,8 +108,15 @@ class PulseLayer : public AudioLayer {
          */
         AudioStream* ringtone_;
 
-        std::list<std::string> sinkList_;
-        std::list<std::string> sourceList_;
+        /**
+         * Contain the list of playback devices 
+         */
+        std::vector<std::string> sinkList_;
+
+        /**
+         * Contain the list of capture devices
+         */
+        std::vector<std::string> sourceList_;
 
         /*
          * Buffers used to avoid doing malloc/free in the audio thread
diff --git a/daemon/src/managerimpl.cpp b/daemon/src/managerimpl.cpp
index e5505c897c27c94c8f83ec6a943b96d036bf5710..b62560d3986a30ed539ce1e9937f40012051fae5 100644
--- a/daemon/src/managerimpl.cpp
+++ b/daemon/src/managerimpl.cpp
@@ -1970,7 +1970,7 @@ std::vector<std::string> ManagerImpl::getAudioOutputDeviceList()
     AlsaLayer *alsalayer = dynamic_cast<AlsaLayer*>(audiodriver_);
 
     if (alsalayer)
-        devices = alsalayer->getSoundCardsInfo(SFL_PCM_PLAYBACK);
+        devices = alsalayer->getAudioDeviceList(AUDIO_STREAM_PLAYBACK);
 
     return devices;
 }
@@ -1988,7 +1988,7 @@ std::vector<std::string> ManagerImpl::getAudioInputDeviceList()
     AlsaLayer *alsalayer = dynamic_cast<AlsaLayer *>(audiodriver_);
 
     if (alsalayer)
-        devices = alsalayer->getSoundCardsInfo(SFL_PCM_CAPTURE);
+        devices = alsalayer->getAudioDeviceList(AUDIO_STREAM_CAPTURE);
 
     return devices;
 }
@@ -2006,11 +2006,11 @@ std::vector<std::string> ManagerImpl::getCurrentAudioDevicesIndex()
 
     if (alsa) {
         std::stringstream ssi, sso, ssr;
-        sso << alsa->getIndexOut();
+        sso << alsa->getIndexPlayback();
         v.push_back(sso.str());
-        ssi << alsa->getIndexIn();
+        ssi << alsa->getIndexCapture();
         v.push_back(ssi.str());
-        ssr << alsa->getIndexRing();
+        ssr << alsa->getIndexRingtone();
         v.push_back(ssr.str());
     }
 
@@ -2218,7 +2218,7 @@ int ManagerImpl::getAudioDeviceIndex(const std::string &name)
     AlsaLayer *alsalayer = dynamic_cast<AlsaLayer *>(audiodriver_);
 
     if (alsalayer)
-        soundCardIndex = alsalayer -> soundCardGetIndex(name);
+        soundCardIndex = alsalayer -> getAudioDeviceIndex(name);
 
     return soundCardIndex;
 }
diff --git a/daemon/src/sip/sipaccount.cpp b/daemon/src/sip/sipaccount.cpp
index fdd463449f0e624cae0ad0f99c1eca0473013fa3..efde26c18c528e5b3c463427eb14ffdaf1bcdacf 100644
--- a/daemon/src/sip/sipaccount.cpp
+++ b/daemon/src/sip/sipaccount.cpp
@@ -38,6 +38,7 @@
 #include <sstream>
 #include <cassert>
 
+
 SIPAccount::SIPAccount(const std::string& accountID)
     : Account(accountID, "SIP")
     , transport_(NULL)
@@ -82,6 +83,7 @@ SIPAccount::SIPAccount(const std::string& accountID)
     , zrtpHelloHash_(true)
     , zrtpNotSuppWarning_(true)
     , registrationStateDetailed_()
+    , keepAliveTimer_()
 {
     link_ = SIPVoIPLink::instance();
 }
@@ -234,9 +236,9 @@ void SIPAccount::serialize(Conf::YamlEmitter *emitter)
         delete node->getValue(REALM);
         delete node;
     }
-}
-
 
+    
+}
 
 void SIPAccount::unserialize(Conf::MappingNode *map)
 {
@@ -567,6 +569,31 @@ void SIPAccount::unregisterVoIPLink()
     }
 }
 
+void SIPAccount::startKeepAliveTimer() {
+    pj_time_val keepAliveDelay_;
+
+    if (isTlsEnabled())
+        return;
+
+    keepAliveTimer_.cb = &SIPAccount::keepAliveRegistrationCb;
+    keepAliveTimer_.user_data = (void *)this; 
+
+    // expiration may no be determined when during the first registration request
+    if(registrationExpire_ == 0) {
+        keepAliveDelay_.sec = 60;
+    }
+    else {
+        keepAliveDelay_.sec = registrationExpire_;
+    }
+    keepAliveDelay_.msec = 0;
+ 
+    reinterpret_cast<SIPVoIPLink *>(link_)->registerKeepAliveTimer(keepAliveTimer_, keepAliveDelay_); 
+}
+
+void SIPAccount::stopKeepAliveTimer() {
+     reinterpret_cast<SIPVoIPLink *>(link_)->cancelKeepAliveTimer(keepAliveTimer_); 
+}
+
 pjsip_ssl_method SIPAccount::sslMethodStringToPjEnum(const std::string& method)
 {
     if (method == "Default")
@@ -745,6 +772,25 @@ std::string SIPAccount::getContactHeader(const std::string& address, const std::
            address + ":" + port + transport + ">";
 }
 
+void SIPAccount::keepAliveRegistrationCb(UNUSED pj_timer_heap_t *th, pj_timer_entry *te) 
+{
+   SIPAccount *sipAccount = reinterpret_cast<SIPAccount *>(te->user_data);
+
+   if (sipAccount->isTlsEnabled())
+       return;
+
+   if(sipAccount->isRegistered()) {
+
+       // send a new register request
+       sipAccount->registerVoIPLink();
+
+       // make sure the current timer is deactivated   
+       sipAccount->stopKeepAliveTimer(); 
+
+       // register a new timer
+       sipAccount->startKeepAliveTimer(); 
+   }
+}
 
 namespace {
 std::string computeMd5HashFromCredential(
diff --git a/daemon/src/sip/sipaccount.h b/daemon/src/sip/sipaccount.h
index 076fe6076c967e381219594d24a8eea01cd103eb..32d5671ddc3b7da07528e45b3f5815361bdff475 100644
--- a/daemon/src/sip/sipaccount.h
+++ b/daemon/src/sip/sipaccount.h
@@ -143,6 +143,19 @@ class SIPAccount : public Account {
          */
         void unregisterVoIPLink();
 
+        /**
+         * Start the keep alive function, once started, the account will be registered periodically
+         * a new REGISTER request is sent bey the client application. The account must be initially
+         * registered for this call to be effective.
+         */
+        void startKeepAliveTimer();
+
+        /**
+         * Stop the keep alive timer. Once canceled, no further registration will be scheduled
+         */
+        void stopKeepAliveTimer();
+          
+
         pjsip_cred_info *getCredInfo() const {
             return cred_;
         }
@@ -174,6 +187,15 @@ class SIPAccount : public Account {
             return registrationExpire_;
         }
 
+        /**
+         * Set the expiration for this account as found in 
+         * the "Expire" sip header or the Contact "expire" param.
+         */
+        void setRegistrationExpire(int expire) {
+            if(expire > 0)
+                registrationExpire_ = expire;
+        }
+
         /**
          * Doubles the Expiration Interval of Contact Addresses.
          */
@@ -188,10 +210,16 @@ class SIPAccount : public Account {
         bool userMatch(const std::string& username) const;
         bool hostnameMatch(const std::string& hostname) const;
 
-        /* Registration flag */
-        bool isRegister() const {
+        /** 
+         * Registration flag 
+	 */
+        bool isRegistered() const {
             return bRegister_;
         }
+
+	/**
+         * Set registration flag
+         */
         void setRegister(bool result) {
             bRegister_ = result;
         }
@@ -410,6 +438,12 @@ class SIPAccount : public Account {
             return zrtpHelloHash_;
         }
 
+        /**
+         * Timer used to periodically send re-register request based
+         * on the "Expire" sip header (or the "expire" Contact parameter)
+         */
+        static void keepAliveRegistrationCb(pj_timer_heap_t *th, pj_timer_entry *te);
+
         pjsip_transport* transport_;
     private:
         NON_COPYABLE(SIPAccount);
@@ -442,9 +476,14 @@ class SIPAccount : public Account {
          */
         static std::string getLoginName();
 
-        // The pjsip client registration information
+        /**
+         * The pjsip client registration information
+	 */
         pjsip_regc *regc_;
-        // To check if the account is registered
+
+        /**
+	 * To check if the account is registered
+         */
         bool bRegister_;
 
         // Network settings
@@ -517,6 +556,17 @@ class SIPAccount : public Account {
         * This is a protocol Code:Description pair.
         */
         std::pair<int, std::string> registrationStateDetailed_;
+       
+        /**
+         * Timer used to regularrly send re-register request based
+         * on the "Expire" sip header (or the "expire" Contact parameter)
+         */ 
+        pj_timer_entry keepAliveTimer_;
+
+        /**
+         * Delay coresponding to a registration interval
+         */
+        // pj_time_val keepAliveDelay_;
 };
 
 #endif
diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp
index 5564a55809f1a77a2a452c09afe97fb9866db740..5f556403f33bc2f3c65a15a4e62510990f361e55 100644
--- a/daemon/src/sip/sipvoiplink.cpp
+++ b/daemon/src/sip/sipvoiplink.cpp
@@ -346,6 +346,10 @@ void SIPVoIPLink::sendRegister(Account *a)
     pjsip_transport_dec_ref(account->transport_);
 
     account->setRegistrationInfo(regc);
+
+    // start the periodic registration request based on Expire header
+    // account determines itself if a keep alive is required
+    account->startKeepAliveTimer();
 }
 
 void SIPVoIPLink::sendUnregister(Account *a)
@@ -353,11 +357,14 @@ void SIPVoIPLink::sendUnregister(Account *a)
     SIPAccount *account = dynamic_cast<SIPAccount *>(a);
 
     // This may occurs if account failed to register and is in state INVALID
-    if (!account->isRegister()) {
+    if (!account->isRegistered()) {
         account->setRegistrationState(Unregistered);
         return;
     }
 
+    // Make sure to cancel any ongoing timers before unregister
+    account->stopKeepAliveTimer();
+
     pjsip_regc *regc = account->getRegistrationInfo();
 
     if (!regc)
@@ -374,6 +381,21 @@ void SIPVoIPLink::sendUnregister(Account *a)
     account->setRegister(false);
 }
 
+void SIPVoIPLink::registerKeepAliveTimer(pj_timer_entry& timer, pj_time_val& delay)
+{
+    pj_status_t status;
+
+    status = pjsip_endpt_schedule_timer(endpt_, &timer, &delay); 
+    if(status != PJ_SUCCESS) {
+        ERROR("Could not schedule new timer in pjsip endpoint");
+    }
+}
+
+void SIPVoIPLink::cancelKeepAliveTimer(pj_timer_entry& timer)
+{
+    pjsip_endpt_cancel_timer(endpt_, &timer); 
+}
+
 Call *SIPVoIPLink::newOutgoingCall(const std::string& id, const std::string& toUrl)
 {
     SIPAccount *account = dynamic_cast<SIPAccount *>(Manager::instance().getAccount(Manager::instance().getAccountFromCall(id)));
@@ -1599,6 +1621,8 @@ void registration_cb(struct pjsip_regc_cbparam *param)
         std::pair<int, std::string> details(param->code, state);
         // TODO: there id a race condition for this ressource when closing the application
         account->setRegistrationStateDetailed(details);
+
+        account->setRegistrationExpire(param->expiration);
     }
 
     if (param->status != PJ_SUCCESS) {
@@ -1642,7 +1666,7 @@ void registration_cb(struct pjsip_regc_cbparam *param)
         SIPVoIPLink::instance()->shutdownSipTransport(account);
 
     } else {
-        if (account->isRegister())
+        if (account->isRegistered())
             account->setRegistrationState(Registered);
         else {
             account->setRegistrationState(Unregistered);
diff --git a/daemon/src/sip/sipvoiplink.h b/daemon/src/sip/sipvoiplink.h
index 1c2fceb9bc8fe1f63814dd1cd071e8c1d748e965..665171e1d9e8cf1e3ebc581e11edee5043cafca4 100644
--- a/daemon/src/sip/sipvoiplink.h
+++ b/daemon/src/sip/sipvoiplink.h
@@ -99,6 +99,16 @@ class SIPVoIPLink : public VoIPLink {
          */
         virtual void sendUnregister(Account *a);
 
+        /**
+         * Register a new keepalive registration timer to this endpoint
+         */
+        void registerKeepAliveTimer(pj_timer_entry& timer, pj_time_val& delay);
+
+        /**
+         * Abort currently registered timer
+         */
+        void cancelKeepAliveTimer(pj_timer_entry& timer); 
+
         /**
          * Place a new call
          * @param id  The call identifier
diff --git a/gnome/src/config/audioconf.c b/gnome/src/config/audioconf.c
index e22cea77efa3c115f6b29fa71de46e8c11a25dac..84d6b42c68a7d901519e2bedfd2c80a829a71722 100644
--- a/gnome/src/config/audioconf.c
+++ b/gnome/src/config/audioconf.c
@@ -152,32 +152,37 @@ preferences_dialog_fill_ringtone_audio_device_list()
 void
 select_active_output_audio_device()
 {
-    if (must_show_alsa_conf()) {
-        // Select active output device on server
-        gchar **devices = dbus_get_current_audio_devices_index();
-        int currentDeviceIndex = atoi(devices[0]);
-        DEBUG("audio device index for output = %d", currentDeviceIndex);
-        GtkTreeModel *model = gtk_combo_box_get_model(GTK_COMBO_BOX(output));
+    gboolean show_alsa = must_show_alsa_conf();
 
-        // Find the currently set output device
-        GtkTreeIter iter;
-        gtk_tree_model_get_iter_first(model, &iter);
+    if(!show_alsa)
+        return;
 
-        do {
-            int deviceIndex;
-            gtk_tree_model_get(model, &iter, 1, &deviceIndex, -1);
+    // Select active output device on server
+    gchar **devices = dbus_get_current_audio_devices_index();
+    
 
-            if (deviceIndex == currentDeviceIndex) {
-                // Set current iteration the active one
-                gtk_combo_box_set_active_iter(GTK_COMBO_BOX(output), &iter);
-                return;
-            }
-        } while (gtk_tree_model_iter_next(model, &iter));
+    int currentDeviceIndex = atoi(devices[0]);
+    DEBUG("audio device index for output = %d", currentDeviceIndex);
+    GtkTreeModel *model = gtk_combo_box_get_model(GTK_COMBO_BOX(output));
 
-        // No index was found, select first one
-        WARN("Warning : No active output device found");
-        gtk_combo_box_set_active(GTK_COMBO_BOX(output), 0);
-    }
+    // Find the currently set output device
+    GtkTreeIter iter;
+    gtk_tree_model_get_iter_first(model, &iter);
+
+    do {
+        int deviceIndex;
+        gtk_tree_model_get(model, &iter, 1, &deviceIndex, -1);
+
+        if (deviceIndex == currentDeviceIndex) {
+            // Set current iteration the active one
+            gtk_combo_box_set_active_iter(GTK_COMBO_BOX(output), &iter);
+            return;
+        }
+    } while (gtk_tree_model_iter_next(model, &iter));
+
+    // No index was found, select first one
+    WARN("Warning : No active output device found");
+    gtk_combo_box_set_active(GTK_COMBO_BOX(output), 0);
 }
 
 
diff --git a/gnome/src/widget/imwidget.c b/gnome/src/widget/imwidget.c
index 764d73e40a1462a1a87d8f93f3ff13c9a1018ca1..ec7a686168c73a77f42542a29dd244477bf253b1 100644
--- a/gnome/src/widget/imwidget.c
+++ b/gnome/src/widget/imwidget.c
@@ -238,7 +238,7 @@ im_widget_init(IMWidget *im)
     im->info_bar = gtk_info_bar_new();
 
     /* A bar with the entry text and the button to send the message */
-    GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10);
+    GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);
     gtk_text_view_set_editable(GTK_TEXT_VIEW(im->textarea), TRUE);
     gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(textscrollwin), GTK_POLICY_NEVER, GTK_POLICY_NEVER);
     gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(webscrollwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
@@ -269,6 +269,7 @@ im_widget_init(IMWidget *im)
      */
     gtk_orientable_set_orientation (GTK_ORIENTABLE (im),
                                     GTK_ORIENTATION_VERTICAL);
+
 }
 
 GType
diff --git a/lang/ar.po b/lang/ar.po
index fccb4c0fb4e4329550676a85d4231ad5903bf03e..bb1d3bfd644b922c65a06f3fca082dfe36e05c28 100644
--- a/lang/ar.po
+++ b/lang/ar.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-06-17 19:24+0000\n"
 "Last-Translator: Zied ABID <ziedabid@gmail.com>\n"
 "Language-Team: Arabic <ar@li.org>\n"
diff --git a/lang/ast.po b/lang/ast.po
index 109d11f12c3a3f96cf37b7c576b6df6d195b3cda..7186adeca585a9bb4b67f165abd192e2335686cb 100644
--- a/lang/ast.po
+++ b/lang/ast.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-07-15 23:42+0000\n"
 "Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
 "Language-Team: Asturian <ast@li.org>\n"
@@ -566,8 +566,9 @@ msgid "days"
 msgstr "díes"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "_Activar tonos de llamada"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1250,9 +1251,8 @@ msgstr ""
 
 #, fuzzy
 #~ msgid ""
-#~ "Unable to initialize.\n"
-#~ "Make sure the daemon is running.\n"
-#~ "Error: %s"
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
 #~ msgstr ""
 #~ "Nun se puede coneutar col sirvidor SFLphone.\n"
 #~ "Compruebe qu'el daemon tea funcionando."
diff --git a/lang/ca.po b/lang/ca.po
index 6c499202fe02a23d85aa2291c0ea17404f0a8216..d9a52456f54bebcb2e18c891af35582445f91cd5 100644
--- a/lang/ca.po
+++ b/lang/ca.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2011-03-10 12:31+0000\n"
 "Last-Translator: Pau Iranzo <Unknown>\n"
 "Language-Team: Catalan <ca@li.org>\n"
@@ -568,8 +568,9 @@ msgid "days"
 msgstr "dies"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "Activa _els tons de trucada"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1246,11 +1247,9 @@ msgid ""
 "Codecs not found"
 msgstr ""
 
-#, fuzzy
 #~ msgid ""
-#~ "Unable to initialize.\n"
-#~ "Make sure the daemon is running.\n"
-#~ "Error: %s"
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
 #~ msgstr ""
 #~ "No es pot connectar amb el servidor SFLphone.\n"
 #~ "Assegureu-vos que el dimoni s'està executant."
@@ -1261,6 +1260,9 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "Ample de Banda"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "_Envia la supressió"
+
 #~ msgid "Custom commands on incoming calls with URL"
 #~ msgstr "Ordres personalitzdes a les trucades entrants amb un URL"
 
diff --git a/lang/da.po b/lang/da.po
index 23b925e63a7d9b7b0f9d71efccdd86967cf43353..c821e6b86b91727a954725a1263f4d8d624b4c60 100644
--- a/lang/da.po
+++ b/lang/da.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-10-12 14:55+0000\n"
 "Last-Translator: Jonas Fonseca <fonseca@diku.dk>\n"
 "Language-Team: Danish <da@li.org>\n"
@@ -565,8 +565,9 @@ msgid "days"
 msgstr "dage"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "Aktiver _ringetoner"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1261,6 +1262,9 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "Båndbredde"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "_Fjernelse af ekko"
+
 #~ msgid "Custom commands on incoming calls with URL"
 #~ msgstr "Brugerdefinerede kommandoer ved indgående opkald med webadresse"
 
@@ -1328,9 +1332,6 @@ msgstr ""
 #~ msgid "Store SIP credentials as MD5 hash"
 #~ msgstr "Gem SIP-legitimationsoplysninger som _MD5-hash-værdi"
 
-#~ msgid "_Echo Suppression"
-#~ msgstr "_Fjernelse af ekko"
-
 #~ msgid "Enable STUN"
 #~ msgstr "Aktiver STUN"
 
diff --git a/lang/de.po b/lang/de.po
index 8e0f979042621e3c50876f08ec257ba2de1dd9bb..cd31637d4e3b230019cdc7e927fdf22b9a4d3734 100644
--- a/lang/de.po
+++ b/lang/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2011-03-20 19:51+0000\n"
 "Last-Translator: Felix Braun <Unknown>\n"
 "Language-Team: SavoirFaire Linux Inc <sflphoneteam@savoirfairelinux.com>\n"
@@ -566,8 +566,9 @@ msgid "days"
 msgstr "Tage"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "Klingeltöne aktivieren"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1256,6 +1257,9 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "Bandbreite"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "Echounterdrückung"
+
 #~ msgid "Custom commands on incoming calls with URL"
 #~ msgstr "Eigene Befehle bei eingehenden Anrufen mit URL"
 
@@ -1578,9 +1582,6 @@ msgstr ""
 #~ "nobodythere@gmail.com,,maxime.chambreuil@savoirfairelinux.com,"
 #~ "Bananeweizen@gmx.de,,,"
 
-#~ msgid "_Echo Suppression"
-#~ msgstr "Echounterdrückung"
-
 #~ msgctxt "account state"
 #~ msgid "Registered"
 #~ msgstr "Registriert"
diff --git a/lang/el.po b/lang/el.po
index 87edb8e3fa0c737efad651d7aab15c27aaed6558..297fce70a09757c7ae2887d6577a1c1750bce286 100644
--- a/lang/el.po
+++ b/lang/el.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-06-17 19:26+0000\n"
 "Last-Translator: jarlaxl lamat <sztaasz@gmail.com>\n"
 "Language-Team: Greek <el@li.org>\n"
@@ -1237,9 +1237,8 @@ msgstr ""
 
 #, fuzzy
 #~ msgid ""
-#~ "Unable to initialize.\n"
-#~ "Make sure the daemon is running.\n"
-#~ "Error: %s"
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
 #~ msgstr ""
 #~ "Αδυναμία σύνδεσης στον εξυπηρετητη του  SFLphone\n"
 #~ "Σιγουρευτείτε οτι τρέχει ο daemon"
diff --git a/lang/es.po b/lang/es.po
index 6dc56be4814ac38734579601e5b322ca00aa2611..ffa066fed551ee609b78d7fa086768cbe3b1a0b2 100644
--- a/lang/es.po
+++ b/lang/es.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: SFLphone 0.9.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-11-04 21:47+0000\n"
 "Last-Translator: Oliver Etchebarne <Unknown>\n"
 "Language-Team: SavoirFaireLinux Inc <sflphoneteam@savoirfairelinux.com>\n"
@@ -566,8 +566,9 @@ msgid "days"
 msgstr "días"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "Habilitar tonos de llamada"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1264,6 +1265,9 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "Ancho de banda"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "_Eliminación de Eco"
+
 #~ msgid "Custom commands on incoming calls with URL"
 #~ msgstr "Comandos personalizados en llamada entrante con URL"
 
@@ -1902,9 +1906,6 @@ msgstr ""
 #~ "daniel.mustieles@gmail.com,jorge@jorgee.net,,maxime."
 #~ "chambreuil@savoirfairelinux.com,nzahlut@live.com,,xuacusk8@gmail.com"
 
-#~ msgid "_Echo Suppression"
-#~ msgstr "_Eliminación de Eco"
-
 #~ msgid "Transfer to : "
 #~ msgstr "Transferir a : "
 
diff --git a/lang/fr.po b/lang/fr.po
index f20900f53e6343edaeb7c8ceca5d74584589c2c2..9171f46bad13b995800dc17dfa90a1a8a66e9e29 100644
--- a/lang/fr.po
+++ b/lang/fr.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: SFLphone 0.9.8\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-06-17 19:33+0000\n"
 "Last-Translator: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>\n"
 "Language-Team: SavoirFaireLinux Inc <sflphoneteam@savoirfairelinux.com>\n"
@@ -568,8 +568,9 @@ msgid "days"
 msgstr "jours"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "Activer les sonneries"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1252,24 +1253,9 @@ msgid ""
 "Codecs not found"
 msgstr ""
 
-#~ msgid "_Echo Suppression"
-#~ msgstr "Suppression de l'écho"
-
-#~ msgid "Connection"
-#~ msgstr "Connexion"
-
-#~ msgid ""
-#~ "GConf error:\n"
-#~ "  %s"
-#~ msgstr ""
-#~ "Erreur GConf:\n"
-#~ "  %s"
-
-#, fuzzy
 #~ msgid ""
-#~ "Unable to initialize.\n"
-#~ "Make sure the daemon is running.\n"
-#~ "Error: %s"
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
 #~ msgstr ""
 #~ "Impossible de se connecter au serveur SFLphone.\n"
 #~ " Assurez-vous que le démon est lancé."
@@ -1280,12 +1266,25 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "Bande passante"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "Suppression de l'écho"
+
 #~ msgid "Custom commands on incoming calls with URL"
 #~ msgstr "Commandes personnalisées lors d'appels entrants avec une URL"
 
 #~ msgid "%s will be replaced with the passed URL."
 #~ msgstr "%s sera remplacé par l'URL passé en argument."
 
+#~ msgid "Connection"
+#~ msgstr "Connexion"
+
+#~ msgid ""
+#~ "GConf error:\n"
+#~ "  %s"
+#~ msgstr ""
+#~ "Erreur GConf:\n"
+#~ "  %s"
+
 #~ msgctxt "account state"
 #~ msgid "Registered"
 #~ msgstr "Enregistré"
diff --git a/lang/hu.po b/lang/hu.po
index 9bca912d8b737546453f418c5a7f15a413977f55..71696b952f3ec57a57151e8f413c50f3953f2bee 100644
--- a/lang/hu.po
+++ b/lang/hu.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2011-01-07 19:33+0000\n"
 "Last-Translator: Balazs Radak <Unknown>\n"
 "Language-Team: Hungarian <hu@li.org>\n"
@@ -562,8 +562,9 @@ msgid "days"
 msgstr "nap"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "_Csengőhangok engedélyezése"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1231,11 +1232,9 @@ msgid ""
 "Codecs not found"
 msgstr ""
 
-#, fuzzy
 #~ msgid ""
-#~ "Unable to initialize.\n"
-#~ "Make sure the daemon is running.\n"
-#~ "Error: %s"
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
 #~ msgstr ""
 #~ "Hiba sz SFLphone szerverhez való csatlakozáskor.\n"
 #~ "Győződjön meg róla, hogy fut a daemon!"
diff --git a/lang/it.po b/lang/it.po
index 13337bcadd426e0966ee8cccf8594ea1eadb18c8..c8f03e50f78fca65cb667aaa88bf04ec88f8921c 100644
--- a/lang/it.po
+++ b/lang/it.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-11-04 21:45+0000\n"
 "Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) <maxime."
 "chambreuil@savoirfairelinux.com>\n"
@@ -568,8 +568,9 @@ msgid "days"
 msgstr "giorni"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "Abilita suonerie"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1261,6 +1262,15 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "Banda"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "Soppressione _Eco"
+
+#~ msgid "Custom commands on incoming calls with URL"
+#~ msgstr "Comandi personalizzati su chiamate entranti con URL"
+
+#~ msgid "%s will be replaced with the passed URL."
+#~ msgstr "%s verrà sostituito con la URL passata."
+
 #~ msgid "Codec"
 #~ msgstr "Codec"
 
@@ -1439,15 +1449,6 @@ msgstr ""
 #~ "chambreuil@gmail.com,,,,maxime.chambreuil@gmail.com,milo@casagrande."
 #~ "name,,,,maxime.chambreuil@savoirfairelinux.com,milo@casagrande.name,"
 
-#~ msgid "_Echo Suppression"
-#~ msgstr "Soppressione _Eco"
-
-#~ msgid "Custom commands on incoming calls with URL"
-#~ msgstr "Comandi personalizzati su chiamate entranti con URL"
-
-#~ msgid "%s will be replaced with the passed URL."
-#~ msgstr "%s verrà sostituito con la URL passata."
-
 #~ msgctxt "account state"
 #~ msgid "Registered"
 #~ msgstr "Registrato"
diff --git a/lang/ja.po b/lang/ja.po
index d3e4a216937e3323365e0058e7d8a1f53256a74d..ef32c248643ec8493e7bcfad9661de0d3c85e90d 100644
--- a/lang/ja.po
+++ b/lang/ja.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-06-17 19:19+0000\n"
 "Last-Translator: Launchpad Translations Administrators <rosetta@launchpad."
 "net>\n"
@@ -564,8 +564,9 @@ msgid "days"
 msgstr "曜日"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "着信音可能"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1242,11 +1243,9 @@ msgid ""
 "Codecs not found"
 msgstr ""
 
-#, fuzzy
 #~ msgid ""
-#~ "Unable to initialize.\n"
-#~ "Make sure the daemon is running.\n"
-#~ "Error: %s"
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
 #~ msgstr ""
 #~ "SFLphoneサーバに接続できません\n"
 #~ "デーモンを確認してください。"
diff --git a/lang/ko.po b/lang/ko.po
index 8750b7909e1728b8cc4beb5a0910eacddeb32aa3..614ce0747659e3df3d15fa6f52632c2bdbf4c83a 100644
--- a/lang/ko.po
+++ b/lang/ko.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-06-17 19:27+0000\n"
 "Last-Translator: Bundo <bundo@bundo.biz>\n"
 "Language-Team: Korean <ko@li.org>\n"
@@ -560,8 +560,9 @@ msgid "days"
 msgstr "일"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "착신음 가능(_E)"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1240,9 +1241,8 @@ msgstr ""
 
 #, fuzzy
 #~ msgid ""
-#~ "Unable to initialize.\n"
-#~ "Make sure the daemon is running.\n"
-#~ "Error: %s"
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
 #~ msgstr ""
 #~ "SFLphone 서버에 연결할 수 없습니다.\n"
 #~ "데몬이 실행중인지 확인하십시오."
diff --git a/lang/oc.po b/lang/oc.po
index 83383c492282236d69c779d71e97ac9c866808c6..3343d43dd6b1fc1408331b2289ce93cfa855a542 100644
--- a/lang/oc.po
+++ b/lang/oc.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-06-17 19:25+0000\n"
 "Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
 "Language-Team: Occitan (post 1500) <oc@li.org>\n"
@@ -561,8 +561,9 @@ msgid "days"
 msgstr "jorns"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "_Activar las sonariás"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
diff --git a/lang/pl.po b/lang/pl.po
index 895a9904dff11f9121fd252659f44439913288ff..30abb54db33c0be0cd7ef2308e07be2d16c21d7a 100644
--- a/lang/pl.po
+++ b/lang/pl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-11-06 13:49+0000\n"
 "Last-Translator: Sebastian Bujwid <Unknown>\n"
 "Language-Team: Polish <pl@li.org>\n"
@@ -1225,13 +1225,16 @@ msgstr ""
 
 #, fuzzy
 #~ msgid ""
-#~ "Unable to initialize.\n"
-#~ "Make sure the daemon is running.\n"
-#~ "Error: %s"
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
 #~ msgstr ""
 #~ "Nie można połączyć się z serwerem SFLphone.\n"
 #~ "Upewnij się, że został uruchomiony daemon SFLphone"
 
+#, fuzzy
+#~ msgid "Codecs"
+#~ msgstr "Kodek"
+
 #~ msgctxt "account state"
 #~ msgid "Registered"
 #~ msgstr "Zarejestrowany"
@@ -1239,9 +1242,6 @@ msgstr ""
 #~ msgid "IP call - %s"
 #~ msgstr "Telefonów IP - %s"
 
-#~ msgid "Codec"
-#~ msgstr "Kodek"
-
 #~ msgctxt "NAME OF TRANSLATORS"
 #~ msgid "Your names"
 #~ msgstr ""
diff --git a/lang/pt.po b/lang/pt.po
index d1d45f1693573637769814053d31ef99a0081665..fa352d9cf5317102ceb955d7a7abe00cf1be134d 100644
--- a/lang/pt.po
+++ b/lang/pt.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-06-17 19:23+0000\n"
 "Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) <maxime."
 "chambreuil@savoirfairelinux.com>\n"
diff --git a/lang/pt_BR.po b/lang/pt_BR.po
index 8ff52c7a5f909dc0ff82e702ca79511cb739d93d..579ea783e9fca2b2637389a8ec86616e3941b7cc 100644
--- a/lang/pt_BR.po
+++ b/lang/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2011-03-04 17:18+0000\n"
 "Last-Translator: Claudio André <claudio.andre@correios.net.br>\n"
 "Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -567,8 +567,9 @@ msgid "days"
 msgstr "dias"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "Habilitar ringtones"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1267,6 +1268,9 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "Largura de banda"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "Supressão de _Eco"
+
 #~ msgid "Custom commands on incoming calls with URL"
 #~ msgstr "Comandos padrões de ligações recebidas com URL"
 
@@ -1617,9 +1621,6 @@ msgstr ""
 #~ "com,,maxime.chambreuil@savoirfairelinux.com,ricardo.macedo@yahoo.com.br,,"
 #~ "kalibslack@gmail.com"
 
-#~ msgid "_Echo Suppression"
-#~ msgstr "Supressão de _Eco"
-
 #~ msgid "Email address"
 #~ msgstr "Endereço de e-mail"
 
diff --git a/lang/ru.po b/lang/ru.po
index 629dbd72f18056b0bb59ab84ae2945c4a83ec5ea..bea458d1d1349f2a38f5bf117541ddcd037196fa 100644
--- a/lang/ru.po
+++ b/lang/ru.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: SFLphone 0.9.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-07-01 20:28+0000\n"
 "Last-Translator: DMG <Unknown>\n"
 "Language-Team: Savoir-Faire Linux Inc <sflphoneteam@savoirfairelinux.com>\n"
@@ -570,8 +570,9 @@ msgid "days"
 msgstr "дней"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "Задействовать мелодии вызова"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1268,6 +1269,9 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "Полоса пропускания"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "Борьба с _эхо"
+
 #~ msgid "Custom commands on incoming calls with URL"
 #~ msgstr "Пользовательская команда при входящих вызовах с URL"
 
@@ -1584,9 +1588,6 @@ msgstr ""
 #~ "emmanuel.milou@savoirfairelinux.com,,,,maxime.chambreuil@savoirfairelinux."
 #~ "com,,sedov@webmail.perm.ru"
 
-#~ msgid "_Echo Suppression"
-#~ msgstr "Борьба с _эхо"
-
 #~ msgid "Email address"
 #~ msgstr "Адрес эл. почты"
 
diff --git a/lang/sflphone.pot b/lang/sflphone.pot
index ef0aea4152f04258e3bf161c0b8ea2ee96925766..c5f871b297ee80c38926fdab2924e680ac4d9c93 100644
--- a/lang/sflphone.pot
+++ b/lang/sflphone.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/lang/sv.po b/lang/sv.po
index 1f91e104ebbfcbfac80b70ca3395e477b00ab90b..f7d745a477ec814781cee121591450c9d220170d 100644
--- a/lang/sv.po
+++ b/lang/sv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2011-03-14 09:51+0000\n"
 "Last-Translator: Daniel Nylander <yeager@ubuntu.com>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -1243,6 +1243,19 @@ msgid ""
 "Codecs not found"
 msgstr ""
 
+#~ msgid ""
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
+#~ msgstr ""
+#~ "Kan inte ansluta till SFLphone-servern.\n"
+#~ "Se till att daemonen är igång."
+
+#~ msgid "Codecs"
+#~ msgstr "Kodekar"
+
+#~ msgid "Bandwidth"
+#~ msgstr "Bandbredd"
+
 #~ msgid ""
 #~ "GConf error:\n"
 #~ "  %s"
@@ -1259,19 +1272,6 @@ msgstr ""
 #~ "Försäkra dig om att demonen är igång.\n"
 #~ "Fel: %s"
 
-#~ msgid "Codecs"
-#~ msgstr "Kodekar"
-
-#~ msgid "Bandwidth"
-#~ msgstr "Bandbredd"
-
-#~ msgid ""
-#~ "Unable to connect to the SFLphone server.\n"
-#~ "Make sure the daemon is running."
-#~ msgstr ""
-#~ "Kan inte ansluta till SFLphone-servern.\n"
-#~ "Se till att daemonen är igång."
-
 #~ msgctxt "NAME OF TRANSLATORS"
 #~ msgid "Your names"
 #~ msgstr " ,Launchpad Contributions:,Daniel Nylander,Gabriel Thörnblad"
diff --git a/lang/te.po b/lang/te.po
index 6f30cbcd39f164ac1ab9fab92eda16e4eb255bee..a0533e46444ca1746efdb401048d914b21b62e80 100644
--- a/lang/te.po
+++ b/lang/te.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2011-03-07 16:09+0000\n"
 "Last-Translator: వీవెన్ (Veeven) <Unknown>\n"
 "Language-Team: Telugu <te@li.org>\n"
diff --git a/lang/tr.po b/lang/tr.po
index 77635021097938e334d3b0bf224167404419f12e..059beaac35560b25d2ca420a5393b8a9d3f4d634 100644
--- a/lang/tr.po
+++ b/lang/tr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: sflphone\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2010-10-31 18:09+0000\n"
 "Last-Translator: Translate it <Unknown>\n"
 "Language-Team: Turkish <tr@li.org>\n"
diff --git a/lang/zh_CN.po b/lang/zh_CN.po
index 9d89917d8ea8a638a4ebc02034b07f939a3f4d1f..8f07eac3d86fb3b9502f9e8e8f5f6cb4d280c064 100644
--- a/lang/zh_CN.po
+++ b/lang/zh_CN.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: SFLphone 0.9.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2011-03-08 13:53+0000\n"
 "Last-Translator: 英华 <wantinghard@gmail.com>\n"
 "Language-Team: SavoirFaireLinux Inc <sflphoneteam@savoirfairelinux.com>\n"
@@ -559,8 +559,9 @@ msgid "days"
 msgstr "天"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "启用铃声"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1242,6 +1243,9 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "带宽"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "回声抑制(_E)"
+
 #~ msgid "Custom commands on incoming calls with URL"
 #~ msgstr "定制对带有URL的来电的处理"
 
@@ -1812,9 +1816,6 @@ msgstr ""
 #~ "xu@gmail.com,emmanuel.milou@savoirfairelinux.com,,wzssyqa@gmail.com,"
 #~ "rainofchaos@gmail.com,wantinghard@gmail.com"
 
-#~ msgid "_Echo Suppression"
-#~ msgstr "回声抑制(_E)"
-
 #~ msgid "Email address"
 #~ msgstr "邮件地址"
 
diff --git a/lang/zh_HK.po b/lang/zh_HK.po
index 75ff8f9b03432b9a7791d66616b242f3438ae8f5..4bad78f69288201bcfbec768b61f2f8decb15a3f 100644
--- a/lang/zh_HK.po
+++ b/lang/zh_HK.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: SFLphone 0.9.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2011-03-08 13:53+0000\n"
 "Last-Translator: 英华 <wantinghard@gmail.com>\n"
 "Language-Team: SavoirFaireLinux Inc <sflphoneteam@savoirfairelinux.com>\n"
@@ -559,8 +559,9 @@ msgid "days"
 msgstr "天"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "启用铃声"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1242,6 +1243,9 @@ msgstr ""
 #~ msgid "Bandwidth"
 #~ msgstr "带宽"
 
+#~ msgid "_Echo Suppression"
+#~ msgstr "回声抑制(_E)"
+
 #~ msgid "Custom commands on incoming calls with URL"
 #~ msgstr "定制对带有URL的来电的处理"
 
@@ -1813,9 +1817,6 @@ msgstr ""
 #~ "xu@gmail.com,emmanuel.milou@savoirfairelinux.com,,wzssyqa@gmail.com,"
 #~ "rainofchaos@gmail.com,wantinghard@gmail.com"
 
-#~ msgid "_Echo Suppression"
-#~ msgstr "回声抑制(_E)"
-
 #~ msgid "Email address"
 #~ msgstr "邮件地址"
 
diff --git a/lang/zh_TW.po b/lang/zh_TW.po
index 5a634aeeee6a0ae5d82d79c42252242671ec69b8..b3f3bc45628fca68937c17f49bb7218bed319186 100644
--- a/lang/zh_TW.po
+++ b/lang/zh_TW.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: SFLphone 0.9.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-02 11:43-0500\n"
+"POT-Creation-Date: 2012-01-04 16:32-0500\n"
 "PO-Revision-Date: 2011-03-08 13:53+0000\n"
 "Last-Translator: 英华 <wantinghard@gmail.com>\n"
 "Language-Team: SavoirFaireLinux Inc <sflphoneteam@savoirfairelinux.com>\n"
@@ -559,8 +559,9 @@ msgid "days"
 msgstr "天"
 
 #: ../gnome/src/config/preferencesdialog.c:253
+#, fuzzy
 msgid "Instant Messaging"
-msgstr ""
+msgstr "启用铃声"
 
 #: ../gnome/src/config/preferencesdialog.c:257
 #, fuzzy
@@ -1230,9 +1231,8 @@ msgstr ""
 
 #, fuzzy
 #~ msgid ""
-#~ "Unable to initialize.\n"
-#~ "Make sure the daemon is running.\n"
-#~ "Error: %s"
+#~ "Unable to connect to the SFLphone server.\n"
+#~ "Make sure the daemon is running."
 #~ msgstr ""
 #~ "连接SFLphone服务器失败.\n"
 #~ "请检查daemon是否还在运行."