diff --git a/includes/MediaEntityTranslationHandler.inc b/includes/MediaEntityTranslationHandler.inc
new file mode 100644
index 0000000..2027b80
--- /dev/null
+++ b/includes/MediaEntityTranslationHandler.inc
@@ -0,0 +1,58 @@
+getPathScheme() == 'media') {
+ $language = $GLOBALS[LANGUAGE_TYPE_CONTENT];
+ $form_langcode = $this->getFormLanguage();
+ $source_langcode = $this->getSourceLanguage();
+ $translations = $this->getTranslations();
+
+ // If a translation in the current content language is missing we display
+ // a link to create it, unless we are not already doing it.
+ if ($language->language != $form_langcode && empty($source_langcode) && !isset($translations->data[$language->language])) {
+ $link = array(
+ 'title' => t('Add @language translation', array('@language' => $language->name)),
+ 'href' => $this->getEditPath() . '/add/' . $form_langcode . '/' . $language->language,
+ 'localized_options' => array('attributes' => array('class' => array('ctools-use-modal'))),
+ );
+ $form['media_add_translation'] = array(
+ '#theme' => 'menu_local_action',
+ '#link' => $link,
+ '#weight' => -110,
+ '#prefix' => '
',
+ );
+ }
+
+ // Hide unsupported elements.
+ $form['source_language']['#access'] = FALSE;
+ if (isset($form['actions']['delete_translation'])) {
+ $form['actions']['delete_translation']['#access'] = FALSE;
+ }
+ }
+ }
+}
diff --git a/media.info b/media.info
index 8cba8d3..ad5bf37 100644
--- a/media.info
+++ b/media.info
@@ -10,6 +10,7 @@ files[] = includes/MediaBrowserPluginInterface.inc
files[] = includes/MediaBrowserPlugin.inc
files[] = includes/MediaBrowserUpload.inc
files[] = includes/MediaBrowserView.inc
+files[] = includes/MediaEntityTranslationHandler.inc
files[] = includes/media_views_plugin_display_media_browser.inc
files[] = includes/media_views_plugin_style_media_browser.inc
files[] = tests/media.test
diff --git a/media.module b/media.module
index 4ef9f00..339fe43 100644
--- a/media.module
+++ b/media.module
@@ -85,6 +85,11 @@ function media_entity_info_alter(&$entity_info) {
$entity_info['file']['view modes']['media_small'] = array('label' => t('Small'), 'custom settings' => TRUE);
$entity_info['file']['view modes']['media_large'] = array('label' => t('Large'), 'custom settings' => TRUE);
$entity_info['file']['view modes']['media_original'] = array('label' => t('Original'), 'custom settings' => TRUE);
+
+ if (module_exists('entity_translation')) {
+ $entity_info['file']['translation']['entity_translation']['class'] = 'MediaEntityTranslationHandler';
+ $entity_info['file']['translation']['entity_translation']['path schemes']['media'] = array('edit path' => 'media/%file/edit/%ctools_js');
+ }
}
/**