diff --git a/includes/expire.api.inc b/includes/expire.api.inc
index f1e6fd7..2ad3e8e 100644
--- a/includes/expire.api.inc
+++ b/includes/expire.api.inc
@@ -54,27 +54,27 @@ class ExpireAPI {
     }
     else {
 
-      // Define a language code. It will be used to define path aliases.
-      $langcodes = array();
+      // Define language codes. They will be used to process path aliases.
+      $languages = language_list('enabled');
+      $languages = $languages[1];
+      // Use all enabled languages to flush the alias cache.
+      $langcodes = array_keys($languages);
       if (!empty($object_type) && !empty($object)) {
-        // If this is an object with entity translation ensure all language
-        // versions are flushed.
+        // If this is an object with entity translation fetch the appropriate
+        // language
         if (module_exists('entity_translation') && entity_translation_enabled($object_type, $object) && $handler = entity_translation_get_handler($object_type, $object)) {
-          $translations = $handler->getTranslations();
-          foreach ($translations->data as $language => $translation) {
-            $langcodes[] = $language;
-          }
+          $language = $handler->getLanguage();
         }
         elseif (function_exists('entity_language')) {
-          $langcodes[] = entity_language($object_type, $object);
+          $language = entity_language($object_type, $object);
         }
         else {
           $info = entity_get_info($object_type);
           if (isset($info['language callback']) && function_exists($info['language callback'])) {
-            $langcodes[] = $info['language callback']($object_type, $object);
+            $language = $info['language callback']($object_type, $object);
           }
           elseif (!empty($info['entity keys']['language']) && isset($object->{$info['entity keys']['language']})) {
-            $langcodes[] = $object->{$info['entity keys']['language']};
+            $language = $object->{$info['entity keys']['language']};
           }
         }
       }
@@ -83,13 +83,11 @@ class ExpireAPI {
       // when entities having one site language has been expired from another
       // site locale. For this purpose we always have to pass a proper language
       // key/object to get a correct URL of entity's language.
-      if (reset($langcodes) == LANGUAGE_NONE) {
+      if ($language == LANGUAGE_NONE) {
         $language = language_default();
-        $langcodes = $language->language;
       }
       else {
-        $languages = language_list();
-        $language = isset($languages[reset($langcodes)]) ? $languages[reset($langcodes)] : NULL;
+        $language = isset($languages[$language]) ? $languages[$language] : NULL;
       }
 
       // Adds paths aliases, defines wildcards, etc.
@@ -397,16 +395,14 @@ class ExpireAPI {
    * @param $internal_paths
    *   Array of internal paths.
    *
-   * @param array $langcode
+   * @param array $langcodes
    *   List of language codes of object that is expiring.
    *
    * @return array
    */
   protected static function processInternalPaths($internal_paths, $langcodes = NULL) {
-    // Backward compatibility.
-    if (!is_array($langcodes) && !empty($langcodes)) {
-      $langcodes = array($langcodes);
-    }
+    // Backward compatibility - ensure this is an array.
+    $langcodes = (array) $langcodes;
 
     $urls = array();
     $wildcards = array();
