diff --git a/entity_translation.module b/entity_translation.module
index fcf7908..be93c78 100644
--- a/entity_translation.module
+++ b/entity_translation.module
@@ -98,6 +98,7 @@ function entity_translation_entity_info_alter(&$entity_info) {
         'edit path' => "$path/edit",
         'class' => 'EntityTranslationDefaultHandler',
         'path wildcard' => "%$entity_type",
+        'path arguments' => FALSE,
         'access callback' => 'entity_translation_tab_access',
         'access arguments' => array($entity_type),
         'theme callback' => 'variable_get',
diff --git a/includes/translation.handler.inc b/includes/translation.handler.inc
index c4fa1ed..7d46d66 100644
--- a/includes/translation.handler.inc
+++ b/includes/translation.handler.inc
@@ -490,8 +490,19 @@ class EntityTranslationDefaultHandler implements EntityTranslationHandlerInterfa
    *   The instantiated path.
    */
   protected function getPathInstance($path) {
-    $wildcard = $this->entityInfo['translation']['entity_translation']['path wildcard'];
-    return str_replace($wildcard, $this->getEntityId(), $path);
+    $info = $this->entityInfo['translation']['entity_translation'];
+    $segments = explode('/', $path);
+
+    foreach ($segments as $index => $segment) {
+      if (!empty($info['path wildcard']) && $segment == $info['path wildcard']) {
+        $segments[$index] = $this->getEntityId();
+      }
+      elseif (!empty($info['path arguments']) && $segment{0} == '%') {
+        $segments[$index] = arg($index);
+      }
+    }
+
+    return implode('/', $segments);
   }
 
   /**
