diff --git a/lib/l10n.php b/lib/l10n.php
index d35ce5fed14f4b19b3007f9e8b71c919b6ef4780..03528c22746e841abeb24b3e292f3604ed105322 100644
--- a/lib/l10n.php
+++ b/lib/l10n.php
@@ -166,6 +166,26 @@ class OC_L10N{
 		return new OC_L10N_String($this, $text, $parameters);
 	}
 
+	/**
+	 * @brief Translating
+	 * @param $text_singular String the string to translate for exactly one object
+	 * @param $text_plural String the string to translate for n objects
+	 * @param $count Integer Number of objects
+	 * @param array $parameters default:array() Parameters for sprintf
+	 * @return \OC_L10N_String Translation or the same text
+	 *
+	 * Returns the translation. If no translation is found, $text will be
+	 * returned. %n will be replaced with the number of objects.
+	 */
+	public function tp($text_singular, $text_plural, $count, $parameters = array()) {
+		if($count == 1){
+			return new OC_L10N_String($this, $text_singular, $parameters, $count);
+		}
+		else{
+			return new OC_L10N_String($this, $text_plural, $parameters, $count);
+		}
+	}
+
 	/**
 	 * @brief Translating
 	 * @param $textArray The text array we need a translation for
diff --git a/lib/l10n/string.php b/lib/l10n/string.php
index 8eef10071e6451010dfb385f889bcfc1cb5536af..1bef7330945b4773765826ffd7921ca53458c0ba 100644
--- a/lib/l10n/string.php
+++ b/lib/l10n/string.php
@@ -8,18 +8,23 @@
 
 class OC_L10N_String{
 	protected $l10n;
-	public function __construct($l10n, $text, $parameters) {
+	public function __construct($l10n, $text, $parameters, $count = 1) {
 		$this->l10n = $l10n;
 		$this->text = $text;
 		$this->parameters = $parameters;
+		$this->count = $count;
 
 	}
 
 	public function __toString() {
 		$translations = $this->l10n->getTranslations();
+
+		$text = $this->text;
 		if(array_key_exists($this->text, $translations)) {
-			return vsprintf($translations[$this->text], $this->parameters);
+			$text = $translations[$this->text];
 		}
-		return vsprintf($this->text, $this->parameters);
+		// Replace %n first (won't interfere with vsprintf)
+		$text = str_replace('%n', $this->count, $text);
+		return vsprintf($text, $this->parameters);
 	}
 }