Index: l10n.php
===================================================================
--- l10n.php	(revision 32479)
+++ l10n.php	(working copy)
@@ -866,6 +866,7 @@
  *                                                 {@see wp_get_available_translations()}.
  *     @type string  $selected                     Language which should be selected. Default empty.
  *     @type bool    $show_available_translations  Whether to show available translations. Default true.
+ *     @type bool    $echo                         True to output the markup (default), or false to return it. 
  * }
  */
 function wp_dropdown_languages( $args = array() ) {
@@ -877,6 +878,7 @@
 		'translations' => array(),
 		'selected'     => '',
 		'show_available_translations' => true,
+		'echo'         => true,
 	) );
 
 	$translations = $args['translations'];
@@ -910,9 +912,11 @@
 		}
 	}
 
+	$output = '';
+
 	$translations_available = ( ! empty( $translations ) && $args['show_available_translations'] );
 
-	printf( '<select name="%s" id="%s">', esc_attr( $args['name'] ), esc_attr( $args['id'] ) );
+	$output .= sprintf( '<select name="%s" id="%s">', esc_attr( $args['name'] ), esc_attr( $args['id'] ) );
 
 	// Holds the HTML markup.
 	$structure = array();
@@ -950,7 +954,12 @@
 		$structure[] = '</optgroup>';
 	}
 
-	echo join( "\n", $structure );
+	$output .= join( "\n", $structure );
 
-	echo '</select>';
+	$output .= '</select>';
+	if ( $args['echo'] ) {
+		echo $output;
+	} else {
+		return $output;
+	}
 }
