diff --git a/app/controllers/admin/communication/extranets/alumni_controller.rb b/app/controllers/admin/communication/extranets/alumni_controller.rb
index cc4f5fbc7e3bceb210998b6b7b516ac5fad56b6a..fc15ee3132c1a95bb2621a8cfcb685bbc930ccbf 100644
--- a/app/controllers/admin/communication/extranets/alumni_controller.rb
+++ b/app/controllers/admin/communication/extranets/alumni_controller.rb
@@ -4,7 +4,7 @@ class Admin::Communication::Extranets::AlumniController < Admin::Communication::
     @alumni = @extranet.alumni
     @cohorts = @extranet.cohorts
     @years = @extranet.years
-    @organizations = @extranet.organizations
+    @organizations = @extranet.organizations.for_language_id(current_university.default_language_id)
     breadcrumb
     add_breadcrumb Communication::Extranet.human_attribute_name(:feature_alumni)
   end
diff --git a/app/controllers/admin/communication/extranets/contacts_controller.rb b/app/controllers/admin/communication/extranets/contacts_controller.rb
index 7a88f34f4bf16457a644bbd3094c79574c096291..6283e05b3c111c225d3b8c241221eee617bdec51 100644
--- a/app/controllers/admin/communication/extranets/contacts_controller.rb
+++ b/app/controllers/admin/communication/extranets/contacts_controller.rb
@@ -1,33 +1,35 @@
 class Admin::Communication::Extranets::ContactsController < Admin::Communication::Extranets::ApplicationController
   def index
-    respond_to do |format|
-      format.html {
-        @people = current_university.people.ordered.page params[:persons_page]
-        @organizations = current_university.organizations.ordered.page params[:organizations_page]
-      }
-      format.xlsx {
-        # params[export] can be "people" oe "organizations"
-        export = params['export']
-        case params['export']
-        when 'people'
-          @people = @extranet.connected_people.ordered
-        when 'organizations'
-          @organizations = @extranet.connected_organizations.ordered
-        else
-          raise ActionController::RoutingError.new('Not Found')
-        end
-
-        filename = "#{export}-#{Time.now.strftime("%Y%m%d%H%M%S")}.xlsx"
-        response.headers['Content-Disposition'] = "attachment; filename=#{filename}"
-        render "admin/university/#{export}/index"
-      }
-    end
-
-
+    @people = current_university.people
+                                .for_language_id(current_university.default_language_id)
+                                .ordered
+                                .page(params[:persons_page])
+    @organizations = current_university.organizations
+                                        .for_language_id(current_university.default_language_id)
+                                        .ordered
+                                        .page(params[:organizations_page])
     breadcrumb
     add_breadcrumb Communication::Extranet.human_attribute_name(:feature_contacts)
   end
 
+  def export_people
+    @people = @extranet.connected_people
+                       .for_language_id(current_university.default_language_id)
+                       .ordered
+    filename = "people-#{Time.now.strftime("%Y%m%d%H%M%S")}.xlsx"
+    response.headers['Content-Disposition'] = "attachment; filename=#{filename}"
+    render "admin/university/people/index"
+  end
+
+  def export_organizations
+    @organizations = @extranet.connected_organizations
+                              .for_language_id(current_university.default_language_id)
+                              .ordered
+    filename = "organizations-#{Time.now.strftime("%Y%m%d%H%M%S")}.xlsx"
+    response.headers['Content-Disposition'] = "attachment; filename=#{filename}"
+    render "admin/university/organizations/index"
+  end
+
   def connect
     load_object
     @extranet.connect @object
@@ -48,7 +50,6 @@ class Admin::Communication::Extranets::ContactsController < Admin::Communication
     head :ok
   end
 
-
   protected
 
   def load_object
diff --git a/app/controllers/admin/university/organizations_controller.rb b/app/controllers/admin/university/organizations_controller.rb
index 181b171692144fc886481f591c25117f4f010cd1..075b7d2b4c118c85aa3cc725d8aa08885fd309c8 100644
--- a/app/controllers/admin/university/organizations_controller.rb
+++ b/app/controllers/admin/university/organizations_controller.rb
@@ -9,6 +9,7 @@ class Admin::University::OrganizationsController < Admin::University::Applicatio
 
   def index
     @organizations = apply_scopes(@organizations)
