diff --git a/l10n/l10n.pl b/l10n/l10n.pl
index 4f8d8debb8d932ecead3d97c2db5742f173b5e29..0ff25944d6ca69cc8d285757ba6fcc0a6c3a0f4d 100644
--- a/l10n/l10n.pl
+++ b/l10n/l10n.pl
@@ -145,7 +145,7 @@ elsif( $task eq 'write' ){
 			my @js_strings = ();
 			my $plurals;
 
-			foreach my $string ( @{$array} ){
+			TRANSLATIONS: foreach my $string ( @{$array} ){
 				if( $string->msgid() eq '""' ){
 					# Translator information
 					$plurals = getPluralInfo( $string->msgstr());
@@ -160,6 +160,7 @@ elsif( $task eq 'write' ){
 					my $identifier = "_" . $msgid."_::_".$msgid_plural . "_";
 
 					foreach my $variant ( sort { $a <=> $b} keys( %{$string->msgstr_n()} )){
+						next TRANSLATIONS if $string->msgstr_n()->{$variant} eq '""';
 						push( @variants, $string->msgstr_n()->{$variant} );
 					}
 
@@ -168,7 +169,7 @@ elsif( $task eq 'write' ){
 				}
 				else{
 					# singular translations
-					next if $string->msgstr() eq '""';
+					next TRANSLATIONS if $string->msgstr() eq '""';
 					push( @strings, $string->msgid()." => ".$string->msgstr());
 					push( @js_strings, $string->msgid()." : ".$string->msgstr());
 				}
diff --git a/lib/private/l10n.php b/lib/private/l10n.php
index b16a0468e235fab4407fe753962d618bc488dda9..95b80bebdb2424f068a251895fcf85c240700e75 100644
--- a/lib/private/l10n.php
+++ b/lib/private/l10n.php
@@ -305,7 +305,7 @@ class OC_L10N implements \OCP\IL10N {
 		$this->init();
 		$identifier = "_${text_singular}_::_${text_plural}_";
 		if( array_key_exists($identifier, $this->translations)) {
-			return new OC_L10N_String($this, $identifier, $parameters, $count, array($text_singular, $text_plural));
+			return new OC_L10N_String( $this, $identifier, $parameters, $count );
 		}else{
 			if($count === 1) {
 				return new OC_L10N_String($this, $text_singular, $parameters, $count);
diff --git a/lib/private/l10n/string.php b/lib/private/l10n/string.php
index 21fe765618bbfb198109ec3e9864c139d2fb78c5..6167a6737dc7c59abf5b02f968adee7fc7734c75 100644
--- a/lib/private/l10n/string.php
+++ b/lib/private/l10n/string.php
@@ -40,11 +40,6 @@ class OC_L10N_String{
 	 */
 	protected $parameters;
 
-	/**
-	 * @var array
-	 */
-	protected $plurals;
-
 	/**
 	 * @var integer
 	 */
@@ -53,12 +48,11 @@ class OC_L10N_String{
 	/**
 	 * @param OC_L10N $l10n
 	 */
-	public function __construct($l10n, $text, $parameters, $count = 1, $plurals = array()) {
+	public function __construct($l10n, $text, $parameters, $count = 1) {
 		$this->l10n = $l10n;
 		$this->text = $text;
 		$this->parameters = $parameters;
 		$this->count = $count;
-		$this->plurals = $plurals;
 	}
 
 	public function __toString() {
@@ -69,19 +63,7 @@ class OC_L10N_String{
 			if(is_array($translations[$this->text])) {
 				$fn = $this->l10n->getPluralFormFunction();
 				$id = $fn($this->count);
-
-				if ($translations[$this->text][$id] !== '') {
-					// The translation of this plural case is not empty, so use it
-					$text = $translations[$this->text][$id];
-				} else {
-					// We didn't find the plural in the language,
-					// so we fall back to english.
-					$id = ($id != 0) ? 1 : 0;
-					if (isset($this->plurals[$id])) {
-						// Fallback to the english plural
-						$text = $this->plurals[$id];
-					}
-				}
+				$text = $translations[$this->text][$id];
 			}
 			else{
 				$text = $translations[$this->text];
diff --git a/tests/data/l10n/ru.json b/tests/data/l10n/ru.json
index 7041205e761d470624c2c8e01ca32c3da66eeb59..177b14a6b20f2038b3c17b56af54add502802e9c 100644
--- a/tests/data/l10n/ru.json
+++ b/tests/data/l10n/ru.json
@@ -1,7 +1,6 @@
 {
 	"translations" : {
-		"_%n file_::_%n files_" : ["%n файл", "%n файла", "%n файлов"],
-		"_%n missing plural_::_%n missing plurals_" : ["", "", ""]
+		"_%n file_::_%n files_" : ["%n файл", "%n файла", "%n файлов"]
 	},
 	"pluralForm" :	"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
 }
diff --git a/tests/lib/l10n.php b/tests/lib/l10n.php
index 0307dd459e5b7d89004619e1e3adb2a4a629615b..d5f9a5ca3fa84eeac8955d2c0fe49f74b4714110 100644
--- a/tests/lib/l10n.php
+++ b/tests/lib/l10n.php
@@ -42,24 +42,6 @@ class Test_L10n extends \Test\TestCase {
 		*/
 	}
 
-	public function russianMissingPluralTranslationsData() {
-		return array(
-			array(1, '1 missing plural'),
-			array(2, '2 missing plurals'),
-			array(6, '6 missing plurals'),
-		);
-	}
-
-	/**
-	 * @dataProvider russianMissingPluralTranslationsData
-	 */
-	public function testRussianMissingPluralTranslations($count, $expected) {
-		$l = new OC_L10N('test');
-		$l->load(OC::$SERVERROOT.'/tests/data/l10n/ru.json');
-
-		$this->assertEquals($expected, (string)$l->n('%n missing plural', '%n missing plurals', $count));
-	}
-
 	public function testCzechPluralTranslations() {
 		$l = new OC_L10N('test');
 		$transFile = OC::$SERVERROOT.'/tests/data/l10n/cs.json';