From 0c021ef90f3a64a8343d13cca0d36d33b5e50359 Mon Sep 17 00:00:00 2001
From: Uriy Efremochkin <333peps@gmail.com>
Date: Wed, 8 Jan 2014 13:48:40 +0600
Subject: [PATCH] Russian l10n improved

---
 select2_locale_ru.js | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/select2_locale_ru.js b/select2_locale_ru.js
index 3da956a8..90c89ddb 100644
--- a/select2_locale_ru.js
+++ b/select2_locale_ru.js
@@ -1,15 +1,21 @@
 /**
- * Select2 Russian translation
+ * Select2 Russian translation.
+ *
+ * @author  Uriy Efremochkin <efremochkin@uriy.me>
  */
 (function ($) {
     "use strict";
 
     $.extend($.fn.select2.defaults, {
         formatNoMatches: function () { return "Совпадений не найдено"; },
-        formatInputTooShort: function (input, min) { var n = min - input.length; return "Пожалуйста, введите еще " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5) ? "а" : "ов")); },
-        formatInputTooLong: function (input, max) { var n = input.length - max; return "Пожалуйста, введите на " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5)? "а" : "ов")) + " меньше"; },
-        formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit == 1 ? "а" : "ов"); },
+        formatInputTooShort: function (input, min) { return "Пожалуйста, введите еще" + character(min - input.length); },
+        formatInputTooLong: function (input, max) { return "Пожалуйста, введите на" + character(input.length - max) + " меньше"; },
+        formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit%10 == 1 && limit%100 != 11 ? "а" : "ов"); },
         formatLoadMore: function (pageNumber) { return "Загрузка данных..."; },
         formatSearching: function () { return "Поиск..."; }
     });
+
+    function character (n) {
+        return " " + n + " символ" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? "a" : "" : "ов");
+    }
 })(jQuery);