diff --git a/yesod-form/Yesod/Form/Functions.hs b/yesod-form/Yesod/Form/Functions.hs
index ae3a3bac..10b827ae 100644
--- a/yesod-form/Yesod/Form/Functions.hs
+++ b/yesod-form/Yesod/Form/Functions.hs
@@ -430,6 +430,8 @@ renderBootstrap = renderBootstrap2
-- > ^{formWidget}
-- >
-- >
+--
+-- Since 1.3.14
renderBootstrap2 :: Monad m => FormRender m a
renderBootstrap2 aform fragment = do
(res, views') <- aFormToForm aform
@@ -450,6 +452,10 @@ renderBootstrap2 aform fragment = do
#{err}
|]
return (res, widget)
+
+-- | Deprecated synonym for 'renderBootstrap2'.
+renderBootstrap :: Monad m => FormRender m a
+renderBootstrap = renderBootstrap2
{-# DEPRECATED renderBootstrap "Please use the Yesod.Form.Bootstrap3 module." #-}
check :: (Monad m, RenderMessage (HandlerSite m) msg)
diff --git a/yesod-form/Yesod/Form/I18n/Russian.hs b/yesod-form/Yesod/Form/I18n/Russian.hs
new file mode 100644
index 00000000..d2171286
--- /dev/null
+++ b/yesod-form/Yesod/Form/I18n/Russian.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Yesod.Form.I18n.Russian where
+
+import Yesod.Form.Types (FormMessage (..))
+import Data.Monoid (mappend)
+import Data.Text (Text)
+
+russianFormMessage :: FormMessage -> Text
+russianFormMessage (MsgInvalidInteger t) = "Неверно записано целое число: " `mappend` t
+russianFormMessage (MsgInvalidNumber t) = "Неверный формат числа: " `mappend` t
+russianFormMessage (MsgInvalidEntry t) = "Неверный выбор: " `mappend` t
+russianFormMessage MsgInvalidTimeFormat = "Неверно указано время, используйте формат ЧЧ:ММ[:СС]"
+russianFormMessage MsgInvalidDay = "Неверно указана дата, используйте формат ГГГГ-ММ-ДД"
+russianFormMessage (MsgInvalidUrl t) = "Неверно указан URL адрес: " `mappend` t
+russianFormMessage (MsgInvalidEmail t) = "Неверно указана электронная почта: " `mappend` t
+russianFormMessage (MsgInvalidHour t) = "Неверно указан час: " `mappend` t
+russianFormMessage (MsgInvalidMinute t) = "Неверно указаны минуты: " `mappend` t
+russianFormMessage (MsgInvalidSecond t) = "Неверны указаны секунды: " `mappend` t
+russianFormMessage MsgCsrfWarning = "Для защиты от межсайтовой подделки запросов (CSRF), пожалуйста, подтвердите отправку данных формы."
+russianFormMessage MsgValueRequired = "Обязательно к заполнению"
+russianFormMessage (MsgInputNotFound t) = "Поле не найдено: " `mappend` t
+russianFormMessage MsgSelectNone = "<Не выбрано>"
+russianFormMessage (MsgInvalidBool t) = "Неверное логическое значение: " `mappend` t
+russianFormMessage MsgBoolYes = "Да"
+russianFormMessage MsgBoolNo = "Нет"
+russianFormMessage MsgDelete = "Удалить?"
diff --git a/yesod-form/Yesod/Form/Jquery.hs b/yesod-form/Yesod/Form/Jquery.hs
index 2c4ae250..362eb8a0 100644
--- a/yesod-form/Yesod/Form/Jquery.hs
+++ b/yesod-form/Yesod/Form/Jquery.hs
@@ -7,6 +7,7 @@ module Yesod.Form.Jquery
( YesodJquery (..)
, jqueryDayField
, jqueryAutocompleteField
+ , jqueryAutocompleteField'
, googleHostedJqueryUiCss
, JqueryDaySettings (..)
, Default (..)
@@ -98,7 +99,13 @@ $(function(){
jqueryAutocompleteField :: (RenderMessage site FormMessage, YesodJquery site)
=> Route site -> Field (HandlerT site IO) Text
-jqueryAutocompleteField src = Field
+jqueryAutocompleteField = jqueryAutocompleteField' 2
+
+jqueryAutocompleteField' :: (RenderMessage site FormMessage, YesodJquery site)
+ => Int -- ^ autocomplete minimum length
+ -> Route site
+ -> Field (HandlerT site IO) Text
+jqueryAutocompleteField' minLen src = Field
{ fieldParse = parseHelper $ Right
, fieldView = \theId name attrs val isReq -> do
toWidget [shamlet|
@@ -109,7 +116,7 @@ $newline never
addScript' urlJqueryUiJs
addStylesheet' urlJqueryUiCss
toWidget [julius|
-$(function(){$("##{rawJS theId}").autocomplete({source:"@{src}",minLength:2})});
+$(function(){$("##{rawJS theId}").autocomplete({source:"@{src}",minLength:#{toJSON minLen}})});
|]
, fieldEnctype = UrlEncoded
}
diff --git a/yesod-form/Yesod/Form/Nic.hs b/yesod-form/Yesod/Form/Nic.hs
index 28626789..7e4af077 100644
--- a/yesod-form/Yesod/Form/Nic.hs
+++ b/yesod-form/Yesod/Form/Nic.hs
@@ -26,10 +26,10 @@ class Yesod a => YesodNic a where
nicHtmlField :: YesodNic site => Field (HandlerT site IO) Html
nicHtmlField = Field
{ fieldParse = \e _ -> return . Right . fmap (preEscapedToMarkup . sanitizeBalance) . listToMaybe $ e
- , fieldView = \theId name attrs val _isReq -> do
+ , fieldView = \theId name attrs val isReq -> do
toWidget [shamlet|
$newline never
-