diff -rupN translation_table/css/translation-table-admin.css translation_table/css/translation-table-admin.css
--- translation_table/css/translation-table-admin.css	2009-08-14 16:35:12.000000000 +0200
+++ translation_table/css/translation-table-admin.css	2009-08-14 17:37:53.000000000 +0200
@@ -2,6 +2,7 @@
 
 #translation-table-menu-form #language-filter,
 #translation-table-nodetype-form #language-filter,
+#translation-table-cck-form #language-filter,
 #translation-table-taxonomy-form #language-filter {
   float: left;
 }
@@ -11,13 +12,15 @@
   float: left;
 }
 
-#translation-table-nodetype-form #edit-node-type-wrapper {
+#translation-table-nodetype-form #edit-node-type-wrapper,
+#translation-table-cck-form #edit-cck-scope-wrapper {
   margin-left: 30px;
   float: left;
 }
 
 #translation-table-menu-form #edit-filter,
 #translation-table-nodetype-form #edit-filter,
+#translation-table-cck-form #edit-filter,
 #translation-table-taxonomy-form #edit-filter {
   float: left;
   margin: 30px;
diff -rupN translation_table/css/translation-table-admin-rtl.css translation_table/css/translation-table-admin-rtl.css
--- translation_table/css/translation-table-admin-rtl.css	2009-08-14 16:35:12.000000000 +0200
+++ translation_table/css/translation-table-admin-rtl.css	2009-08-14 17:38:11.000000000 +0200
@@ -2,6 +2,7 @@
 
 #translation-table-menu-form #language-filter,
 #translation-table-nodetype-form #language-filter,
+#translation-table-cck-form #language-filter,
 #translation-table-taxonomy-form #language-filter {
   float: right;
 }
@@ -11,13 +12,15 @@
   float: right;
 }
 
-#translation-table-nodetype-form #edit-node-type-wrapper {
+#translation-table-nodetype-form #edit-node-type-wrapper,
+#translation-table-cck-form #edit-cck-scope-wrapper {
   margin-right: 30px;
   float: right;
 }
 
 #translation-table-menu-form #edit-filter,
 #translation-table-nodetype-form #edit-filter,
+#translation-table-cck-form #edit-filter,
 #translation-table-taxonomy-form #edit-filter {
   float: right;
 }
