diff --git a/app/builders/language_builder.rb b/app/builders/language_builder.rb
new file mode 100644
index 0000000000000000000000000000000000000000..7263a195a3557f50d561157e925a023892a44a18
--- /dev/null
+++ b/app/builders/language_builder.rb
@@ -0,0 +1,22 @@
+class LanguageBuilder < Builder
+  ##
+  # receive a list of ids and return a list of languages
+  # useful for create a new learning object
+  #
+  def self.build(objects = [])
+    super(language_repository, objects, true, 'rid')
+  end
+
+  def self.build_from_orientdb(args = {})
+    super(args) do
+      obj = Language.new(
+          id: args['@rid'],
+          name: args['name'],
+          code: args['code']
+      )
+      obj
+    end
+  end
+
+  private
+end
diff --git a/app/builders/learning_object_builder.rb b/app/builders/learning_object_builder.rb
index 8f7eec29af5b9cfda451a3dfe90c724cc185e485..16d0b2af8c5d00aa11c6de3938796b1aa069c8a4 100644
--- a/app/builders/learning_object_builder.rb
+++ b/app/builders/learning_object_builder.rb
@@ -35,11 +35,7 @@ class LearningObjectBuilder < Builder
   private
 
   def self.build_bitstreams_collection(bitstreams)
-    bitstreams.map do |bitstream|
-      hash = bitstream
-      hash = JSON.parse(bitstream) if bitstream.class == String
-      ::LearningObject::AttachmentBuilder.build_from_orientdb(hash)
-    end
+    bitstreams.map {|bitstream| ::LearningObject::AttachmentBuilder.build_from_orientdb(JSON.parse(bitstream)) }
   end
 
 end
diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb
index 2d009d4e25c5612d1ddbabc992daf12274f84b99..281440f028b375722cadec2fcb9bc12d5015735a 100644
--- a/app/controllers/learning_objects_controller.rb
+++ b/app/controllers/learning_objects_controller.rb
@@ -23,6 +23,7 @@ class LearningObjectsController < ApplicationController
     @school_levels = ['EducaçÃĢo Infantil', 'Ensino Fundamental', 'Ensino MÃĐdio']
     @subjects = Subject.default_list
     @types = learning_object_repository.types
+    @languages = language_repository.all
   end
 
   # GET /learning_objects/1/edit
diff --git a/app/models/language.rb b/app/models/language.rb
new file mode 100644
index 0000000000000000000000000000000000000000..7f310cdc03027afcb2ad8d7d9acfec424f45e48f
--- /dev/null
+++ b/app/models/language.rb
@@ -0,0 +1,8 @@
+class Language
+  include ActiveModel::Model
+  include RepositoriesProxy
+  include OrientDbSerializable
+  include Metadatable
+
+  attr_accessor :id, :name, :code
+end
\ No newline at end of file
diff --git a/app/repositories/orient_db/associations/languages_association.rb b/app/repositories/orient_db/associations/languages_association.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a84ad8f1c6dd19e3549d3602dc68d71d51aa52bb
--- /dev/null
+++ b/app/repositories/orient_db/associations/languages_association.rb
@@ -0,0 +1,14 @@
+class OrientDb::Associations::LanguagesAssociation < OrientDb::Association
+
+  def can_create?
+    true
+  end
+
+  protected
+
+  def execute
+    create_edge("HasLang", @object.id, @object.language)
+  end
+
+end
+
diff --git a/app/repositories/orient_db/associations/learning_object_associations.rb b/app/repositories/orient_db/associations/learning_object_associations.rb
index 888f4cddf1de226b71831a0f6afacc56f8af0f56..f6ef622337f682ed65c7393c5b75a7a54d6e0b7e 100644
--- a/app/repositories/orient_db/associations/learning_object_associations.rb
+++ b/app/repositories/orient_db/associations/learning_object_associations.rb
@@ -4,7 +4,8 @@ class OrientDb::Associations::LearningObjectAssociations < OrientDb::Association
     [
         OrientDb::Associations::SubjectsAssociation.new(object, connection),
         OrientDb::Associations::AttributesAssociation.new(object, connection),
-        OrientDb::Associations::PublisherAssociation.new(object, connection)
+        OrientDb::Associations::PublisherAssociation.new(object, connection),
+        OrientDb::Associations::LanguagesAssociation.new(object, connection)
     ]
   end
 
