diff --git a/entity_translation.api.php b/entity_translation.api.php
index c048d11..d55e94f 100644
--- a/entity_translation.api.php
+++ b/entity_translation.api.php
@@ -17,7 +17,7 @@
  * may need to be defined, but none of them is required except the 'base path'
  * key if the entity path is different from ENTITY_TYPE/%ENTITY_TYPE (e.g.
  * taxonomy/term/1). The 'base path' key is used to attach the 'Translate' tab
- * and to reliably alter menu information to provide the translation UI. If the
+ * and to reliably alter menu information to provide the translation UI. [@todo update docs] If the
  * entity path matches the default pattern above, and there is no need for a
  * dedicated translation handler class, Entity Translation will provide built-in
  * support for the entity.
@@ -30,7 +30,7 @@
  * - class: The name of the translation handler class, which is used to handle
  *   the translation process. Defaults to 'EntityTranslationDefaultHandler'.
  * - base path: The base menu router path to which attach the administration
- *   user interface. Defaults to ENTITY_TYPE/%ENTITY_TYPE.
+ *   user interface. Defaults to ENTITY_TYPE/%ENTITY_TYPE. [@todo update docs]
  * - access callback: The access callback for the translation pages. Defaults to
  *   'entity_translation_tab_access'.
  * - access arguments: The access arguments for the translation pages. Defaults
@@ -40,7 +40,7 @@
  * - edit path: The menu router path to be used to edit the entity. Defaults to
  *   "$base_path/edit".
  * - path wildcard: The menu router path wildcard identifying the entity.
- *   Defaults to %ENTITY_TYPE.
+ *   Defaults to %ENTITY_TYPE. Can be an array to designate multiple path wildcards.
  * - theme callback: The callback to be used to determine the translation
  *   theme. Defaults to 'variable_get'.
  * - theme arguments: The arguments to be used to determine the translation
diff --git a/entity_translation.module b/entity_translation.module
index 9d93464..9ad52ca 100644
--- a/entity_translation.module
+++ b/entity_translation.module
@@ -116,6 +116,7 @@ function entity_translation_entity_info_alter(&$entity_info) {
       }
 
       $path = $entity_info[$entity_type]['translation']['entity_translation']['base path'];