+                      .for_language_id(current_university.default_language_id)
                       .ordered
 
     respond_to do |format|
@@ -26,15 +27,32 @@ class Admin::University::OrganizationsController < Admin::University::Applicatio
 
   def search
     @term = params[:term].to_s
+    language = Language.find_by(iso_code: params[:lang])
     @organizations = current_university.organizations
                                         .search_by_siren_or_name(@term)
                                         .ordered
+    @organizations = @organizations.joins(:language)
+                                    .where(languages: { 
+                                      iso_code: language.iso_code 
+                                    }) if language.present?
   end
 
   def show
     breadcrumb
   end
 
+  def in_language
+    language = Language.find_by!(iso_code: params[:lang])
+    translation = @organization.find_or_translate!(language)
+    if translation.newly_translated
+      # There's an attribute accessor named "newly_translated" that we set to true
+      # when we just created the translation. We use it to redirect to the form instead of the show.
+      redirect_to [:edit, :admin, translation.becomes(translation.class.base_class)]
+    else
+      redirect_to [:admin, translation.becomes(translation.class.base_class)]
+    end
+  end
+
   def static
     @about = @organization
     @website = @organization.websites&.first
diff --git a/app/controllers/extranet/organizations_controller.rb b/app/controllers/extranet/organizations_controller.rb
index af318f25a12e5deabde835ae1e8818b5be56f243..99885416da54d68741d70faa8857f1a4f2bb171a 100644
--- a/app/controllers/extranet/organizations_controller.rb
+++ b/app/controllers/extranet/organizations_controller.rb
@@ -4,8 +4,9 @@ class Extranet::OrganizationsController < Extranet::ApplicationController
   def search
     @term = params[:term].to_s
     @organizations = current_university.organizations
-                                      .search_by_siren_or_name(@term)
-                                      .ordered
+                                       .for_language_id(current_user.language_id)
+                                       .search_by_siren_or_name(@term)
+                                       .ordered
   end
 
   def show
diff --git a/app/models/communication/block/component/organization.rb b/app/models/communication/block/component/organization.rb
index 1e095f8772e9780bdc62c9a15d4e6e11369e0fe1..1acd7bd0d9ccbfcb3a297ea22ea179d9ec22003e 100644
--- a/app/models/communication/block/component/organization.rb
+++ b/app/models/communication/block/component/organization.rb
@@ -1,7 +1,10 @@
 class Communication::Block::Component::Organization < Communication::Block::Component::Base
 
   def organization
-    template.block.university.organizations.find_by(id: data)
+    template.block
+            .university
+            .organizations
+            .find_by(id: data)
   end
 
   def dependencies
@@ -9,7 +12,8 @@ class Communication::Block::Component::Organization < Communication::Block::Comp
   end
 
   def translate!
-    # TODO: Traduction des Organisations à faire
+    return unless data.present?
+    @data = organization.find_or_translate!(template.language).id
   end
 
 end
diff --git a/app/models/communication/block/component/person.rb b/app/models/communication/block/component/person.rb
index a03a1538b4d8712ee68d0b73935403030c1772e6..334010b21acfa601c49b0b3471cc60d5b248534e 100644
--- a/app/models/communication/block/component/person.rb
+++ b/app/models/communication/block/component/person.rb
@@ -1,7 +1,10 @@
 class Communication::Block::Component::Person < Communication::Block::Component::Base
 
   def person
-    template.block.university.people.find_by(id: data)
+    template.block
+            .university
+            .people
+            .find_by(id: data)
   end
 
   def dependencies
diff --git a/app/models/university/organization.rb b/app/models/university/organization.rb
index 0ff6fddf33b60316ff8d1ff01f1f495d210591f4..9cdd65b6915ff386e3e333d4b83de8864d5a2111 100644
--- a/app/models/university/organization.rb
+++ b/app/models/university/organization.rb
@@ -29,15 +29,21 @@
 #  zipcode            :string
 #  created_at         :datetime         not null
 #  updated_at         :datetime         not null
+#  language_id        :uuid             indexed
+#  original_id        :uuid             indexed
 #  university_id      :uuid             not null, indexed
 #
 # Indexes
 #
