소스 검색

Don't crash if the number of plural forms is wrong

Fixes #599
Antony Male 4 년 전
부모
커밋
d7c4cd4f1a
1개의 변경된 파일7개의 추가작업 그리고 2개의 파일을 삭제
  1. 7 2
      src/SyncTrayzor/Localization/CustomPluralLocalizationFormatter.cs

+ 7 - 2
src/SyncTrayzor/Localization/CustomPluralLocalizationFormatter.cs

@@ -122,10 +122,15 @@ namespace SyncTrayzor.Localization
             var pluralCount = pluralWords.Count;
             var pluralCount = pluralWords.Count;
             var pluralIndex = pluralRule(value, pluralCount);
             var pluralIndex = pluralRule(value, pluralCount);
 
 
-            if (pluralIndex < 0 || pluralWords.Count <= pluralIndex)
+            if (pluralIndex < 0)
+            {
+                throw new FormattingException(format, "Invalid pluralIndex <0", pluralIndex);
+            }
+            else if (pluralWords.Count <= pluralIndex)
             {
             {
                 // The plural rule should always return a value in-range!
                 // The plural rule should always return a value in-range!
-                throw new FormattingException(format, "Invalid number of plural parameters", pluralWords.Last().endIndex);
+                // Pick the last plural in this case: we don't want to crash because of a bad translation
+                pluralIndex = pluralWords.Count - 1;
             }
             }
 
 
             // Output the selected word (allowing for nested formats):
             // Output the selected word (allowing for nested formats):