+      $path = is_array($path) ? reset($path) : $path;
 
       $entity_info[$entity_type]['translation']['entity_translation'] += array(
         'view path' => $path,
@@ -191,39 +192,47 @@ function entity_translation_menu_alter(&$items) {
     // callbacks so we might not have them available yet.
     if (entity_translation_enabled($entity_type)) {
       // Extract informations from the bundle description.
-      $path = $info['translation']['entity_translation']['base path'];
+      $base_paths = $info['translation']['entity_translation']['base path'];
 
-      // If the base path is not defined or is not compatible with any defined
-      // one we cannot provide the translation UI for this entity type.
-      if (!isset($paths[preg_replace($regex, '%', $path)])) {
-        drupal_set_message(t('The entities of type %entity_type do not define a valid base path: it will not be possible to translate them.', array('%entity_type' => $info['label'])), 'warning');
-        continue;
-      }
+      // We support multiple base paths!
+      $base_paths = is_array($base_paths) ? array_values($base_paths) : array($base_paths);
 
-      $keys = array('theme callback', 'theme arguments', 'access callback', 'access arguments', 'load arguments');
-      $item = array_intersect_key($info['translation']['entity_translation'], drupal_map_assoc($keys));
+      foreach ($base_paths as $delta => $path) {
+        // If the base path is not defined or is not compatible with any defined
+        // one we cannot provide the translation UI for this entity type.
+        if ($delta == 0 && !isset($paths[preg_replace($regex, '%', $path)])) {
+          drupal_set_message(t('The entities of type %entity_type do not define a valid base path: it will not be possible to translate them.', array('%entity_type' => $info['label'])), 'warning');
+          continue;
+        }
 
-      $item += array(
-        'file' => 'entity_translation.admin.inc',
-        'module' => 'entity_translation',
-      );
+        $keys = array('theme callback', 'theme arguments', 'access callback', 'access arguments', 'load arguments');
+        $item = array_intersect_key($info['translation']['entity_translation'], drupal_map_assoc($keys));
+
+        $item += array(
+          'file' => 'entity_translation.admin.inc',
+          'module' => 'entity_translation',
+        );
 
-      $entity_position = count(explode('/', $path)) - 1;
-      $source_position = $entity_position + 4;
-      $language_position = $entity_position + 3;
+        $entity_position = count(explode('/', $path)) - 1;
+        $source_position = $entity_position + 4;
+        $language_position = $entity_position + 3;
 
-      // Backup existing values for the translate overview page.
-      if (isset($items["$path/translate"])) {
-        $backup[$entity_type] = $items["$path/translate"];
+        // Backup existing values for the translate overview page.
+        if (isset($items["$path/translate"])) {
+          $backup[$entity_type] = $items["$path/translate"];
+        }
+
+        $items["$path/translate"] = array(
+          'title' => 'Translate',
+          'page callback' => 'entity_translation_overview',
+          'page arguments' => array($entity_type, $entity_position),
+          'type' => MENU_LOCAL_TASK,
+          'weight' => 2,
+        ) + $item;
       }
 
-      $items["$path/translate"] = array(
-        'title' => 'Translate',
-        'page callback' => 'entity_translation_overview',
-        'page arguments' => array($entity_type, $entity_position),
-        'type' => MENU_LOCAL_TASK,
-        'weight' => 2,
-      ) + $item;
+      // Use first base path as basis for everything else.
+      $path = reset($base_paths);
 
       $et_info = $info['translation']['entity_translation'];
       $edit_path = $et_info['edit path'];
@@ -245,7 +254,7 @@ function entity_translation_menu_alter(&$items) {
 
         // Replace the main edit callback with our proxy implementation to set
         // form language to the current language and check access.
-        $entity_position = count(explode('/', $et_info['base path'])) - 1;
+        $entity_position = count(explode('/', $path)) - 1;
         $edit_position = count(explode('/', $edit_path)) - 1;
         $original_item = $edit_form_item;
         $args = array($entity_type, $entity_position, FALSE, $original_item);
diff --git a/includes/translation.handler.inc b/includes/translation.handler.inc
index a538060..c8e4a82 100644
--- a/includes/translation.handler.inc
+++ b/includes/translation.handler.inc
@@ -259,7 +259,8 @@ class EntityTranslationDefaultHandler implements EntityTranslationHandlerInterfa
     $this->sourceLanguage = FALSE;
 
     $info = $entity_info['translation']['entity_translation'];
-    $this->basePath = $this->getPathInstance($info['base path']);
+    $path = is_array($info['base path']) ? reset($info['base path']) : $info['base path'];
+    $this->basePath = $this->getPathInstance($path);
     $this->editPath = isset($info['edit path']) ? $this->getPathInstance($info['edit path']) : FALSE;
     $this->viewPath = isset($info['view path']) ? $this->getPathInstance($info['view path']) : FALSE;
   }
diff --git a/views/entity_translation_handler_field_translate_link.inc b/views/entity_translation_handler_field_translate_link.inc
index bc8d8b9..4a7c0d0 100644
--- a/views/entity_translation_handler_field_translate_link.inc
+++ b/views/entity_translation_handler_field_translate_link.inc
@@ -86,7 +86,9 @@ class entity_translation_handler_field_translate_link extends views_handler_fiel
     // We use the entity info here to avoid having to call entity_load() for all
     // the entities.
     $info = entity_get_info($entity_type);
+    // Find the base path. Use the first one if there are multiple paths.
     $path = $info['translation']['entity_translation']['base path'];
+    $path = is_array($path) ? reset($path) : $path;
     $path = str_replace($info['translation']['entity_translation']['path wildcard'], $entity_id, $path);
     $this->options['alter']['make_link'] = TRUE;
     $this->options['alter']['path'] = $path . '/translate';
