# Copyright 2004 The Apache Software Foundation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# standard messages (Spec. 2.5.2.4)

# components
javax.faces.component.UIInput.CONVERSION        = B\u0142\u0105d konwersji
javax.faces.component.UIInput.CONVERSION_detail = {0}: B\u0142\u0105d podczas aktualizacji danych modelu.
javax.faces.component.UIInput.REQUIRED        = B\u0142\u0105d walidacji
javax.faces.component.UIInput.REQUIRED_detail = {0}: Warto\u015b\u0107 jest wymagana.

javax.faces.component.UISelectOne.INVALID        = B\u0142\u0105d walidacji
javax.faces.component.UISelectOne.INVALID_detail = {0}: Warto\u015b\u0107 nie jest poprawn\u0105 opcj\u0105.
javax.faces.component.UISelectMany.INVALID        = B\u0142\u0105d walidacji
javax.faces.component.UISelectMany.INVALID_detail = {0}: Warto\u015b\u0107 nie jest poprawn\u0105 opcj\u0105.

# converters
javax.faces.converter.BigDecimalConverter.DECIMAL        = B\u0142\u0105d konwersji
javax.faces.converter.BigDecimalConverter.DECIMAL_detail = Podana warto\u015b\u0107 nie jest poprawn\u0105 liczb\u0105.

javax.faces.converter.BigIntegerConverter.BIGINTEGER        = B\u0142\u0105d konwersji
javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = Podana warto\u015b\u0107 nie jest poprawn\u0105 liczb\u0105.

javax.faces.converter.BooleanConverter.BOOLEAN        = B\u0142\u0105d konwersji
javax.faces.converter.BooleanConverter.BOOLEAN_detail = Nie mo\u017cna przekszta\u0142ci\u0107 '{0}' do warto\u015bci logicznej.

javax.faces.converter.ByteConverter.BYTE        = B\u0142\u0105d konwersji
javax.faces.converter.ByteConverter.BYTE_detail = Nie mo\u017cna przekszta\u0142ci\u0107 '{0}' do bajtu.

javax.faces.converter.CharacterConverter.CHARACTER        = B\u0142\u0105d konwersji
javax.faces.converter.CharacterConverter.CHARACTER_detail = Nie mo\u017cna przekszta\u0142ci\u0107 '{0}' do znaku.

javax.faces.converter.DateTimeConverter.CONVERSION        = B\u0142\u0105d konwersji
javax.faces.converter.DateTimeConverter.CONVERSION_detail = {1}: Podana warto\u015b\u0107 nie jest poprawn\u0105 dat\u0105/czasem.

javax.faces.converter.DoubleConverter.DOUBLE        = B\u0142\u0105d konwersji
javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: Podana warto\u015b\u0107 nie jest poprawn\u0105 liczb\u0105.


javax.faces.converter.FloatConverter.FLOAT        = B\u0142\u0105d konwersji
javax.faces.converter.FloatConverter.FLOAT_detail = {2}: Podana warto\u015b\u0107 nie jest poprawn\u0105 liczb\u0105.

javax.faces.converter.IntegerConverter.INTEGER        = B\u0142\u0105d konwersji
javax.faces.converter.IntegerConverter.INTEGER_detail = {0}: Podana warto\u015b\u0107 nie jest poprawn\u0105 liczb\u0105.

javax.faces.converter.LongConverter.LONG        = B\u0142\u0105d konwersji
javax.faces.converter.LongConverter.LONG_detail = {2}: Podana warto\u015b\u0107 nie jest poprawn\u0105 liczb\u0105.

javax.faces.converter.NumberConverter.CONVERSION        = B\u0142\u0105d konwersji
javax.faces.converter.NumberConverter.CONVERSION_detail = {0}: Podana warto\u015b\u0107 nie jest poprawn\u0105 liczb\u0105.

javax.faces.converter.ShortConverter.SHORT        = B\u0142\u0105d konwersji
javax.faces.converter.ShortConverter.SHORT_detail = {2}: Podana warto\u015b\u0107 nie jest poprawn\u0105 liczb\u0105.

# validators
javax.faces.validator.NOT_IN_RANGE        = B\u0142\u0105d walidacji
javax.faces.validator.NOT_IN_RANGE_detail = {2}: Podany atrybut nie zawiera si\u0119 mi\u0119dzy oczekiwanymi warto\u015bciami {0} i {1}.

