diff --git a/core/modules/field/field.attach.inc b/core/modules/field/field.attach.inc
index aa0c9aa..ff579c7 100644
--- a/core/modules/field/field.attach.inc
+++ b/core/modules/field/field.attach.inc
@@ -319,8 +319,8 @@ function _field_invoke_multiple($op, $entity_type, $entities, &$a = NULL, &$b =
         // Unless a language code suggestion is provided we iterate on all the
         // available language codes.
         $available_langcodes = field_available_languages($entity_type, $field);
-        $language = !empty($options['langcode'][$id]) ? $options['langcode'][$id] : $options['langcode'];
-        $langcodes = _field_language_suggestion($available_langcodes, $language, $field_name);
+        $langcode = !empty($options['langcode'][$id]) ? $options['langcode'][$id] : $options['langcode'];
+        $langcodes = _field_language_suggestion($available_langcodes, $langcode, $field_name);
         foreach ($langcodes as $langcode) {
           $grouped_items[$field_id][$langcode][$id] = isset($entity->{$field_name}[$langcode]) ? $entity->{$field_name}[$langcode] : array();
           // Group the instances and entities corresponding to the current
diff --git a/core/modules/field/field.multilingual.inc b/core/modules/field/field.multilingual.inc
index f6fa6b5..2f6610b 100644
--- a/core/modules/field/field.multilingual.inc
+++ b/core/modules/field/field.multilingual.inc
@@ -136,7 +136,7 @@ function field_available_languages($entity_type, $field) {
  *
  * @param $available_langcodes
  *   An array of valid language codes.
- * @param $language_suggestion
+ * @param $langcode_suggestion
  *   A language code or an array of language codes keyed by field name.
  * @param $field_name
  *   The name of the field being processed.
@@ -152,8 +152,8 @@ function _field_language_suggestion($available_langcodes, $langcode_suggestion,
       $langcode_suggestion = $langcode_suggestion[$field_name];
     }
 
-    // If we have a language suggestion and the suggested language is
-    // available, we return only it.
+    // If we have a language suggestion and the suggested language is available,
+    // we return only it.
     if (in_array($langcode_suggestion, $available_langcodes)) {
       $available_langcodes = array($langcode_suggestion);
     }
@@ -231,8 +231,8 @@ function field_has_translation_handler($entity_type, $handler = NULL) {
  * Ensures that a given language code is valid.
  *
  * Checks whether the given language code is one of the enabled language codes.
- * Otherwise, it returns the current, global language code; or the site's default
- * language code, if the additional parameter $default is TRUE.
+ * Otherwise, it returns the current, global language code; or the site's
+ * default language code, if the additional parameter $default is TRUE.
  *
  * @param $langcode
  *   The language code to validate.
diff --git a/core/modules/field/modules/field_sql_storage/field_sql_storage.install b/core/modules/field/modules/field_sql_storage/field_sql_storage.install
index 9c59dd7..056873b 100644
--- a/core/modules/field/modules/field_sql_storage/field_sql_storage.install
+++ b/core/modules/field/modules/field_sql_storage/field_sql_storage.install
@@ -82,57 +82,46 @@ function _update_7000_field_sql_storage_write($entity_type, $bundle, $entity_id,
  * Changes field language into langcode.
  */
 function field_sql_storage_update_8000(&$sandbox) {
-    if (db_table_exists('field_config')) {
-    $result = db_select('field_config', 'fc')
-      ->fields('fc', array('field_name'))
-      ->condition('storage_type', 'field_sql_storage')
-      ->execute()
-    ;
+  // Prepare updated schema data structures.
+  $primary_key_data = array (
+    'entity_type',
+    'entity_id',
+    'deleted',
+    'delta',
+    'langcode',
+  );
+  $primary_key_revision = array (
+    'entity_type',
+    'entity_id',
+    'revision_id',
+    'deleted',
+    'delta',
+    'langcode',
+  );
+  $langcode_index = array(
+    'langcode',
+  );
+  $field_langcode = array(
+    'type' => 'varchar',
+    'length' => 32,
+    'not null' => true,
+    'default' => '',
+  );
 
-    $primary_key_data = array (
-      'entity_type',
-      'entity_id',
-      'deleted',
-      'delta',
-      'langcode',
-    );
-    $primary_key_revision = array (
-      'entity_type',
-      'entity_id',
-      'revision_id',
-      'deleted',
-      'delta',
-      'langcode',
-    );
-    $langcode_index = array(
-      'langcode',
-    );
-    $field_langcode = array(
-      'type' => 'varchar',
-      'length' => 32,
-      'not null' => true,
-      'default' => '',
-    );
+  // Retrieve field data.
+  $fields = _update_7000_field_read_fields(array('storage_type' => 'field_sql_storage'));
 
-    foreach ($result as $row) {
-      $field_name = $row->field_name;
+  // Update schema.
+  foreach ($fields as $field) {
+    $data_table = _field_sql_storage_tablename($field);
+    $revision_table = _field_sql_storage_revision_tablename($field);
 
-      // Data table
-      $table = 'field_data_' . $field_name;
+    foreach (array($data_table, $revision_table) as $table) {
       db_drop_primary_key($table);
       db_drop_index($table, 'language');
       db_change_field($table, 'language', 'langcode', $field_langcode);
       db_add_primary_key($table, $primary_key_data);
       db_add_index($table, 'langcode', $langcode_index);
-
-      // Revision table
-      $table = 'field_revision_' . $field_name;
-      db_drop_primary_key($table);
-      db_drop_index($table, 'language');
-      db_change_field($table, 'language', 'langcode', $field_langcode);
-      db_add_primary_key($table, $primary_key_revision);
-      db_add_index($table, 'langcode', $langcode_index);
-
     }
   }
 }
diff --git a/core/modules/field/tests/field.test b/core/modules/field/tests/field.test
index 210f500..61c7073 100644
--- a/core/modules/field/tests/field.test
+++ b/core/modules/field/tests/field.test
@@ -2945,8 +2945,8 @@ class FieldTranslationsTestCase extends FieldTestCase {
     // Test multiple-fields display languages for untranslatable entities.
     field_test_entity_info_translatable($entity_type, FALSE);
     drupal_static_reset('field_language');
-    $requested_langcodes = $enabled_langcodes[0];
-    $display_langcodes = field_language($entity_type, $entity, NULL, $requested_langcodes);
+    $requested_langcode = $enabled_langcodes[0];
+    $display_langcodes = field_language($entity_type, $entity, NULL, $requested_langcode);
     foreach ($instances as $instance) {
       $field_name = $instance['field_name'];
       $this->assertTrue($display_langcodes[$field_name] == LANGUAGE_NOT_SPECIFIED, t('The display language for field %field_name is %language.', array('%field_name' => $field_name, '%language' => LANGUAGE_NOT_SPECIFIED)));
@@ -2955,7 +2955,7 @@ class FieldTranslationsTestCase extends FieldTestCase {
     // Test multiple-fields display languages for translatable entities.
     field_test_entity_info_translatable($entity_type, TRUE);
     drupal_static_reset('field_language');
-    $display_langcodes = field_language($entity_type, $entity, NULL, $requested_langcodes);
+    $display_langcodes = field_language($entity_type, $entity, NULL, $requested_langcode);
 
     foreach ($instances as $instance) {
       $field_name = $instance['field_name'];
@@ -2963,20 +2963,20 @@ class FieldTranslationsTestCase extends FieldTestCase {
       // As the requested language was not assinged to any field, if the
       // returned language is defined for the current field, core fallback rules
       // were successfully applied.
-      $this->assertTrue(isset($entity->{$field_name}[$langcode]) && $langcode != $requested_langcodes, t('The display language for the field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode)));
+      $this->assertTrue(isset($entity->{$field_name}[$langcode]) && $langcode != $requested_langcode, t('The display language for the field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode)));
     }
 
     // Test single-field display language.
     drupal_static_reset('field_language');
-    $langcode = field_language($entity_type, $entity, $this->field_name, $requested_langcodes);
-    $this->assertTrue(isset($entity->{$this->field_name}[$langcode]) && $langcode != $requested_langcodes, t('The display language for the (single) field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode)));
+    $langcode = field_language($entity_type, $entity, $this->field_name, $requested_langcode);
+    $this->assertTrue(isset($entity->{$this->field_name}[$langcode]) && $langcode != $requested_langcode, t('The display language for the (single) field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode)));
 
     // Test field_language() basic behavior without language fallback.
     variable_set('field_test_language_fallback', FALSE);
-    $entity->{$this->field_name}[$requested_langcodes] = mt_rand(1, 127);
+    $entity->{$this->field_name}[$requested_langcode] = mt_rand(1, 127);
     drupal_static_reset('field_language');
-    $display_langcode = field_language($entity_type, $entity, $this->field_name, $requested_langcodes);
-    $this->assertEqual($display_langcode, $requested_langcodes, t('Display language behave correctly when language fallback is disabled'));
+    $display_langcode = field_language($entity_type, $entity, $this->field_name, $requested_langcode);
+    $this->assertEqual($display_langcode, $requested_langcode, t('Display language behave correctly when language fallback is disabled'));
   }
 
   /**
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index 09afdb3..b2a8610 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -365,23 +365,23 @@ function locale_field_language_alter(&$display_langcode, $context) {
  * behavior can be disabled by setting the 'locale_field_language_fallback'
  * variable to FALSE.
  *
- * @param $field_langcode
+ * @param $field_langcodes
  *   A reference to an array of language codes keyed by field name.
  * @param $entity
  *   The entity to be displayed.
  * @param $langcode
  *   The language code $entity has to be displayed in.
  */
-function locale_field_language_fallback(&$field_langcode, $entity, $langcode) {
+function locale_field_language_fallback(&$field_langcodes, $entity, $langcode) {
   // Lazily init fallback candidates to avoid unnecessary calls.
   $fallback_candidates = NULL;
   $field_languages = array();
 
-  foreach ($field_langcode as $field_name => $field_language) {
+  foreach ($field_langcodes as $field_name => $field_langcode) {
     // If the requested language is defined for the current field use it,
     // otherwise search for a fallback value among the fallback candidates.
     if (isset($entity->{$field_name}[$langcode])) {
-      $field_langcode[$field_name] = $langcode;
+      $field_langcodes[$field_name] = $langcode;
     }
     elseif (!empty($entity->{$field_name})) {
       if (!isset($fallback_candidates)) {
@@ -390,7 +390,7 @@ function locale_field_language_fallback(&$field_langcode, $entity, $langcode) {
       }
       foreach ($fallback_candidates as $fallback_langcode) {
         if (isset($entity->{$field_name}[$fallback_langcode])) {
-          $field_langcode[$field_name] = $fallback_langcode;
+          $field_langcodes[$field_name] = $fallback_langcode;
           break;
         }
       }
