? sites/all
? sites/default
? sites/example.sites.php
Index: includes/locale.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/locale.inc,v
retrieving revision 1.266
diff -u -p -r1.266 locale.inc
--- includes/locale.inc	3 Jan 2011 18:03:54 -0000	1.266
+++ includes/locale.inc	27 Jan 2011 08:56:05 -0000
@@ -1624,7 +1624,15 @@ function _locale_translate_seek() {
   }
 
   $sql_query = db_select('locales_source', 's');
-  $sql_query->leftJoin('locales_target', 't', 't.lid = s.lid');
+
+  $limit_language = NULL;
+  if ($query['language'] != 'en' && $query['language'] != 'all') {
+    $sql_query->leftJoin('locales_target', 't', 't.lid = s.lid AND t.language = :language', array(':language' => $query['language']));
+    $limit_language = $query['language'];
+  }
+  else {
+    $sql_query->leftJoin('locales_target', 't', 't.lid = s.lid');
+  }
   $sql_query->fields('s', array('source', 'location', 'context', 'lid', 'textgroup'));
   $sql_query->fields('t', array('translation', 'language'));
 
@@ -1653,12 +1661,6 @@ function _locale_translate_seek() {
       break;
   }
 
-  $limit_language = NULL;
-  if ($query['language'] != 'en' && $query['language'] != 'all') {
-    $sql_query->condition('language', $query['language']);
-    $limit_language = $query['language'];
-  }
-
   // Add a condition on the text group.
   if (!empty($query['group']) && $query['group'] != 'all') {
     $sql_query->condition('s.textgroup', $query['group']);
@@ -1668,7 +1670,10 @@ function _locale_translate_seek() {
   $locales = $sql_query->execute();
 
   $groups = module_invoke_all('locale', 'groups');
-  $header = array(t('Text group'), t('String'), t('Context'), ($limit_language) ? t('Language') : t('Languages'), array('data' => t('Operations'), 'colspan' => '2'));
+  $languages = language_list('language');
+  // Format the string according to number of languages used in the query.
+  $language_count = ($limit_language || count($languages) < 3) ? 1 : 2;
+  $header = array(t('Text group'), t('String'), t('Context'), format_plural($language_count, 'Language', 'Languages'), array('data' => t('Operations'), 'colspan' => '2'));
 
   $strings = array();
   foreach ($locales as $locale) {
Index: modules/locale/locale.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.test,v
retrieving revision 1.88
diff -u -p -r1.88 locale.test
--- modules/locale/locale.test	30 Nov 2010 01:05:24 -0000	1.88
+++ modules/locale/locale.test	27 Jan 2011 08:56:05 -0000
@@ -502,6 +502,17 @@ class LocaleTranslationFunctionalTest ex
     $this->drupalPost('admin/config/regional/translate/translate', $search, t('Filter'));
     $this->assertNoText(t('No strings available.'), t('Search found the string.'));
 
+    // Ensure untranslated string appears if searching on 'only untranslated
+    // strings' when using another language than english.
+    $search = array(
+      'string' => $name,
+      'language' => $langcode,
+      'translation' => 'untranslated',
+      'group' => 'all',
+    );
+    $this->drupalPost('admin/config/regional/translate/translate', $search, t('Filter'));
+    $this->assertNoText(t('No strings available when searching using another language than english.'), t('Search found the string.'));
+
     // Add translation.
     // Assume this is the only result, given the random name.
     $this->clickLink(t('edit'));