javax.faces.validator.DoubleRangeValidator.MAXIMUM        = B\u0142\u0105d walidacji
javax.faces.validator.DoubleRangeValidator.MAXIMUM_detail = {1}: Warto\u015b\u0107 jest wi\u0119ksza ni\u017c dopuszczalne maksimum ''{0}''.
javax.faces.validator.DoubleRangeValidator.MINIMUM        = B\u0142\u0105d walidacji
javax.faces.validator.DoubleRangeValidator.MINIMUM_detail = {1}: Warto\u015b\u0107 jest mniejsza ni\u017c dopuszczalne minimum ''{0}''.
javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE        = B\u0142\u0105d walidacji
javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE_detail = Podany atrybut nie podlega konwersji na w\u0142a\u015bciwy typ.
javax.faces.validator.DoubleRangeValidator.TYPE        = B\u0142\u0105d walidacji
javax.faces.validator.DoubleRangeValidator.TYPE_detail = {0}: Warto\u015b\u0107 nie jest w\u0142a\u015bciwego typu.

javax.faces.validator.LengthValidator.MAXIMUM        = B\u0142\u0105d walidacji
javax.faces.validator.LengthValidator.MAXIMUM_detail = {1}: Warto\u015b\u0107 jest d\u0142u\u017csza ni\u017c dopuszczalne maksimum {0} znak\u00f3w.
javax.faces.validator.LengthValidator.MINIMUM        = B\u0142\u0105d walidacji
javax.faces.validator.LengthValidator.MINIMUM_detail = {1}: Warto\u015b\u0107 jest kr\u00f3tsza ni\u017c dopuszczalne minimum {0} znak\u00f3w.

javax.faces.validator.LongRangeValidator.MAXIMUM        = B\u0142\u0105d walidacji
javax.faces.validator.LongRangeValidator.MAXIMUM_detail = {1}: Warto\u015b\u0107 jest wi\u0119ksza ni\u017c dopuszczalne maksimum ''{0}''.
javax.faces.validator.LongRangeValidator.MINIMUM        = B\u0142\u0105d walidacji
javax.faces.validator.LongRangeValidator.MINIMUM_detail = {1}: Warto\u015b\u0107 jest mniejsza ni\u017c dopuszczalne minimum ''{0}''.
javax.faces.validator.LongRangeValidator.NOT_IN_RANGE        = B\u0142\u0105d walidacji
javax.faces.validator.LongRangeValidator.NOT_IN_RANGE_detail = Podany atrybut nie podlega konwersji na w\u0142a\u015bciwy typ.
javax.faces.validator.LongRangeValidator.TYPE        = Validation Error
javax.faces.validator.LongRangeValidator.TYPE_detail = {0}: Warto\u015b\u0107 nie jest w\u0142a\u015bciwego typu.



# myfaces specific messages
org.apache.myfaces.Email.INVALID = B\u0142\u0105d walidacji
org.apache.myfaces.Email.INVALID_detail =Podana warto\u015b\u0107 ({0}) nie jest poprawnym adresem email.

org.apache.myfaces.Equal.INVALID = B\u0142\u0105d walidacji
org.apache.myfaces.Equal.INVALID_detail =Podana warto\u015b\u0107 ({0}) nie jest r\u00f3wna warto\u015bci "{1}".

org.apache.myfaces.Creditcard.INVALID = B\u0142\u0105d walidacji
org.apache.myfaces.Creditcard.INVALID_detail =Podana warto\u015b\u0107 ({0}) nie jest poprawnym numerem karty kredytowej

org.apache.myfaces.Regexpr.INVALID=B\u0142\u0105d walidacji
org.apache.myfaces.Regexpr.INVALID_detail=Podana warto\u015b\u0107 ({0}) nie jest poprawna.

org.apache.myfaces.Date.INVALID = B\u0142\u0105d walidacji
org.apache.myfaces.Date.INVALID_detail =Podana warto\u015b\u0107 ({0}) nie jest poprawn\u0105 dat\u0105

org.apache.myfaces.ticker.NOCONNECTION = Brak po\u0142\u0105czenia: 
org.apache.myfaces.ticker.NOCONNECTION_detail = Mo\u017ce jeste\u015b za firewallem?

org.apache.myfaces.ISBN.INVALID = B\u0142\u0105d walidacji
org.apache.myfaces.ISBN.INVALID_detail =Podana warto\u015b\u0107 ({0}) nie jest poprawnym numerem ISBN.