+#  index_university_organizations_on_language_id    (language_id)
+#  index_university_organizations_on_original_id    (original_id)
 #  index_university_organizations_on_university_id  (university_id)
 #
 # Foreign Keys
 #
 #  fk_rails_35fcd198e0  (university_id => universities.id)
+#  fk_rails_3a9208fa29  (language_id => languages.id)
+#  fk_rails_5af11ea0cc  (original_id => university_organizations.id)
 #
 class University::Organization < ApplicationRecord
   include AsIndirectObject
@@ -49,6 +55,7 @@ class University::Organization < ApplicationRecord
   include WithGitFiles
   include WithPermalink
   include WithSlug
+  include WithTranslations
   include WithUniversity
 
   attr_accessor :created_from_extranet
@@ -67,7 +74,7 @@ class University::Organization < ApplicationRecord
   has_one_attached_deletable :logo_on_dark_background
 
   validates_presence_of :name
-  validates_uniqueness_of :name, scope: :university_id
+  validates_uniqueness_of :name, scope: [:university_id, :language_id]
   validates :logo, size: { less_than: 1.megabytes }
   validates :logo_on_dark_background, size: { less_than: 1.megabytes }
   # Organization can be created from extranet with only their name. Be careful for future validators.
diff --git a/app/services/filters/admin/university/alumni.rb b/app/services/filters/admin/university/alumni.rb
index fec367846af24ff838282d58eb38449375bee766..17f2ed3fe355717d2bc719d8d53db89a36cfd198 100644
--- a/app/services/filters/admin/university/alumni.rb
+++ b/app/services/filters/admin/university/alumni.rb
@@ -3,7 +3,7 @@ module Filters
     def initialize(user)
       super
       add :for_alumni_organization,
-          user.university.organizations.ordered,
+          user.university.organizations.for_language_id(current_university.default_language_id).ordered,
           I18n.t(
             'filters.attributes.element',
             element: University::Organization.model_name.human.downcase
diff --git a/app/services/importers/hash_to_experience.rb b/app/services/importers/hash_to_experience.rb
index 8f6e88ffb21358bf44118b21b202df29b990deea..6c3604a921f2e2aeb6ee5fe88df21ba6a65d0a79 100644
--- a/app/services/importers/hash_to_experience.rb
+++ b/app/services/importers/hash_to_experience.rb
@@ -51,19 +51,23 @@ module Importers
         # Search by SIREN+NIC, then SIREN, then name, or create it with everything
         if @company_siren.present? && @company_nic.present?
           obj = @university.organizations
-                                   .find_by siren: @company_siren,
-                                            nic: @company_nic
+                            .for_language_id(current_university.default_language_id)
+                            .find_by siren: @company_siren,
+                                    nic: @company_nic
         elsif @company_siren.present?
           obj = @university.organizations
-                                   .find_by siren: @company_siren
+                            .for_language_id(current_university.default_language_id)
+                            .find_by siren: @company_siren
         end
         obj ||= @university.organizations
-                                   .find_by name: @company_name
+                            .for_language_id(current_university.default_language_id)
+                            .find_by name: @company_name
         obj ||= @university.organizations
-                                   .where( name: @company_name,
-                                           siren: @company_siren,
-                                           nic: @company_nic)
-                                   .first_or_create
+                            .for_language_id(current_university.default_language_id)
+                            .where( name: @company_name,
+                                    siren: @company_siren,
+                                    nic: @company_nic)
+                            .first_or_create
         obj
       end
     end
diff --git a/app/views/admin/communication/blocks/components/organization/_edit.html.erb b/app/views/admin/communication/blocks/components/organization/_edit.html.erb
index 48fb8775666bb52de24429db995dcbdfaeca9622..3d2a0a7e238311d692eed91fda2d36f8970ff960 100644
--- a/app/views/admin/communication/blocks/components/organization/_edit.html.erb
+++ b/app/views/admin/communication/blocks/components/organization/_edit.html.erb
@@ -1,5 +1,6 @@
-<%# TODO: Traduire les organisations %>
-<% organizations = current_university.organizations.ordered %>
+<% organizations = current_university.organizations
+                                      .for_language(block.language)
+                                      .ordered %>
 <% unless label.blank? %>
   <label  class="form-label"
           :for="<%= dom_id.html_safe %>">
diff --git a/app/views/admin/communication/extranets/contacts/index.html.erb b/app/views/admin/communication/extranets/contacts/index.html.erb
index 1d5c9c26f4d727027b62ff8b71e19afffaa0edaf..617da5e7977866a223e2f2fe142d95b5cc451b7f 100644
--- a/app/views/admin/communication/extranets/contacts/index.html.erb
+++ b/app/views/admin/communication/extranets/contacts/index.html.erb
@@ -2,7 +2,7 @@
 
 <%= render 'admin/communication/extranets/sidebar' do %>
   <% action = link_to t('export'),
-                    admin_communication_extranet_contacts_path(extranet_id: @extranet.id, export: 'people', format: :xlsx),
+                    export_people_admin_communication_extranet_contacts_path(extranet_id: @extranet.id, format: :xlsx),
                     class: button_classes('ms-1') if can?(:show, University::Person) %>
   <%= osuny_panel University::Person.model_name.human(count: 2), action: action do %>
     <div class="table-responsive">
@@ -21,7 +21,7 @@
     <%= paginate @people, theme: 'bootstrap-5', param_name: :persons_page %>
   <% end %>
   <% action = link_to t('export'),
-                    admin_communication_extranet_contacts_path(extranet_id: @extranet.id, export: 'organizations', format: :xlsx),
+                    export_organizations_admin_communication_extranet_contacts_path(extranet_id: @extranet.id, format: :xlsx),
                     class: button_classes('ms-1') if can?(:show, University::Person) %>
   <%= osuny_panel University::Organization.model_name.human(count: 2), action: action do %>
     <div class="table-responsive">
diff --git a/app/views/admin/university/organizations/show.html.erb b/app/views/admin/university/organizations/show.html.erb
index 3b96834afb1074cbb29af9fa55d6f9909ad41bad..032e2489d340bdc6c98cec97da2fb16e89655082 100644
--- a/app/views/admin/university/organizations/show.html.erb
+++ b/app/views/admin/university/organizations/show.html.erb
@@ -18,20 +18,26 @@
           ].each do |property| %>
           <% value = @organization.send property %>
           <% next if value.blank? %>
