diff --git a/field_collection.entity.inc b/field_collection.entity.inc
index 2e8a11b..d9a385a 100644
--- a/field_collection.entity.inc
+++ b/field_collection.entity.inc
@@ -288,6 +288,28 @@ class FieldCollectionItemEntity extends Entity {
     }
   }
 
+  /**
+   * Returns the language of the host entity.
+   */
+  public function hostEntityLanguage() {
+    if ($entity = $this->hostEntity()) {
+      // With Drupal >= 7.15 we can use entity_language().
+      if (function_exists('entity_language')) {
+        $langcode = entity_language($this->hostEntityType, $entity);
+      }
+      else {
+        $langcode = !empty($entity->language) ? $entity->language : LANGUAGE_NONE;
+      }
+
+      $languages = language_list();
+      if (isset($languages[$langcode])) {
+        return $languages[$langcode];
+      }
+
+      return LANGUAGE_NONE;
+    }
+  }
+
   protected function fetchHostDetails() {
     if (!isset($this->hostEntityId)) {
       if ($this->item_id) {
diff --git a/field_collection.tokens.inc b/field_collection.tokens.inc
index 025bb0a..f4f62da 100644
--- a/field_collection.tokens.inc
+++ b/field_collection.tokens.inc
@@ -64,6 +64,15 @@ function field_collection_token_info_alter(&$data) {
 function field_collection_tokens($type, $tokens, array $data = array(), array $options = array()) {
   $replacements = array();
 
+  $url_options = array('absolute' => TRUE);
+  if (isset($options['language'])) {
+    $url_options['language'] = $options['language'];
+    $language_code = $options['language']->language;
+  }
+  else {
+    $language_code = NULL;
+  }
+
   // Provide a complete set of tokens for type == 'host', and a supplementary
   // token 'host' for type == 'field_collection_item'.
   if (($type == 'field_collection_item' or $type == 'host') and !empty($data['field_collection_item'])) {
@@ -106,6 +115,8 @@ function field_collection_tokens($type, $tokens, array $data = array(), array $o
       foreach ($entity_types as $entity_type => $entity_info) {
         if ($entity_tokens = token_find_with_prefix($tokens, $entity_type)) {
           $host = $collection->hostEntity();
+          $options['language'] = $collection->hostEntityLanguage();
+
           $replacements += token_generate($entity_type, $entity_tokens, array($entity_type => $host), $options);
         }
       }
