diff --git a/app/models/user.rb b/app/models/user.rb
index 02915fadc33795edaf8c55303ac648255f934908..9c1f3d7cc9f99f6779e427b84b274e7b66e59458 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -360,6 +360,8 @@ class User < ActiveRecord::Base
   def setup(opts)
     self.username = opts[:username]
     self.email = opts[:email]
+    self.language = opts[:language]
+    self.language ||= I18n.locale.to_s
     self.valid?
     errors = self.errors
     errors.delete :person
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index bf4bb386f4c8bc880c8995e56b45358fb8484eaa..d564ddc5fdeeaca5bcfe1cfcc1f9494d9a7ca2f8 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -203,9 +203,14 @@ describe User do
       it "should save with current language if blank" do
         I18n.locale = :fr
         user = User.build(:username => 'max', :email => 'foo@bar.com', :password => 'password', :password_confirmation => 'password')
-        user.save!
         user.language.should == 'fr'
       end
+
+      it "should save with language what is set" do
+        I18n.locale = :fr
+        user = User.build(:username => 'max', :email => 'foo@bar.com', :password => 'password', :password_confirmation => 'password', :language => 'de')
+        user.language.should == 'de'
+      end
     end
   end