-          <div class="col-xxl-6">
+          <div class="col-md-4">
             <%= osuny_label University::Organization.human_attribute_name(property) %>
-            <p><%= value %></p>
+          </div>
+          <div class="col-md-8">
+              <p><%= value %></p>
           </div>
         <% end %>
         <% if @organization.country.present? %>
-          <div class="col-xxl-6">
+          <div class="col-md-4">
             <%= osuny_label University::Organization.human_attribute_name('country') %>
+          </div>
+          <div class="col-md-8">
             <p><%= @organization.country_name %></p>
           </div>
         <% end %>
         <% if @organization.geolocated? %>
-          <div class="col-xxl-6">
+          <div class="col-md-4">
             <%= osuny_label University::Organization.human_attribute_name('geolocation') %>
+          </div>
+          <div class="col-md-8">
             <p><%= @organization.geo_point.to_s %></p>
           </div>
         <% end %>
@@ -40,9 +46,11 @@
     <%= osuny_panel University::Organization.human_attribute_name('digital') do %>
       <div class="row pure__row--small">
         <% unless @organization.url.blank? %>
-          <div class="col-xxl-6">
+          <div class="col-md-4">
             <%= osuny_label University::Organization.human_attribute_name('url') %>
-            <p><%= link_to  @organization.url,
+          </div>
+          <div class="col-md-8">
+              <p><%= link_to  @organization.url,
                             @organization.url,
                             target: :_blank %></p>
           </div>
@@ -56,8 +64,10 @@
             ].each do |property| %>
           <% value = @organization.send property %>
           <% next if value.blank? %>
-          <div class="col-xxl-6">
+          <div class="col-md-4">
             <%= osuny_label University::Organization.human_attribute_name(property) %>
+          </div>
+          <div class="col-md-8">
             <p><%= value %></p>
           </div>
         <% end %>
@@ -66,21 +76,29 @@
 
     <%= osuny_panel University::Organization.human_attribute_name('legal') do %>
       <div class="row pure__row--small">
