diff --git a/includes/locale.inc b/includes/locale.inc index fde19dd..c168da0 100644 --- a/includes/locale.inc +++ b/includes/locale.inc @@ -1860,7 +1860,16 @@ 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 = :langcode", array(':langcode' => $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')); @@ -1889,12 +1898,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']); diff --git a/modules/locale/locale.test b/modules/locale/locale.test index a710ab2..57b7f5e 100644 --- a/modules/locale/locale.test +++ b/modules/locale/locale.test @@ -645,6 +645,17 @@ class LocaleTranslationFunctionalTest extends DrupalWebTestCase { $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' in the custom language. + $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.'), t('Search found the string.')); + // Add translation. // Assume this is the only result, given the random name. $this->clickLink(t('edit'));