Index: l10n_community/l10n_community.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/l10n_server/l10n_community/Attic/l10n_community.module,v
retrieving revision 1.1.2.23.2.57
diff -u -p -r1.1.2.23.2.57 l10n_community.module
--- l10n_community/l10n_community.module	7 Oct 2009 18:21:36 -0000	1.1.2.23.2.57
+++ l10n_community/l10n_community.module	15 Oct 2009 11:47:23 -0000
@@ -50,6 +50,16 @@ define('L10N_STATUS_NO_SUGGESTION', 4);
  */
 define('L10N_STATUS_HAS_SUGGESTION', 8);
 
+/**
+ * Has no plural.
+ */
+define('L10N_STATUS_NO_PLURAL', 16);
+
+/**
+ * Has plural.
+ */
+define('L10N_STATUS_HAS_PLURAL', 32);
+
 // = Core hooks ================================================================
 
 /**
Index: l10n_community/translate.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/l10n_server/l10n_community/Attic/translate.inc,v
retrieving revision 1.1.2.7.2.21
diff -u -p -r1.1.2.7.2.21 translate.inc
--- l10n_community/translate.inc	15 Oct 2009 08:46:40 -0000	1.1.2.7.2.21
+++ l10n_community/translate.inc	15 Oct 2009 11:47:23 -0000
@@ -74,6 +74,12 @@ function l10n_community_filter_form(&$fo
     L10N_STATUS_NO_SUGGESTION  => t('Has no suggestion'),
     L10N_STATUS_HAS_SUGGESTION => t('Has suggestion'),
   );
+
+  $plural_options = array(
+    L10N_STATUS_ALL            => t('<Any>'),
+    L10N_STATUS_NO_PLURAL      => t('Has no plural'),
+    L10N_STATUS_HAS_PLURAL     => t('Has plural'),
+  );
   
   $form['project'] = array(
     '#title' => t('Project'),
@@ -136,6 +142,11 @@ function l10n_community_filter_form(&$fo
       '#default_value' => $filters['status'] & (L10N_STATUS_HAS_SUGGESTION | L10N_STATUS_NO_SUGGESTION),
     );
   }
+  $form['status']['plural'] = array(
+    '#type' => 'select',
+    '#options' => $plural_options,
+    '#default_value' => $filters['status'] & (L10N_STATUS_HAS_PLURAL | L10N_STATUS_NO_PLURAL),
+  );
 
   $form['author']= array(
     '#type' => 'textfield',
@@ -527,7 +538,7 @@ function theme_l10n_community_filter_for
   $row = array();
   $labels = array();
   // Only display these elements in distinct table cells
-  $elements = array('project', 'release', 'context', 'status', 'author', 'search', 'limit');
+  $elements = array('project', 'release', 'context', 'status', 'author', 'search', 'plural', 'limit');
   foreach ($form as $id => &$element) {
     if (in_array($id, $elements)) {
       $labels[] = $element['#title'];
@@ -693,7 +704,13 @@ function l10n_community_get_strings($lan
   elseif ($filters['status'] & L10N_STATUS_NO_SUGGESTION) {
     $where[] = "((t.has_suggestion IS NULL) OR (t.has_suggestion = 0))";
   }
-
+  if ($filters['status'] & L10N_STATUS_HAS_PLURAL) {
+    $where[] = "LOCATE(CHAR(0), s.value) > 0";
+  }
+  elseif ($filters['status'] & L10N_STATUS_NO_PLURAL) {
+    $where[] = "LOCATE(CHAR(0), s.value) = 0";
+  }
+  
   // Build the queries
   $sql_args = array_merge($join_args, $where_args);
   $sql_where = implode(' ', $join) . (count($where) ? (' WHERE '. implode(' AND ', $where)) : '');
@@ -728,10 +745,10 @@ function l10n_community_build_filter_val
   // Convert array representation of flags to one integer.
   if (isset($params['status']) && is_array($params['status'])) {
     if (isset($params['status']['suggestion'])) {
-      $params['status'] = ((int) $params['status']['translation']) | ((int) $params['status']['suggestion']);
+      $params['status'] = ((int) $params['status']['translation']) | ((int) $params['status']['suggestion']) | ((int) $params['status']['plural']);
     }
     else {
-      $params['status'] = (int) $params['status']['translation'];
+      $params['status'] = (int) $params['status']['translation'] | ((int) $params['status']['plural']);
     }
   }
 
