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	7 Jan 2011 20:17:40 -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,11 @@ 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');
+  // Use singular Language if query is limited by language
+  // or there are less than 3 languages.
+  $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	7 Jan 2011 20:17:40 -0000
@@ -501,6 +501,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 for 'only untranslated
+    // strings' in 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 for string in current language.'), t('Search found the string.'));
 
     // Add translation.
     // Assume this is the only result, given the random name.
@@ -564,6 +575,8 @@ class LocaleTranslationFunctionalTest ex
       'translation' => 'all',
       'group' => 'all',
     );
+    
+    // Ensure translated 
     $this->drupalPost('admin/config/regional/translate/translate', $search, t('Filter'));
     $this->assertText(t('No strings available.'), t("Search didn't find the translation."));
 
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.327
diff -u -p -r1.327 system.admin.inc
--- modules/system/system.admin.inc	4 Jan 2011 04:02:29 -0000	1.327
+++ modules/system/system.admin.inc	7 Jan 2011 20:17:40 -0000
@@ -467,7 +467,7 @@ function system_theme_settings($form, &$
     // If $logo_path is a public:// URI, display the path relative to the files
     // directory; stream wrappers are not end-user friendly.
     if (file_uri_scheme($logo_path) == 'public') {
-      $logo_path = file_uri_target($logo_path);
+      $logo_path = variable_get('file_public_path', conf_path() . '/files') . '/' . file_uri_target($logo_path);
     }
     $form['logo']['settings']['logo_path'] = array(
       '#type' => 'textfield',