-        <div class="col-xxl-6">
+        <div class="col-md-4">
           <%= osuny_label University::Organization.human_attribute_name('long_name') %>
+        </div>
+        <div class="col-md-8">
           <p><%= @organization.long_name %></p>
         </div>
-        <div class="col-xxl-6">
+        <div class="col-md-4">
           <%= osuny_label University::Organization.human_attribute_name('kind') %>
+        </div>
+        <div class="col-md-8">
           <p><%= @organization.kind_i18n %></p>
         </div>
-        <div class="col-xxl-6">
+        <div class="col-md-4">
           <%= osuny_label University::Organization.human_attribute_name('siren') %>
+        </div>
+        <div class="col-md-8">
           <p><%= @organization.siren %></p>
         </div>
       </div>
     <% end %>
 
+    <%= osuny_separator %>
+
     <%= render 'admin/communication/blocks/content/editor', about: @organization %>
   </div>
 
@@ -92,6 +110,8 @@
       <p><%= t @organization.active %></>
     <% end %>
 
+    <%= render 'admin/application/i18n/widget', about: @organization %>
+
     <% if @organization.categories.any? %>
       <%= osuny_panel University::Organization.human_attribute_name('categories') do %>
         <ul class="list-unstyled">
diff --git a/app/views/admin/university/people/experiences/_experience_fields.html.erb b/app/views/admin/university/people/experiences/_experience_fields.html.erb
index 820d47b06518502b08d69d3a148047b6e9d24450..2b05b2c361f0862379a9991bfc3e864ec01f4adb 100644
--- a/app/views/admin/university/people/experiences/_experience_fields.html.erb
+++ b/app/views/admin/university/people/experiences/_experience_fields.html.erb
@@ -10,7 +10,9 @@ hint = can?(:create, University::Organization) ?  t('university.person.experienc
         <div class="row flex-fill">
           <div class="col-md-6 col-xxl-4">
             <%= f.association :organization,
-                              collection: current_university.organizations.ordered,
+                              collection: current_university.organizations
+                                                            .for_language_id(current_university.default_language_id)
+                                                            .ordered,
                               include_blank: t('simple_form.include_blanks.defaults.organization'),
                               hint: hint,
                               required: true,
diff --git a/config/routes/admin/communication.rb b/config/routes/admin/communication.rb
index ef9c971ee0782a96ca3a25fbc54c56219323670f..f448c4dba79c173400f385e5270ce74463ee9344 100644
--- a/config/routes/admin/communication.rb
+++ b/config/routes/admin/communication.rb
@@ -81,6 +81,8 @@ namespace :communication do
     resources :alumni, only: :index, controller: 'extranets/alumni'
     resources :contacts, only: :index, controller: 'extranets/contacts' do
       collection do
+        get :export_people
+        get :export_organizations
         post :toggle
         post :connect
         post :disconnect
diff --git a/config/routes/admin/university.rb b/config/routes/admin/university.rb
index af658daef3fa0fbf537f1098cc0c5bc593d12dc2..10d8c533ac62025ac1d2e7a9e773f3a78ca7b09a 100644
--- a/config/routes/admin/university.rb
+++ b/config/routes/admin/university.rb
@@ -38,6 +38,7 @@ namespace :university do
     end
     member do
       get :static
+      get "/translations/:lang" => "organizations#in_language", as: :show_in_language
     end
   end
   root to: 'dashboard#index'
diff --git a/db/migrate/20230705103400_addi18n_infos_to_university_organizations.rb b/db/migrate/20230705103400_addi18n_infos_to_university_organizations.rb
new file mode 100644
index 0000000000000000000000000000000000000000..7e0d5a56596b80da32fa7666ceac7120698d45b9
--- /dev/null
+++ b/db/migrate/20230705103400_addi18n_infos_to_university_organizations.rb
@@ -0,0 +1,16 @@
+class Addi18nInfosToUniversityOrganizations < ActiveRecord::Migration[7.0]
+  def up
+    add_reference :university_organizations, :language, foreign_key: true, type: :uuid
+    add_reference :university_organizations, :original, foreign_key: {to_table: :university_organizations}, type: :uuid
+
+    University::Organization.reset_column_information
+    University.all.find_each do |university|
+      university.organizations.update_all(language_id: university.default_language_id)
+    end
+  end
+
+  def down
+    remove_reference :university_organizations, :language
+    remove_reference :university_organizations, :original
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 414774df67b0f0196dee61b711ca319bea66ac28..fa52bb2e18d59a435196d29a5ff37709181ce345 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema[7.0].define(version: 2023_07_05_073214) do
+ActiveRecord::Schema[7.0].define(version: 2023_07_05_103400) do
   # These are extensions that must be enabled in order to support this database
   enable_extension "pgcrypto"
   enable_extension "plpgsql"
@@ -944,6 +944,10 @@ ActiveRecord::Schema[7.0].define(version: 2023_07_05_073214) do
     t.float "longitude"
     t.string "address_name"
     t.string "address_additional"
+    t.uuid "language_id"
+    t.uuid "original_id"
+    t.index ["language_id"], name: "index_university_organizations_on_language_id"
+    t.index ["original_id"], name: "index_university_organizations_on_original_id"
     t.index ["university_id"], name: "index_university_organizations_on_university_id"
   end
 
@@ -1211,7 +1215,9 @@ ActiveRecord::Schema[7.0].define(version: 2023_07_05_073214) do
   add_foreign_key "research_theses", "university_people", column: "director_id"
   add_foreign_key "universities", "languages", column: "default_language_id"
   add_foreign_key "university_organization_categories", "universities"
+  add_foreign_key "university_organizations", "languages"
   add_foreign_key "university_organizations", "universities"
+  add_foreign_key "university_organizations", "university_organizations", column: "original_id"
   add_foreign_key "university_organizations_categories", "university_organization_categories", column: "category_id"
   add_foreign_key "university_organizations_categories", "university_organizations", column: "organization_id"
   add_foreign_key "university_people", "languages"
diff --git a/test/fixtures/university/organizations.yml b/test/fixtures/university/organizations.yml
index cb758b3b35c137658843d246d4e05f1fd96d1806..9ee9c42200536c94ee4821c0c97d6d651802f99c 100644
--- a/test/fixtures/university/organizations.yml
+++ b/test/fixtures/university/organizations.yml
@@ -29,23 +29,31 @@
 #  zipcode            :string
 #  created_at         :datetime         not null
 #  updated_at         :datetime         not null
+#  language_id        :uuid             indexed
+#  original_id        :uuid             indexed
 #  university_id      :uuid             not null, indexed
 #
 # Indexes
 #
+#  index_university_organizations_on_language_id    (language_id)
+#  index_university_organizations_on_original_id    (original_id)
 #  index_university_organizations_on_university_id  (university_id)
 #
 # Foreign Keys
 #
 #  fk_rails_35fcd198e0  (university_id => universities.id)
+#  fk_rails_3a9208fa29  (language_id => languages.id)
+#  fk_rails_5af11ea0cc  (original_id => university_organizations.id)
 #
 
 default_organization:
   name: Organisation de test
   active: true
   university: default_university
+  language: fr
 
 noesya:
   name: noesya
   active: true
   university: default_university
+  language: fr
diff --git a/test/models/university/organization_test.rb b/test/models/university/organization_test.rb
index b358e842fff8fafabf0dc9309c869d602b8870b8..c3facdee2cc5023375bf0e3414dd6324ce9be09b 100644
--- a/test/models/university/organization_test.rb
+++ b/test/models/university/organization_test.rb
@@ -29,15 +29,21 @@
 #  zipcode            :string
 #  created_at         :datetime         not null
 #  updated_at         :datetime         not null
+#  language_id        :uuid             indexed
+#  original_id        :uuid             indexed
 #  university_id      :uuid             not null, indexed
 #
 # Indexes
 #
+#  index_university_organizations_on_language_id    (language_id)
+#  index_university_organizations_on_original_id    (original_id)
 #  index_university_organizations_on_university_id  (university_id)
 #
 # Foreign Keys
 #
 #  fk_rails_35fcd198e0  (university_id => universities.id)
+#  fk_rails_3a9208fa29  (language_id => languages.id)
+#  fk_rails_5af11ea0cc  (original_id => university_organizations.id)
 #
 require "test_helper"