diff --git a/twitter_post/twitter_post.field.inc b/twitter_post/twitter_post.field.inc
index 2d39872..298525d 100644
--- a/twitter_post/twitter_post.field.inc
+++ b/twitter_post/twitter_post.field.inc
@@ -83,7 +83,6 @@ function twitter_post_field_widget_form(&$form, &$form_state, $field, $instance,
         '#dialog' => TRUE,
       ),
     ),
-
   );
 
   return $element;
@@ -122,7 +121,6 @@ function twitter_post_field_formatter_settings_summary($field, $instance, $view_
   $display = $instance['display'][$view_mode];
   $settings = $display['settings'];
 
-
   if ($settings['type'] != 'none') {
     $summary = t('Default status: @status. Message: @message', array(
       '@status' => $settings['status'],
@@ -170,45 +168,49 @@ function twitter_post_field_attach_form($entity_type, $entity, &$form, &$form_st
   $twitter_uid = key($options);
   $screen_name = current($options);
   foreach ($form_state['field'] as $field_name => $field) {
-    if (isset($field[$langcode]['field']['type']) && ($field[$langcode]['field']['type'] == 'twitter_post')) {
-      $element = array();
-      if (count($options) > 1) {
-        $element['account'] = array(
-          '#type' => 'select',
-          '#title' => t('Twitter Account'),
-          '#options' => $options,
-          '#id' => 'twitter-account',
-          '#states' => array(
-            'visible' => array(
-              'input#twitter-toggle' => array(
-                'checked' => TRUE,
+    // Loop over each interior field. Cannot assume that the entity's langcode
+    // is the same as the field's because of EntityTranslation and others.
+    foreach ($field as $field_langcode => $field_data) {
+      if (isset($field_data['field']['type']) && ($field_data['field']['type'] == 'twitter_post')) {
+        $element = array();
+        if (count($options) > 1) {
+          $element['account'] = array(
+            '#type' => 'select',
+            '#title' => t('Twitter Account'),
+            '#options' => $options,
+            '#id' => 'twitter-account',
+            '#states' => array(
+              'visible' => array(
+                'input#twitter-toggle' => array(
+                  'checked' => TRUE,
+                ),
               ),
             ),
-          ),
-        );
-      }
-      else {
-        $element['account'] = array(
-          '#type' => 'value',
-          '#value' => $twitter_uid,
-          '#id' => 'twitter-account',
-        );
-        $element['account_name'] = array(
-          '#type' => 'item',
-          '#title' => t('Twitter account'),
-          '#markup' => _twitter_user_profile($screen_name),
-          '#states' => array(
-            'visible' => array(
-              'input#twitter-toggle' => array(
-                'checked' => TRUE,
+          );
+        }
+        else {
+          $element['account'] = array(
+            '#type' => 'value',
+            '#value' => $twitter_uid,
+            '#id' => 'twitter-account',
+          );
+          $element['account_name'] = array(
+            '#type' => 'item',
+            '#title' => t('Twitter account'),
+            '#markup' => _twitter_user_profile($screen_name),
+            '#states' => array(
+              'visible' => array(
+                'input#twitter-toggle' => array(
+                  'checked' => TRUE,
+                ),
               ),
             ),
-          ),
-        );
-      }
-      foreach ($form[$field_name][$langcode] as $delta => $field_instance) {
-        if (is_int($delta)) {
-          $form[$field_name][$langcode][$delta] += $element;
+          );
+        }
+        foreach ($form[$field_name][$field_langcode] as $delta => $field_instance) {
+          if (is_int($delta)) {
+            $form[$field_name][$field_langcode][$delta] += $element;
+          }
         }
       }
     }
diff --git a/twitter_post/twitter_post.module b/twitter_post/twitter_post.module
index 5a06be3..0c6193a 100644
--- a/twitter_post/twitter_post.module
+++ b/twitter_post/twitter_post.module
@@ -29,15 +29,16 @@ function twitter_post_permission() {
  *
  * Intercepts newly created entities and posts notices to Twitter.
  */
-function twitter_post_entity_insert($entity, $type) {
+function twitter_post_entity_insert($entity, $entity_type) {
   // First we find twitter_post fields.
-  list($id, $vid, $bundle) = entity_extract_ids($type, $entity);
-  $fields_info = field_info_instances($type, $bundle);
+  list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
+  $fields_info = field_info_instances($entity_type, $bundle);
   foreach ($fields_info as $field_name => $value) {
     $field_info = field_info_field($field_name);
     if ($field_info['type'] == 'twitter_post') {
       // Iterate field instances.
-      foreach ($entity->{$field_name}[$entity->language] as $delta => $field_instance) {
+      $items = field_get_items($entity_type, $entity, $field_name);
+      foreach ($items as $delta => $field_instance) {
         if (is_int($delta) && !empty($field_instance['account'])) {
           // Extract data out of each field.
           $status = $field_instance['status'];
@@ -59,7 +60,7 @@ function twitter_post_entity_insert($entity, $type) {
           // Post to Twitter if the status checkbox is active.
           if ($status) {
             module_load_include('inc', 'twitter');
-            $message = token_replace($message, array($type => $entity));
+            $message = token_replace($message, array($entity_type => $entity));
             $status = twitter_set_status($twitter_account, $message);
             if ($status) {
               drupal_set_message(t('Successfully posted "%node" to Twitter: <a href="@status" target="_blank">@status</a>', array(
