diff --git a/entitycache.module b/entitycache.module
index bbc39b8..098fa85 100644
--- a/entitycache.module
+++ b/entitycache.module
@@ -27,7 +27,9 @@ class EntityCacheControllerHelper extends DrupalDefaultEntityController {
   public static function resetEntityCache($controller, array $ids = NULL) {
     // Reset the persistent cache.
     if (!empty($ids)) {
-      cache_clear_all($ids, 'cache_entity_' . $controller->entityType);
+      foreach ($ids as $id) {
+        cache_clear_all($id, 'cache_entity_' . $controller->entityType, TRUE); // setting wildcard to TRUE to clear cache for all languages. e.g. 123_en, 123_fr etc
+      }
     }
     else {
       // Force all cached entries to be deleted.
@@ -138,12 +140,19 @@ class EntityCacheControllerHelper extends DrupalDefaultEntityController {
   }
 
   public static function entityCacheGet($controller, $ids, $conditions = array()) {
+    global $language;
+
+    $language_ids = array();
+    foreach ($ids as $id) {
+      $language_ids[] = $id . '_' . $language->language;
+    }
+
     $cached_entities = array();
     if ($ids && !$conditions) {
-      $cached = cache_get_multiple($ids, 'cache_entity_' . $controller->entityType);
+      $cached = cache_get_multiple($language_ids, 'cache_entity_' . $controller->entityType);
       if ($cached) {
         foreach ($cached as $item) {
-          $cached_entities[$item->cid] = $item->data;
+          $cached_entities[substr($item->cid, 0, strlen($item->cid) - strlen('_' . $language->language))] = $item->data;
         }
         self::entityCacheAttachLoad($controller, $cached_entities);
       }
@@ -152,8 +161,10 @@ class EntityCacheControllerHelper extends DrupalDefaultEntityController {
   }
 
   public static function entityCacheSet($controller, $entities) {
+    global $language;
+
     foreach ($entities as $item) {
-      cache_set($item->{$controller->idKey}, $item, 'cache_entity_' . $controller->entityType);
+      cache_set($item->{$controller->idKey} . '_' . $language->language, $item, 'cache_entity_' . $controller->entityType);
     }
   }
 
@@ -290,7 +301,8 @@ function entitycache_entity_delete($entity, $type) {
   $info = entity_get_info($type);
   list($id) = entity_extract_ids($type, $entity);
   if (!empty($info['entity cache'])) {
-    cache_clear_all($id, 'cache_entity_' . $type);
+    // Setting wildcard to TRUE to clear cache for all languages. e.g. 123_en, 123_fr etc
+    cache_clear_all($id, 'cache_entity_' . $type, TRUE);
   }
 }
 
@@ -308,7 +320,8 @@ function entitycache_entity_update($entity, $type) {
   $info = entity_get_info($type);
   list($id) = entity_extract_ids($type, $entity);
   if (!empty($info['entity cache']) && empty($entity->migrate)) {
-    cache_clear_all($id, 'cache_entity_' . $type);
+    // Setting wildcard to TRUE to clear cache for all languages. e.g. 123_en, 123_fr etc
+    cache_clear_all($id, 'cache_entity_' . $type, TRUE);
   }
 }
 