diff -rupN translation_table/includes/admin.inc translation_table/includes/admin.inc
--- translation_table/includes/admin.inc	2009-08-14 16:35:12.000000000 +0200
+++ translation_table/includes/admin.inc	2009-08-14 18:26:40.000000000 +0200
@@ -262,6 +262,87 @@ function translation_table_nodetype_filt
 }
 
 /**
+ * Menu callback; Admin form for CCK translation.
+ */
+function translation_table_cck_form(&$form_state) {
+  $languages_selected = isset($_SESSION['translation_table']['languages_selected']) ? $_SESSION['translation_table']['languages_selected'] : locale_language_list('name', FALSE);
+  $cck_scope = isset($_SESSION['translation_table']['cck_scope']) ? $_SESSION['translation_table']['cck_scope'] : 0;
+
+  $form['filter'] = translation_table_cck_filter($languages_selected, $cck_scope);
+  $form['admin'] = translation_table_cck_filtered_form($languages_selected, $cck_scope);
+  $form['#submit'][] = 'translation_table_cck_form_submit';
+  $form['#submit'][] = 'translation_table_submit_translations';
+  return $form;
+}
+
+/**
+ * Form for CCK translation.
+ * Note: If the node type is not in the locales_source table, then it won't be
+ * displayed.
+ *
+ * @param $languages
+ *   languages to translate to
+ * @param $node_type
+ *    0: show all
+ *    else: filter by node type
+ */
+function translation_table_cck_filtered_form($languages, $cck_scope) {
+  $header = _translation_table_get_header($languages);
+
+  switch ($cck_scope) {
+    case '0':
+      $sql = "SELECT ls.lid, ls.source, ls.location FROM {locales_source} ls WHERE ls.textgroup = 'cck'";
+      $sql .= tablesort_sql($header);
+      $result = pager_query($sql, 50, 0);
+      break;
+
+    default:
+      list($scope_prefix, $scope_suffix) = explode('|', $cck_scope);
+      $sql = "SELECT ls.lid, ls.source, ls.location FROM {locales_source} ls WHERE ls.textgroup = 'cck'";
+      if ($scope_prefix == 'type') {
+        // Retrieve field and fieldgroup strings.
+        $sql .= " AND (ls.location LIKE 'field:%s-%%' OR ls.location LIKE 'fieldgroup:%s-%%')";
+        $args = array($scope_suffix, $scope_suffix);
+      }
+      else {
+        // Retrieve allowed values related strings.
+        $sql .= " AND ls.location LIKE 'field:%s:option\_%%'";
+        $args = array($scope_suffix);
+      }
+      $sql .= tablesort_sql($header);
+      $result = pager_query($sql, 50, 0, NULL, $args);
+      break;
+  }
+
+  $form['strings']['#tree'] = TRUE;
+  $form['#cache'] = TRUE;
+
+  $form['header'] = array(
+    '#type' => 'value',
+    '#value' => $header,
+  );
+
+  while ($source = db_fetch_object($result)) {
+    if (strlen(trim($source->source)) > 0) {
+      $form['strings'][$source->lid] = _translation_table_row($source, $languages);
+    }
+  }
+
+  $form['languages'] = array(
+    '#type' => 'value',
+    '#value' => $languages,
+  );
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Save'),
+  );
+
+  $form['pager'] = array('#value' => theme('pager', NULL, 50, 0));
+  $form['#theme'] = 'translation_table';
+  return $form;
+}
+
+/**
  * Theme function for the translation table.
  *
  * @ingroup themeable
@@ -455,6 +536,69 @@ function theme_translation_table_nodetyp
 }
 
 /**
+ * CCK filter.
+ */
+function translation_table_cck_filter($languages_selected, $cck_scope) {
+  $form['languages_selected'] = array(
+    '#type' => 'select',
+    '#title' => t('Languages'),
+    '#description' => t('Select the languages to display.'),
+    '#options' => locale_language_list('name', TRUE),
+    '#default_value' => array_keys($languages_selected),
+    '#multiple' => TRUE,
+    '#prefix' => '<div id="language-filter">',
+    '#suffix' => '</div>',
+  );
+
+  $scope_options = array(
+    0 => t('- All -'),
+    t('Content types') => array(),
+    t('Allowed values per field') => array(),
+  );
+  foreach (node_get_types('names') as $type => $name) {
+    if (variable_get('language_content_type_'. $type, 0)) {
+      $scope_options[t('Content types')]['type|'. $type] = $name;
+    }
+  }
+  foreach (content_fields() as $field_name => $field) {
+    if (empty($field['allowed_values_php']) && !empty($field['allowed_values'])) {
+      $function = $field['module'] .'_allowed_values';
+      $allowed_values = function_exists($function) ? $function($field) : (array) content_allowed_values($field);
+      if (!empty($allowed_values)) {
+        $scope_options[t('Allowed values per field')]['allowed_values|'. $field_name] = t($field['widget']['label']);
+      }
+    }
+  }
+  $form['cck_scope'] = array(
+    '#type' => 'select',
+    '#title' => t('Scope'),
+    '#description' => t('Select the kind of strings to display.'),
+    '#options' => $scope_options,
+    '#default_value' => $cck_scope,
+    '#prefix' => '<div id="cck-scope-filter">',
+    '#suffix' => '</div>',
+  );
+
+  $form['filter'] = array(
+    '#type' => 'submit',
+    '#value' => t('Filter'),
+  );
+
+  $form['#theme'] = 'translation_table_cck_filter';
+  return $form;
+}
+
+/**
+ * Theme function for the node type filter form.
+ *
+ * @ingroup themeable
+ */
+function theme_translation_table_cck_filter($form) {
+  $output = drupal_render($form);
+  return $output;
+}
+
+/**
  * Submit handler for the menu translation form.
  */
 function translation_table_menu_form_submit($form, &$form_state) {
@@ -493,6 +637,19 @@ function translation_table_nodetype_form
 }
 
 /**
+ * Submit handler for the CCK translation form.
+ */
+function translation_table_cck_form_submit($form, &$form_state) {
+  switch ($form_state['clicked_button']['#id']) {
+    case 'edit-filter':
+    case 'edit-submit':
+      $_SESSION['translation_table']['cck_scope'] = $form_state['values']['cck_scope'];
+      $_SESSION['translation_table']['languages_selected'] = array_intersect_key(locale_language_list('name', TRUE), $form_state['values']['languages_selected']);
+      break;
+  }
+}
+
+/**
  * Submit handler for the translation table.
  */
 function translation_table_submit_translations($form, &$form_state) {
diff -rupN translation_table/translation_table.module translation_table/translation_table.module
--- translation_table/translation_table.module	2009-08-14 16:35:12.000000000 +0200
+++ translation_table/translation_table.module	2009-08-14 16:36:19.000000000 +0200
@@ -59,6 +59,16 @@ function translation_table_menu() {
     'file' => 'includes/admin.inc',
   );
 
+  $items['admin/build/translate/table/cck'] = array(
+    'title' => 'CCK',
+    'description' => 'Edit CCK translations',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('translation_table_cck_form'),
+    'type' => MENU_LOCAL_TASK,
+    'access arguments' => array('translate interface'),
+    'file' => 'includes/admin.inc',
+  );
+
   return $items;
 }
 
@@ -83,5 +93,9 @@ function translation_table_theme() {
       'arguments' => array('form' => NULL),
       'file' => 'includes/admin.inc',
     ),
+    'translation_table_cck_filter' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'includes/admin.inc',
+    ),
   );
 }