diff --git a/app/repositories/orient_db/language_repository.rb b/app/repositories/orient_db/language_repository.rb
new file mode 100644
index 0000000000000000000000000000000000000000..33b4b2228907b13bf72f3aa93a6e1a11dd42ab22
--- /dev/null
+++ b/app/repositories/orient_db/language_repository.rb
@@ -0,0 +1,14 @@
+require 'json'
+module OrientDb
+  class LanguageRepository < Base
+    include OrientDb::Methods::SocialMethods
+    include OrientDb::Methods::EdgeMethods
+    include OrientDb::Methods::CountableMethods
+    include RepositoriesProxy
+
+    def all
+      result = connection.query("Select from Language")
+      build_objects result
+    end
+  end
+end
diff --git a/app/views/learning_objects/_form.html.erb b/app/views/learning_objects/_form.html.erb
index c82330503d3626ac311a5d29cae3ff31e0a9a9bd..ec7ba2976a3cc109b7fd988e9e737cd028b4cc9e 100644
--- a/app/views/learning_objects/_form.html.erb
+++ b/app/views/learning_objects/_form.html.erb
@@ -27,25 +27,26 @@
             <%= f.label :description, "Descreva seu objeto" %>
             <%= f.text_area :description, class: "form-control" %><br>
 
-            <%= f.label :language, "Idioma do objeto" %>
-            <%= f.text_field :language, class: "form-control" %><br>
-
+            <%= f.label :language, "Idioma do objeto" %><br>
+            <%= f.collection_select(:language, @languages, :id, :name,{ prompt: "Por favor informe o idioma do objeto "}, {class: "form-control"})%>
+            <br>
             <%= f.label :author, "Autor" %>
             <%= f.text_field :author, class: "form-control" %><br>
 
             <%= f.label :type, "Tipo do objeto" %>
             <% @types.each do |type| %>
-                <br><input type="radio" name="learning_object[type]" value="<%= type %>"> <%= type %>
+                <div class="radio">
+                  <label><input type="radio" name="learning_object[type]" value="<%= type %>"> <%= type %></label>
+                </div>
             <% end %>
-            <br><br>
 
-            <%= f.label :subjects, 'Assuntos (Selecione 1 ou mais assuntos)' %>
+            <%= f.label :subjects, 'Assuntos' %>
             <select id='subjectSelect' name="learning_object[subjects][]" multiple>
               <%= @subjects.each do |subject| %>
                   <option value='<%= subject.id %>'><%= subject.name %></option>
               <% end %>
             </select>
-            <br><br>
+            <span class="help-block">Selecione um ou mais assuntos</span>
 
             <%= f.label :school_level, "Nível Escolar" %><br>
             <select name="learning_object[school_level]">
diff --git a/config/initializers/repositories.rb b/config/initializers/repositories.rb
index 73115d23bec271f125d40c604098efbd202cb35c..2220f03bac40a4f6f3376350491e8956b19ff6b1 100644
--- a/config/initializers/repositories.rb
+++ b/config/initializers/repositories.rb
@@ -4,6 +4,7 @@ orientdb_client = OrientdbService.create_client
 
 repositories = {
     learning_object: OrientDb::LearningObjectRepository.new(orientdb_client),
+    language: OrientDb::LanguageRepository.new(orientdb_client),
     user: UserRepositoryProxy.new(OrientDb::UserRepository.new(orientdb_client)),
     subject: OrientDb::SubjectRepository.new(orientdb_client),
     institution: OrientDb::InstitutionRepository.new(orientdb_client),