diff --git a/config/schema/paragraphs_collection.schema.yml b/config/schema/paragraphs_collection.schema.yml
index b32532c..a5f836c 100644
--- a/config/schema/paragraphs_collection.schema.yml
+++ b/config/schema/paragraphs_collection.schema.yml
@@ -10,3 +10,19 @@ paragraphs.behavior.settings.background:
     background_image_field:
       type: string
       label: Background field
+
+paragraphs.behavior.settings.language:
+  type: paragraphs.behavior.settings_base
+  mapping:
+    container:
+      type: mapping
+      label: 'Language'
+      mapping:
+        languages:
+          type: sequence
+          label: 'Languages'
+          sequence:
+            type: string
+        visibility:
+          type: string
+          label: 'Visibility'
diff --git a/js/language.js b/js/language.js
new file mode 100644
index 0000000..b43dd3a
--- /dev/null
+++ b/js/language.js
@@ -0,0 +1,18 @@
+/**
+ * @file language.js
+ */
+(function ($, Drupal) {
+
+  "use strict";
+
+  /**
+   * Registers behaviours related to language behavior plugin.
+   */
+
+  Drupal.behaviors.language = {
+    attach: function (context) {
+      $(".paragraphs-collection-language-visibility-languages").select2();
+    }
+  };
+
+}(jQuery, Drupal));
diff --git a/paragraphs_collection.libraries.yml b/paragraphs_collection.libraries.yml
index a620b06..5b3c63c 100644
--- a/paragraphs_collection.libraries.yml
+++ b/paragraphs_collection.libraries.yml
@@ -7,3 +7,22 @@ drupal.paragraphs_collection.background:
   css:
     theme:
       css/background.css: {}
+
+drupal.paragraphs_collection.language:
+  js:
+    js/language.js: {}
+
+drupal.paragraphs_collection.select2:
+  remote: https://github.com/ivaynberg/select2
+  version: 4.0.3
+  license:
+    name: MIT
+    url: https://github.com/select2/select2/blob/master/LICENSE.md
+    gpl-compatible: true
+  js:
+    /libraries/select2/dist/js/select2.full.min.js: {}
+  css:
+    component:
+      /libraries/select2/dist/css/select2.min.css: {}
+  dependencies:
+    - core/jquery
diff --git a/src/Plugin/paragraphs/Behavior/ParagraphsLanguagePlugin.php b/src/Plugin/paragraphs/Behavior/ParagraphsLanguagePlugin.php
new file mode 100644
index 0000000..26131e7
--- /dev/null
+++ b/src/Plugin/paragraphs/Behavior/ParagraphsLanguagePlugin.php
@@ -0,0 +1,153 @@
+<?php
+
+namespace Drupal\paragraphs_collection\Plugin\paragraphs\Behavior;
+
+use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
+use Drupal\Core\Entity\EntityFieldManager;
+use Drupal\Core\Language\LanguageManagerInterface;
+use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\Core\Render\Element;
+use Drupal\paragraphs\Entity\Paragraph;
+use Drupal\paragraphs\ParagraphsBehaviorBase;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Provides a background image feature plugin.
+ *
+ * @ParagraphsBehavior(
+ *   id = "language",
+ *   label = @Translation("Language"),
+ *   description = @Translation("Restricts visibility of a paragraph per language."),
+ *   weight = 0
+ * )
+ */
+class ParagraphsLanguagePlugin extends ParagraphsBehaviorBase implements ContainerFactoryPluginInterface {
+
+  /**
+   * The language manager.
+   *
+   * @var \Drupal\Core\Language\LanguageManagerInterface
+   */
+  protected $languageManager;
+
+  /**
+   * ParagraphsLanguagePlugin constructor.
+   *
+   * @param array $configuration
+   *   A configuration array containing information about the plugin instance.
+   * @param string $plugin_id
+   *   The plugin_id for the plugin instance.
+   * @param mixed $plugin_definition
+   *   The plugin implementation definition.
+   * @param \Drupal\Core\Entity\EntityFieldManager $entity_field_manager
+   *   The entity field manager.
+   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
+   *   The language manager.
+   */
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityFieldManager $entity_field_manager, LanguageManagerInterface $language_manager) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $entity_field_manager);
+
+    $this->languageManager = $language_manager;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
+    return new static($configuration, $plugin_id, $plugin_definition,
+      $container->get('entity_field.manager'),
+      $container->get('language_manager')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildBehaviorForm(Paragraph $paragraphs_entity) {
+    $languages = $this->languageManager->getLanguages();
+    foreach ($this->languageManager->getStandardLanguageList() as $id => $name) {
+      if (array_key_exists($id, $languages)) {
+        $options['available'][$id] = $name[0];
+        continue;
+      }
+      $options['other'][$id] = $name[0];
+    }
+
+    // Make sure it shows available languages first. Since 'a' comes before 'o'.
+    // todo if the naming above changes this might need to be updated.
+    ksort($options);
+
+    $form['container'] = [
+      '#type' => 'fieldset',
+      '#title' => $this->t('Visibility per language'),
+    ];
+
+    $form['container']['visibility'] = [
+      '#type' => 'select',
+      '#description' => $this->t('Choose to always show paragraph or to hide or show for specific languages.'),
+      '#options' => [
+        'always' => $this->t('- Always -'),
+        'hide' => $this->t('Hide on'),
+        'show' => $this->t('Show on'),
+      ],
+      '#default_value' => $paragraphs_entity->getBehaviorSetting($this->getPluginId(), ['container', 'visibility']),
+      '#multiple' => FALSE,
+      '#attributes' => [
+        'id' => ['paragraphs-collection-language-visibility-' . $paragraphs_entity->id()],
+      ],
+    ];
+
+    $form['container']['languages'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Languages'),
+      '#description' => $this->t('Select a language.'),
+      '#options' => $options,
+      '#empty_option' => $this->t('- None -'),
+      '#empty_value' => 'none',
+      '#default_value' => $paragraphs_entity->getBehaviorSetting($this->getPluginId(), ['container', 'languages']),
+      '#states' => [
+        'invisible' => [
+          ':input[id="paragraphs-collection-language-visibility-' . $paragraphs_entity->id() . '"]' => ['value' => 'always'],
+        ],
+      ],
+      '#multiple' => TRUE,
+      '#attached' => ['library' => ['paragraphs_collection/drupal.paragraphs_collection.select2', 'paragraphs_collection/drupal.paragraphs_collection.language']],
+      '#attributes' => [
+        'class' => ['paragraphs-collection-language-visibility-languages'],
+      ],
+    ];
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function view(array &$build, Paragraph $paragraphs_entity, EntityViewDisplayInterface $display, $view_mode) {
+    $current_language = $this->languageManager->getCurrentLanguage();
+    $languages = $paragraphs_entity->getBehaviorSetting($this->getPluginId(), ['container', 'languages']);
+    $visibility = $paragraphs_entity->getBehaviorSetting($this->getPluginId(), ['container', 'visibility']);
+    if ($visibility == 'always') {
+      return $build;
+    }
+
+    if ($visibility == 'show') {
+      if (!in_array($current_language->getId(), $languages)) {
+        foreach (Element::children($build) as $children) {
+          $build[$children]['#access'] = FALSE;
+        }
+      }
+    }
+
+    if ($visibility == 'hide') {
+      if (in_array($current_language->getId(), $languages)) {
+        foreach (Element::children($build) as $children) {
+          $build[$children]['#access'] = FALSE;
+        }
+      }
+    }
+
+    return $build;
+  }
+
+}
