Update messages translations, add Ukrainian, rename Portuguese
diff --git a/api/src/main/resources/javax/faces/Messages.properties b/api/src/main/resources/javax/faces/Messages.properties
index 8e2672a..b2224e9 100755
--- a/api/src/main/resources/javax/faces/Messages.properties
+++ b/api/src/main/resources/javax/faces/Messages.properties
@@ -17,7 +17,7 @@
 # components
 javax.faces.component.UIInput.CONVERSION = {0}: Conversion error occurred.
 javax.faces.component.UIInput.REQUIRED = {0}: Validation Error: Value is required.
-javax.faces.component.UIInput.UPDATE = {0}: An error occurred when processing your submitted information. 
+javax.faces.component.UIInput.UPDATE = {0}: An error occurred when processing your submitted information.
 
 javax.faces.component.UISelectOne.INVALID = {0}: Validation Error: Value is not valid
 javax.faces.component.UISelectMany.INVALID = {0}: Validation Error: Value is not valid
@@ -39,11 +39,11 @@
 javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' must be a valid ASCII character.
 
 javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' could not be understood as a date.
-javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1} 
+javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1}
 javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' could not be understood as a time.
-javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' could not be understood as a time. Example: {1} 
+javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' could not be understood as a time. Example: {1}
 javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' could not be understood as a date and time.
-javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' could not be understood as a date and time. Example: {1} 
+javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' could not be understood as a date and time. Example: {1}
 javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: A ''pattern'' or ''type'' attribute must be specified to convert the value ''{0}''.
 
 javax.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' must be a number consisting of one or more digits.
@@ -116,13 +116,13 @@
 org.apache.myfaces.Date.INVALID = Validation Error
 org.apache.myfaces.Date.INVALID_detail =The given value ({0}) is not a correct date
 
-org.apache.myfaces.ticker.NOCONNECTION = No Connection: 
+org.apache.myfaces.ticker.NOCONNECTION = No Connection:
 org.apache.myfaces.ticker.NOCONNECTION_detail = Maybe you are behind a firewall?
 
 org.apache.myfaces.ISBN.INVALID = Validation Error
 org.apache.myfaces.ISBN.INVALID_detail =The given value ({0}) is not a correct isbn code.
 
-org.apache.myfaces.tree2.MISSING_NODE        = Missing Node
+org.apache.myfaces.tree2.MISSING_NODE = Missing Node
 org.apache.myfaces.tree2.MISSING_NODE_detail = The requested node "{0}" does not exist.
 
 org.apache.myfaces.calendar.CONVERSION = Conversion Error
diff --git a/api/src/main/resources/javax/faces/Messages_de.properties b/api/src/main/resources/javax/faces/Messages_de.properties
index 07762c1..0b4371e 100755
--- a/api/src/main/resources/javax/faces/Messages_de.properties
+++ b/api/src/main/resources/javax/faces/Messages_de.properties
@@ -17,40 +17,40 @@
 # components
 javax.faces.component.UIInput.CONVERSION = {0}: Ein Konvertierungsfehler ist aufgetreten.
 javax.faces.component.UIInput.REQUIRED = {0}: Validierungsfehler: Eingabe erforderlich.
-javax.faces.component.UIInput.UPDATE = {0}\: Bei der Verarbeitung der \u00FCbertragenden Eingaben ist ein Fehler aufgetreten. 
+javax.faces.component.UIInput.UPDATE = {0}: Bei der Verarbeitung der \u00FCbertragenden Eingaben ist ein Fehler aufgetreten.
 
-javax.faces.component.UISelectOne.INVALID = {0}\: Validierungsfehler\: Wert ist keine g\u00FCltige Auswahl
-javax.faces.component.UISelectMany.INVALID = {0}\: Validierungsfehler\: Wert ist keine g\u00FCltige Auswahl
+javax.faces.component.UISelectOne.INVALID = {0}: Validierungsfehler: Wert ist keine g\u00FCltige Auswahl
+javax.faces.component.UISelectMany.INVALID = {0}: Validierungsfehler: Wert ist keine g\u00FCltige Auswahl
 
 # converters
 javax.faces.converter.BigDecimalConverter.DECIMAL = {2}: ''{0}'' muss eine Dezimalzahl sein.
-javax.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}\: ''{0}'' muss eine Dezimalzahl aus keinem oder mehr Zeichen gefolgt von einem optionalen Punkt und den Nachkommastellen sein. Beispiel\: {1} 
- 
-javax.faces.converter.BigIntegerConverter.BIGINTEGER = {2}\: ''{0}'' muss eine Zahl aus ein oder mehr Ziffern sein. 
+javax.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}: ''{0}'' muss eine Dezimalzahl aus keinem oder mehr Zeichen gefolgt von einem optionalen Punkt und den Nachkommastellen sein. Beispiel: {1}
+
+javax.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: ''{0}'' muss eine Zahl aus ein oder mehr Ziffern sein.
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: ''{0}'' muss eine Zahl aus ein oder mehr Ziffern sein. Beispiel: {1}
- 
-javax.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' muss 'true' oder 'false' sein.
-javax.faces.converter.BooleanConverter.BOOLEAN_detail = {1}\: ''{0}'' muss 'true' oder 'false' sein.  Jeder Wert au\u00DFer 'true' wird als 'false' interpretiert.
+
+javax.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' muss ''true'' oder ''false'' sein.
+javax.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: ''{0}'' muss ''true'' oder ''false'' sein.  Jeder Wert au\u00DFer ''true'' wird als ''false'' interpretiert.
 
 javax.faces.converter.ByteConverter.BYTE = {2}: ''{0}'' muss eine Zahl zwischen 0 und 255 sein.
 javax.faces.converter.ByteConverter.BYTE_detail = {2}: ''{0}'' muss eine Zahl zwischen 0 und 255 sein.  Beispiel: {1}
- 
-javax.faces.converter.CharacterConverter.CHARACTER = {1}\: ''{0}'' muss ein g\u00FCltiges Zeichen sein.
-javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}\: ''{0}'' muss ein g\u00FCltiges ASCII Zeichen sein.
+
+javax.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' muss ein g\u00FCltiges Zeichen sein.
+javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' muss ein g\u00FCltiges ASCII Zeichen sein.
 
 javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' konnte nicht als Datum erkannt werden.
-javax.faces.converter.DateTimeConverter.DATE_detail = {2}\: ''{0}'' konnte nicht als Datum erkannt werden. Beispiel\: {1} 
+javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' konnte nicht als Datum erkannt werden. Beispiel: {1}
 javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' konnte nicht als Zeit erkannt werden.
-javax.faces.converter.DateTimeConverter.TIME_detail = {2}\: ''{0}'' konnte nicht als Zeit erkannt werden. Beispiel\: {1} 
+javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' konnte nicht als Zeit erkannt werden. Beispiel: {1}
 javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' konnte nicht als Datum und Zeit erkannt werden.
-javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}\: ''{0}'' konnte nicht als Datum und Zeit erkannt werden. Beispiel\: {1} 
-javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: Ein 'pattern' oder 'type' Attribut muss angegeben werden um den Wert ''{0}'' zu konvertieren.
+javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' konnte nicht als Datum und Zeit erkannt werden. Beispiel: {1}
+javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: Ein ''pattern'' oder ''type'' Attribut muss angegeben werden um den Wert ''{0}'' zu konvertieren.
 
 javax.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' muss eine Zahl aus ein oder mehr Ziffern sein.
 javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: ''{0}'' muss eine Zahl zwischen 4.9E-324 und 1.7976931348623157E308 sein. Beispiel: {1}
 
 javax.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' muss in einen Enum konvertierbar sein.
-javax.faces.converter.EnumConverter.ENUM_detail = {2}\: ''{0}'' muss in einen Enum konvertierbar sein, der die Konstante ''{1}'' enth\u00E4lt.
+javax.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' muss in einen Enum konvertierbar sein, der die Konstante ''{1}'' enth\u00E4lt.
 javax.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' muss in einen Enum konvertierbar sein, aber es wurde keine Enum Klasse bereitgestellt.
 javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' muss in einen Enum konvertierbar sein, aber es wurde keine Enum Klasse bereitgestellt.
 
@@ -78,53 +78,54 @@
 javax.faces.converter.STRING = {1}: Konnte ''{0}'' nicht in eine Zeichenkette konvertieren.
 
 # validators
-javax.faces.validator.NOT_IN_RANGE = Validierungsfehler\: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}.  
+javax.faces.validator.NOT_IN_RANGE = Validierungsfehler: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}.
 
-javax.faces.validator.DoubleRangeValidator.MAXIMUM = {1}\: Validierungsfehler\: Der Wert ist gr\u00F6\u00DFer als das erlaubte Maximum von ''{0}''
+javax.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: Validierungsfehler: Der Wert ist gr\u00F6\u00DFer als das erlaubte Maximum von ''{0}''
 javax.faces.validator.DoubleRangeValidator.MINIMUM = {1}: Validierungsfehler: Der Wert ist kleiner als das erlaubte Minimum von ''{0}''
-javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Validierungsfehler: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}
+javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Validierungsfehler: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}.
 javax.faces.validator.DoubleRangeValidator.TYPE = {0}: Validierungsfehler: Der Wert ist nicht vom korrekten Typ
 
-javax.faces.validator.LengthValidator.MAXIMUM = {1}\: Validierungsfehler\: Die L\u00E4nge des Werts ist gr\u00F6\u00DFer als das erlaubte Maximum von ''{0}'' Zeichen
+javax.faces.validator.LengthValidator.MAXIMUM = {1}: Validierungsfehler: Die L\u00E4nge des Werts ist gr\u00F6\u00DFer als das erlaubte Maximum von ''{0}'' Zeichen
 javax.faces.validator.LengthValidator.MINIMUM = {1}: Validierungsfehler: Die L\u00E4nge des Werts ist kleiner als das erlaubte Minimum von ''{0}'' Zeichen
 
-javax.faces.validator.LongRangeValidator.MAXIMUM = {1}\: Validierungsfehler\: Der Wert ist gr\u00F6\u00DFer als das erlaubte Maximum von ''{0}''
-javax.faces.validator.LongRangeValidator.MINIMUM = {1}: Validation Error: Der Wert ist kleiner als das erlaubte Minimum von ''{0}''
+javax.faces.validator.LongRangeValidator.MAXIMUM = {1}: Validierungsfehler: Der Wert ist gr\u00F6\u00DFer als das erlaubte Maximum von ''{0}''
+javax.faces.validator.LongRangeValidator.MINIMUM = {1}: Validierungsfehler: Der Wert ist kleiner als das erlaubte Minimum von ''{0}''
 javax.faces.validator.LongRangeValidator.NOT_IN_RANGE = {2}: Validierungsfehler: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}.
 javax.faces.validator.LongRangeValidator.TYPE = {0}: Validierungsfehler: Der Wert ist nicht vom korrekten Typ.
 
-javax.faces.validator.RegexValidator.NOT_MATCHED=Validierungsfehler
-javax.faces.validator.RegexValidator.NOT_MATCHED_detail= {1}: Der eingegebene Wert ({0}) ist nicht korrekt.
+javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Validierungsfehler: Der eingegebene Wert ''{0}'' ist nicht korrekt.
 javax.faces.validator.RegexValidator.PATTERN_NOT_SET = Ein Muster muss f\u00FCr Validierung eingestellt werden.
 javax.faces.validator.RegexValidator.MATCH_EXCEPTION = Das Muster ist kein g\u00FCltiger regul\u00E4rer Ausdruck.
 
+javax.faces.validator.BeanValidator.MESSAGE = {1}: {0}
+
 # myfaces specific messages
-org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \ in {0}
+org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \u0020in {0}
 org.apache.myfaces.Email.INVALID = Validierungsfehler
-org.apache.myfaces.Email.INVALID_detail =Der eingegebene Wert ({0}) ist keine korrekte E-Mail-Adresse.
+org.apache.myfaces.Email.INVALID_detail = Der eingegebene Wert ({0}) ist keine korrekte E-Mail-Adresse.
 
 org.apache.myfaces.Equal.INVALID = Validierungsfehler
-org.apache.myfaces.Equal.INVALID_detail =Der eingegebene Wert ({0}) stimmt nicht mit dem Wert "{1}" überein.
+org.apache.myfaces.Equal.INVALID_detail = Der eingegebene Wert ({0}) stimmt nicht mit dem Wert "{1}" \u00FCberein.
 
 org.apache.myfaces.Creditcard.INVALID = Validierungsfehler
-org.apache.myfaces.Creditcard.INVALID_detail =Der eingegebene Wert ({0}) ist keine korrekte Kreditkarten Nummer.
+org.apache.myfaces.Creditcard.INVALID_detail = Der eingegebene Wert ({0}) ist keine korrekte Kreditkarten Nummer.
 
-org.apache.myfaces.Regexpr.INVALID=Validierungsfehler
-org.apache.myfaces.Regexpr.INVALID_detail=Der eingegebene Wert ({0}) ist nicht korrekt.
+org.apache.myfaces.Regexpr.INVALID = Validierungsfehler
+org.apache.myfaces.Regexpr.INVALID_detail = Der eingegebene Wert ({0}) ist nicht korrekt.
 
 org.apache.myfaces.Date.INVALID = Validierungsfehler
-org.apache.myfaces.Date.INVALID_detail =Der eingegebene Wert ({0}) ist kein korrektes Datum.
+org.apache.myfaces.Date.INVALID_detail = Der eingegebene Wert ({0}) ist kein korrektes Datum.
 
 org.apache.myfaces.ticker.NOCONNECTION = Keine Verbindung:
 org.apache.myfaces.ticker.NOCONNECTION_detail = Sind Sie hinter einer Firewall?
 
 org.apache.myfaces.ISBN.INVALID = Validierungsfehler
-org.apache.myfaces.ISBN.INVALID_detail =Der eingegebene Wert ({0}) ist keine korrekte ISBN  Nummer.
+org.apache.myfaces.ISBN.INVALID_detail = Der eingegebene Wert ({0}) ist keine korrekte ISBN  Nummer.
 
-org.apache.myfaces.tree2.MISSING_NODE        = Fehlender Knoten
+org.apache.myfaces.tree2.MISSING_NODE = Fehlender Knoten
 org.apache.myfaces.tree2.MISSING_NODE_detail = Der Knoten "{0}" existiert nicht.
 
 org.apache.myfaces.calendar.CONVERSION = Konvertierungsfehler
 org.apache.myfaces.calendar.CONVERSION_detail = "{0}": Der eingegebene Wert "{1}" konnte nicht in ein Datum konvertiert werden.
 
-org.apache.myfaces.FileUpload.SIZE_LIMIT ="{0}"\: Die Gr\u00F6\u00DFe der hochgeladenen Datei darf nicht gr\u00F6\u00DFer als {1} Bytes sein.
+org.apache.myfaces.FileUpload.SIZE_LIMIT = "{0}": Die Gr\u00F6\u00DFe der hochgeladenen Datei darf nicht gr\u00F6\u00DFer als {1} Bytes sein.
diff --git a/api/src/main/resources/javax/faces/Messages_en.properties b/api/src/main/resources/javax/faces/Messages_en.properties
index 8e2672a..b2224e9 100755
--- a/api/src/main/resources/javax/faces/Messages_en.properties
+++ b/api/src/main/resources/javax/faces/Messages_en.properties
@@ -17,7 +17,7 @@
 # components
 javax.faces.component.UIInput.CONVERSION = {0}: Conversion error occurred.
 javax.faces.component.UIInput.REQUIRED = {0}: Validation Error: Value is required.
-javax.faces.component.UIInput.UPDATE = {0}: An error occurred when processing your submitted information. 
+javax.faces.component.UIInput.UPDATE = {0}: An error occurred when processing your submitted information.
 
 javax.faces.component.UISelectOne.INVALID = {0}: Validation Error: Value is not valid
 javax.faces.component.UISelectMany.INVALID = {0}: Validation Error: Value is not valid
@@ -39,11 +39,11 @@
 javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' must be a valid ASCII character.
 
 javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' could not be understood as a date.
-javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1} 
+javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1}
 javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' could not be understood as a time.
-javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' could not be understood as a time. Example: {1} 
+javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' could not be understood as a time. Example: {1}
 javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' could not be understood as a date and time.
-javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' could not be understood as a date and time. Example: {1} 
+javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' could not be understood as a date and time. Example: {1}
 javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: A ''pattern'' or ''type'' attribute must be specified to convert the value ''{0}''.
 
 javax.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' must be a number consisting of one or more digits.
@@ -116,13 +116,13 @@
 org.apache.myfaces.Date.INVALID = Validation Error
 org.apache.myfaces.Date.INVALID_detail =The given value ({0}) is not a correct date
 
-org.apache.myfaces.ticker.NOCONNECTION = No Connection: 
+org.apache.myfaces.ticker.NOCONNECTION = No Connection:
 org.apache.myfaces.ticker.NOCONNECTION_detail = Maybe you are behind a firewall?
 
 org.apache.myfaces.ISBN.INVALID = Validation Error
 org.apache.myfaces.ISBN.INVALID_detail =The given value ({0}) is not a correct isbn code.
 
-org.apache.myfaces.tree2.MISSING_NODE        = Missing Node
+org.apache.myfaces.tree2.MISSING_NODE = Missing Node
 org.apache.myfaces.tree2.MISSING_NODE_detail = The requested node "{0}" does not exist.
 
 org.apache.myfaces.calendar.CONVERSION = Conversion Error
diff --git a/api/src/main/resources/javax/faces/Messages_es.properties b/api/src/main/resources/javax/faces/Messages_es.properties
index 648a531..2e653ab 100644
--- a/api/src/main/resources/javax/faces/Messages_es.properties
+++ b/api/src/main/resources/javax/faces/Messages_es.properties
@@ -15,124 +15,117 @@
 # standard messages (Spec. 2.5.2.4)
 
 # components
-javax.faces.component.UIInput.CONVERSION        = {0}: Error de conversión
-javax.faces.component.UIInput.CONVERSION_detail = {0}: Ha ocurrido un error de conversión.
-javax.faces.component.UIInput.REQUIRED        = {0}: Error de validación
-javax.faces.component.UIInput.REQUIRED_detail = {0}: Error de validación: Valor requerido.
-javax.faces.component.UIInput.UPDATE = {0}: Un error occurrió cuando se estaba procesando la información enviada.
+javax.faces.component.UIInput.CONVERSION = {0}: Error de conversi\u00F3n
+javax.faces.component.UIInput.REQUIRED = {0}: Error de validaci\u00F3n: Valor requerido.
+javax.faces.component.UIInput.UPDATE = {0}: Un error occurri\u00F3 cuando se estaba procesando la informaci\u00F3n enviada.
 
-javax.faces.component.UISelectOne.INVALID        = {0}: Error de validación: Valor no válido.
-javax.faces.component.UISelectOne.INVALID_detail = {0}: Error de validación: El valor no es una opción válida.
-
-javax.faces.component.UISelectMany.INVALID        = {0}: Error de validación
-javax.faces.component.UISelectMany.INVALID_detail = {0}: Error de validación: El valor no es una opción válida.
+javax.faces.component.UISelectOne.INVALID = {0}: Error de validaci\u00F3n: El valor no es una opci\u00F3n v\u00E1lida.
+javax.faces.component.UISelectMany.INVALID = {0}: Error de validaci\u00F3n: El valor no es una opci\u00F3n v\u00E1lida.
 
 # converters
-javax.faces.converter.BigDecimalConverter.DECIMAL = {2}: ''{0}'' debe ser un número decimal con signo.
-javax.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}: ''{0}'' debe ser un número decimal con signo consistente en cero o más dígitos, que pueden ser seguidos por un punto decimal y fracción.  Ejemplo: {1}
+javax.faces.converter.BigDecimalConverter.DECIMAL = {2}: ''{0}'' debe ser un n\u00FAmero decimal con signo.
+javax.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}: ''{0}'' debe ser un n\u00FAmero decimal con signo consistente en cero o m\u00E1s d\u00EDgitos, que pueden ser seguidos por un punto decimal y fracci\u00F3n.  Ejemplo: {1}
  
-javax.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: ''{0}'' debe ser un número consistente de uno o más dígitos.
-javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: ''{0}'' debe ser un número consistente de uno o más dígitos. Ejemplo: {1}
+javax.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos. Ejemplo: {1}
  
-javax.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' debe ser 'true' o 'false'.
-javax.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: ''{0}'' debe ser 'true' o 'false'.  Cualquier otro valor diferente a 'true' se evaluará como 'false'.
+javax.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' debe ser ''true'' o ''false''.
+javax.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: ''{0}'' debe ser ''true'' o ''false''.  Cualquier otro valor diferente a ''true'' se evaluar\u00E1 como ''false''.
 
-javax.faces.converter.ByteConverter.BYTE = {2}: ''{0}'' debe ser un número entre 0 y 255.
-javax.faces.converter.ByteConverter.BYTE_detail = {2}: ''{0}'' debe ser un número entre 0 y 255. Ejemplo: {1}
+javax.faces.converter.ByteConverter.BYTE = {2}: ''{0}'' debe ser un n\u00FAmero entre 0 y 255.
+javax.faces.converter.ByteConverter.BYTE_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre 0 y 255. Ejemplo: {1}
  
-javax.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' debe ser un carácter válido.
-javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' debe ser un caracter ASCII válido.
+javax.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' debe ser un car\u00E1cter v\u00E1lido.
+javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' debe ser un caracter ASCII v\u00E1lido.
 
-javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' no puede ser entendido como una fecha válida.
-javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' no puede ser entendido como una fecha v\u00E1lida. Ejemplo\: {1} 
-javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' no puede ser entendido como una hora válida.
-javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' no puede ser entendido como una hora v\u00E1lida. Ejemplo\: {1} 
-javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' no puede ser entendido como una fecha y hora válida.
-javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' no puede ser entendido como una fecha y hora v\u00E1lida. Ejemplo\: {1} 
-javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: El attributo 'pattern' o 'type' debe ser especificado para convertir el valor ''{0}''.
+javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' no puede ser entendido como una fecha v\u00E1lida.
+javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' no puede ser entendido como una fecha v\u00E1lida. Ejemplo: {1}
+javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' no puede ser entendido como una hora v\u00E1lida.
+javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' no puede ser entendido como una hora v\u00E1lida. Ejemplo: {1}
+javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' no puede ser entendido como una fecha y hora v\u00E1lida.
+javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' no puede ser entendido como una fecha y hora v\u00E1lida. Ejemplo: {1}
+javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: El attributo ''pattern'' o ''type'' debe ser especificado para convertir el valor ''{0}''.
 
-javax.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' debe ser un número consistente de uno o más dígitos.
-javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: ''{0}'' debe ser un número entre 4.9E-324 y 1.7976931348623157E308  Ejemplo: {1}
+javax.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre 4.9E-324 y 1.7976931348623157E308  Ejemplo: {1}
 
-javax.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' debe ser convertible a una enumeración.
-javax.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' debe ser convertible a una enumeración de la enumeración que contiene la constante ''{1}''.
+javax.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' debe ser convertible a una enumeraci\u00F3n.
+javax.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' debe ser convertible a una enumeraci\u00F3n de la enumeraci\u00F3n que contiene la constante ''{1}''.
 javax.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' must be convertible to an enum from the enum, but no enum class provided.
 javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' must be convertible to an enum from the enum, but no enum class provided.
 
-javax.faces.converter.FloatConverter.FLOAT = {2}: ''{0}'' debe ser un número consistente de uno o más dígitos.
-javax.faces.converter.FloatConverter.FLOAT_detail = {2}: ''{0}'' debe ser un número entre 1.4E-45 y 3.4028235E38 Ejemplo: {1}
+javax.faces.converter.FloatConverter.FLOAT = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+javax.faces.converter.FloatConverter.FLOAT_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre 1.4E-45 y 3.4028235E38 Ejemplo: {1}
 
-javax.faces.converter.IntegerConverter.INTEGER = {2}: ''{0}'' debe ser un número consistente de uno o más dígitos.
-javax.faces.converter.IntegerConverter.INTEGER_detail = {2}: ''{0}'' debe ser un número entre -2147483648 y 2147483647 Ejemplo: {1}
+javax.faces.converter.IntegerConverter.INTEGER = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+javax.faces.converter.IntegerConverter.INTEGER_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre -2147483648 y 2147483647 Ejemplo: {1}
 
-javax.faces.converter.LongConverter.LONG = {2}: ''{0}'' debe ser un número consistente de uno o más dígitos.
-javax.faces.converter.LongConverter.LONG_detail = {2}: ''{0}'' debe ser un número entre -9223372036854775808 a 9223372036854775807 Ejemplo: {1}
+javax.faces.converter.LongConverter.LONG = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+javax.faces.converter.LongConverter.LONG_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre -9223372036854775808 a 9223372036854775807 Ejemplo: {1}
 
 javax.faces.converter.NumberConverter.CURRENCY = {2}: ''{0}'' no puede ser entendida como un valor de moneda.
 javax.faces.converter.NumberConverter.CURRENCY_detail = {2}: ''{0}'' no puede ser entendida como un valor de moneda. Ejemplo: {1}
 javax.faces.converter.NumberConverter.PERCENT = {2}: ''{0}'' no puede ser entendida como un porcentaje.
 javax.faces.converter.NumberConverter.PERCENT_detail = {2}: ''{0}'' no puede ser entendida como un porcentaje. Ejemplo: {1}
-javax.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' no es un número.
-javax.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' no es un número. Ejemplo: {1}
-javax.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' no es un patrón de números.
-javax.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' no es un patrón de números. Ejemplo: {1}
+javax.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' no es un n\u00FAmero.
+javax.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' no es un n\u00FAmero. Ejemplo: {1}
+javax.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' no es un patr\u00F3n de n\u00FAmeros.
+javax.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' no es un patr\u00F3n de n\u00FAmeros. Ejemplo: {1}
 
-javax.faces.converter.ShortConverter.SHORT = {2}: ''{0}'' debe ser un número consistente de uno o más dígitos.
-javax.faces.converter.ShortConverter.SHORT_detail = {2}: ''{0}'' debe ser un número entre -32768 y 32767 Ejemplo: {1}
+javax.faces.converter.ShortConverter.SHORT = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+javax.faces.converter.ShortConverter.SHORT_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre -32768 y 32767 Ejemplo: {1}
 
 javax.faces.converter.STRING = {1}: No se pudo convertir ''{0}'' en una cadena.
 
 # validators
-javax.faces.validator.NOT_IN_RANGE        = Error de validación: El atributo especificado no se encuentra entre los valores esperados de {0} y {1}.
-javax.faces.validator.NOT_IN_RANGE_detail = "{2}": El atributo especificado no se encuentra entre los valores esperados {0} y {1}.
+javax.faces.validator.NOT_IN_RANGE = Error de validaci\u00F3n: El atributo especificado no se encuentra entre los valores esperados {0} y {1}.
 
-javax.faces.validator.DoubleRangeValidator.MAXIMUM        = {1}: Error de validación: El valor es mayor que el máximo permitido de "{0}"
-javax.faces.validator.DoubleRangeValidator.MAXIMUM_detail = {1}: Valor superior al máximo permitido de ''{0}''.
-javax.faces.validator.DoubleRangeValidator.MINIMUM        = {1}: Error de validación: El valor es inferior al mínimo permitido de ''{0}''
-javax.faces.validator.DoubleRangeValidator.MINIMUM_detail = {1}: Valor inferior al mínimo permitido de ''{0}''.
-javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Error de validación: El valor especificado no se encuentra entre los valores esperados de {0} y {1}.
-javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE_detail = El atributo especificado no se puede convertir al tipo adecuado.
-javax.faces.validator.DoubleRangeValidator.TYPE        = {0}:  Error de validación
-javax.faces.validator.DoubleRangeValidator.TYPE_detail = {0}: El valor no es del tipo correcto.
+javax.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: Error de validaci\u00F3n: El valor es mayor que el m\u00E1ximo permitido de "{0}"
+javax.faces.validator.DoubleRangeValidator.MINIMUM = {1}: Error de validaci\u00F3n: El valor es inferior al m\u00EDnimo permitido de ''{0}''
+javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Error de validaci\u00F3n: El valor especificado no se encuentra entre los valores esperados de {0} y {1}.
+javax.faces.validator.DoubleRangeValidator.TYPE = {0}: Error de validaci\u00F3n: El valor no es del tipo correcto.
 
-javax.faces.validator.LengthValidator.MAXIMUM        = {1}: Error de validación: Longitud es mayor al máximo permitido de ''{0}''
-javax.faces.validator.LengthValidator.MAXIMUM_detail = {1}: La longitud del valor es mayor al máximo permitido de ''{0}'' caracteres.
-javax.faces.validator.LengthValidator.MINIMUM        = {1}: Error de validación Longitud es menor al mínimo permitido de ''{0}''
-javax.faces.validator.LengthValidator.MINIMUM_detail = {1}: La longitud del valor es inferior al mínimo permitido de ''{0}'' caracteres.
+javax.faces.validator.LengthValidator.MAXIMUM = {1}: Error de validaci\u00F3n: Longitud es mayor al m\u00E1ximo permitido de ''{0}''
+javax.faces.validator.LengthValidator.MINIMUM = {1}: Error de validaci\u00F3n: Longitud es menor al m\u00EDnimo permitido de ''{0}''
 
-javax.faces.validator.LongRangeValidator.MAXIMUM        = {1}: Error de validación: Longitud es mayor al máximo permitido de ''{0}''
-javax.faces.validator.LongRangeValidator.MAXIMUM_detail = {1}:  Valor superior al máximo permitido de ''{0}''.
-javax.faces.validator.LongRangeValidator.MINIMUM        = {1}: Error de validación Longitud es menor al mínimo permitido de ''{0}''
-javax.faces.validator.LongRangeValidator.MINIMUM_detail = {1}: Valor inferior al mínimo permitido de ''{0}''.
-javax.faces.validator.LongRangeValidator.NOT_IN_RANGE        = {2}: Error de validación: Valor especificado no esta entre los valores esperados de {0} y {1}.
-javax.faces.validator.LongRangeValidator.NOT_IN_RANGE_detail = Error de validación: Valor especificado no esta entre los valores esperados de {0} y {1}.
-javax.faces.validator.LongRangeValidator.TYPE        = {0}: Error de validación: El valor no es del tipo correcto.
-javax.faces.validator.LongRangeValidator.TYPE_detail = {0}: El valor no es del tipo correcto.
+javax.faces.validator.LongRangeValidator.MAXIMUM = {1}: Error de validaci\u00F3n: Longitud es mayor al m\u00E1ximo permitido de ''{0}''
+javax.faces.validator.LongRangeValidator.MINIMUM = {1}: Error de validaci\u00F3n: Longitud es menor al m\u00EDnimo permitido de ''{0}''
+javax.faces.validator.LongRangeValidator.NOT_IN_RANGE = {2}: Error de validaci\u00F3n: Valor especificado no esta entre los valores esperados de {0} y {1}.
+javax.faces.validator.LongRangeValidator.TYPE = {0}: Error de validaci\u00F3n: El valor no es del tipo correcto.
 
-javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Error de validación: El valor no está de acuerdo con el patrón ''{0}''
-javax.faces.validator.RegexValidator.PATTERN_NOT_SET = Un patrón debe ser establecido para validar.
-javax.faces.validator.RegexValidator.MATCH_EXCEPTION = El patrón no es una expresión regular válida.
+javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Error de validaci\u00F3n: El valor no est\u00E1 de acuerdo con el patr\u00F3n ''{0}''
+javax.faces.validator.RegexValidator.PATTERN_NOT_SET = Un patr\u00F3n debe ser establecido para validar.
+javax.faces.validator.RegexValidator.MATCH_EXCEPTION = El patr\u00F3n no es una expresi\u00F3n regular v\u00E1lida.
 
+javax.faces.validator.BeanValidator.MESSAGE = {1}: {0}
 
 # myfaces specific messages
-org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \ in {0}
-org.apache.myfaces.Email.INVALID = Error de validación
-org.apache.myfaces.Email.INVALID_detail =El valor ({0}) no es una dirección de correo válida.
+org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \u0020in {0}
+org.apache.myfaces.Email.INVALID = Error de validaci\u00F3n
+org.apache.myfaces.Email.INVALID_detail = El valor ({0}) no es una direcci\u00F3n de correo v\u00E1lida.
 
-org.apache.myfaces.Equal.INVALID = Error de validación
-org.apache.myfaces.Equal.INVALID_detail =El valor ({0}) no es equivalente y tiene valor "{1}".
+org.apache.myfaces.Equal.INVALID = Error de validaci\u00F3n
+org.apache.myfaces.Equal.INVALID_detail = El valor ({0}) no es equivalente y tiene valor "{1}".
 
-org.apache.myfaces.Creditcard.INVALID = Error de validación
-org.apache.myfaces.Creditcard.INVALID_detail =El valor ({0}) no es una tarjeta de crédito correcta.
+org.apache.myfaces.Creditcard.INVALID = Error de validaci\u00F3n
+org.apache.myfaces.Creditcard.INVALID_detail = El valor ({0}) no es una tarjeta de cr\u00E9dito correcta.
 
-org.apache.myfaces.Regexpr.INVALID=Error de validación
-org.apache.myfaces.Regexpr.INVALID_detail=El valor ({0}) no es válido.
+org.apache.myfaces.Regexpr.INVALID = Error de validaci\u00F3n
+org.apache.myfaces.Regexpr.INVALID_detail = El valor ({0}) no es v\u00E1lido.
 
-org.apache.myfaces.Date.INVALID = Error de validación
-org.apache.myfaces.Date.INVALID_detail =El valor ({0}) no es una fecha correcta.
+org.apache.myfaces.Date.INVALID = Error de validaci\u00F3n
+org.apache.myfaces.Date.INVALID_detail = El valor ({0}) no es una fecha correcta.
 
-org.apache.myfaces.ticker.NOCONNECTION = No hay conexi\u00F3n\: 
-org.apache.myfaces.ticker.NOCONNECTION_detail = ¿Quizà esté detrás de un cortafuegos?
+org.apache.myfaces.ticker.NOCONNECTION = No hay conexi\u00F3n:
+org.apache.myfaces.ticker.NOCONNECTION_detail = \u00BFQuiz\u00E0 est\u00E9 detr\u00E1s de un cortafuegos?
 
-org.apache.myfaces.ISBN.INVALID = Error de validación
-org.apache.myfaces.ISBN.INVALID_detail =El valor ({0}) no es un código ISBN correcto.
+org.apache.myfaces.ISBN.INVALID = Error de validaci\u00F3n
+org.apache.myfaces.ISBN.INVALID_detail = El valor ({0}) no es un c\u00F3digo ISBN correcto.
+
+org.apache.myfaces.tree2.MISSING_NODE = Nodo faltante
+org.apache.myfaces.tree2.MISSING_NODE_detail = El nodo solicitado "{0}" no existe.
+
+org.apache.myfaces.calendar.CONVERSION = Error de conversi\u00F3n
+org.apache.myfaces.calendar.CONVERSION_detail = "{0}": El valor dado "{1}" no se pudo convertir a una fecha.
+
+org.apache.myfaces.FileUpload.SIZE_LIMIT = "{0}": El archivo cargado excedi\u00F3 el tama\u00F1o m\u00E1ximo de {1} bytes.
diff --git a/api/src/main/resources/javax/faces/Messages_it.properties b/api/src/main/resources/javax/faces/Messages_it.properties
index db05285..4b43ab2 100644
--- a/api/src/main/resources/javax/faces/Messages_it.properties
+++ b/api/src/main/resources/javax/faces/Messages_it.properties
@@ -13,34 +13,29 @@
 # limitations under the License.
 
 # standard messages (Spec. 2.5.2.4)
-# last edit 24-nov-2010
 
 # components
-javax.faces.component.UIInput.CONVERSION        = Errore di conversione
-javax.faces.component.UIInput.CONVERSION_detail = {0}: Errore durante l'' aggiornamento del data model
-javax.faces.component.UIInput.REQUIRED        = Errore di convalida
-javax.faces.component.UIInput.REQUIRED_detail = {0}: Il valore è obbligatorio
-javax.faces.component.UIInput.UPDATE = {0}: è verificato un errore durante l'elaborazione delle informazioni presentate.
+javax.faces.component.UIInput.CONVERSION = Errore di conversione
+javax.faces.component.UIInput.REQUIRED = {0}: Errore di convalida: Il valore \u00E8 obbligatorio
+javax.faces.component.UIInput.UPDATE = {0}: \u00E8 verificato un errore durante l'elaborazione delle informazioni presentate.
 
-javax.faces.component.UISelectOne.INVALID        = Errore di convalida
-javax.faces.component.UISelectOne.INVALID_detail = {0}: Opzione non valida
-javax.faces.component.UISelectMany.INVALID        = Errore di convalida
-javax.faces.component.UISelectMany.INVALID_detail = {0}: Opzione non valida
+javax.faces.component.UISelectOne.INVALID = {0}: Errore di convalida: Opzione non valida
+javax.faces.component.UISelectMany.INVALID = {0}: Errore di convalida: Opzione non valida
 
 # converters
-javax.faces.converter.BigDecimalConverter.DECIMAL        = Errore di conversione
-javax.faces.converter.BigDecimalConverter.DECIMAL_detail = Il valore specificato non è un numero valido.
+javax.faces.converter.BigDecimalConverter.DECIMAL = Errore di conversione
+javax.faces.converter.BigDecimalConverter.DECIMAL_detail = Il valore specificato non \u00E8 un numero valido.
 
-javax.faces.converter.BigIntegerConverter.BIGINTEGER        = Errore di conversione
-javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = Il valore specificato non è un numero valido.
+javax.faces.converter.BigIntegerConverter.BIGINTEGER = Errore di conversione
+javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = Il valore specificato non \u00E8 un numero valido.
 
-javax.faces.converter.BooleanConverter.BOOLEAN        = Errore di conversione
+javax.faces.converter.BooleanConverter.BOOLEAN = Errore di conversione
 javax.faces.converter.BooleanConverter.BOOLEAN_detail = Impossibile convertire '{0}' in booleano.
 
-javax.faces.converter.ByteConverter.BYTE        = Errore di conversione
+javax.faces.converter.ByteConverter.BYTE = Errore di conversione
 javax.faces.converter.ByteConverter.BYTE_detail = Impossibile convertire '{0}' in Byte.
 
-javax.faces.converter.CharacterConverter.CHARACTER        = Errore di conversione
+javax.faces.converter.CharacterConverter.CHARACTER = Errore di conversione
 javax.faces.converter.CharacterConverter.CHARACTER_detail = Impossibile convertire '{0}' in carattere.
 
 javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' non potrebbe essere inteso come una data.
@@ -49,89 +44,88 @@
 javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' non potrebbe essere inteso come un tempo. Esempio: {1}
 javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' non potrebbe essere inteso come una data e ora.
 javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' non potrebbe essere inteso come una data e ora. Esempio: {1}
-javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: Un attributo 'pattern' o 'type' deve essere specificato per convertire il valore ''{0}''.
+javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: Un attributo ''pattern'' o ''type'' deve essere specificato per convertire il valore ''{0}''.
 
-javax.faces.converter.DoubleConverter.DOUBLE        = Errore di conversione
-javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: Il valore specificato non è un numero (double) valido.
+javax.faces.converter.DoubleConverter.DOUBLE = Errore di conversione
+javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: Il valore specificato non \u00E8 un numero (double) valido.
 
 javax.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' deve essere convertibile in un enum.
 javax.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' deve essere convertibile in un enum dal enum che contiene la costante''{1}''.
 javax.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' deve essere convertibile in un enum dal enum, ma nessuna classe enum fornito.
 javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' deve essere convertibile in un enum dal enum, ma nessuna classe enum fornito.
 
-javax.faces.converter.FloatConverter.FLOAT        = Errore di conversione
-javax.faces.converter.FloatConverter.FLOAT_detail = {2}: Il valore specificato non è un numero (float) valido.
+javax.faces.converter.FloatConverter.FLOAT = Errore di conversione
+javax.faces.converter.FloatConverter.FLOAT_detail = {2}: Il valore specificato non \u00E8 un numero (float) valido.
 
-javax.faces.converter.IntegerConverter.INTEGER        = Errore di conversione
-javax.faces.converter.IntegerConverter.INTEGER_detail = {2}: Il valore specificato non è un numero intero valido.
+javax.faces.converter.IntegerConverter.INTEGER = Errore di conversione
+javax.faces.converter.IntegerConverter.INTEGER_detail = {2}: Il valore specificato non \u00E8 un numero intero valido.
 
-javax.faces.converter.LongConverter.LONG        = Errore di conversione
-javax.faces.converter.LongConverter.LONG_detail = {2}: Il valore specificato non è un numero (long) valido.
+javax.faces.converter.LongConverter.LONG = Errore di conversione
+javax.faces.converter.LongConverter.LONG_detail = {2}: Il valore specificato non \u00E8 un numero (long) valido.
 
 javax.faces.converter.NumberConverter.CURRENCY = {2}:''{0}''non potrebbe essere inteso come valore di valuta.
 javax.faces.converter.NumberConverter.CURRENCY_detail = {2}:''{0}''non potrebbe essere inteso come valore di valuta. Esempio: {1}
 javax.faces.converter.NumberConverter.PERCENT = {2}:''{0}''non potrebbe essere inteso come percentuale.
 javax.faces.converter.NumberConverter.PERCENT_detail = {2}:''{0}''non potrebbe essere inteso come percentuale. Esempio: {1}
-javax.faces.converter.NumberConverter.NUMBER = {2}:''{0}''non è un numero.
-javax.faces.converter.NumberConverter.NUMBER_detail = {2}:''{0}''non è un numero. Esempio: {1}
-javax.faces.converter.NumberConverter.PATTERN = {2}:''{0}''non è un modello di serie.
-javax.faces.converter.NumberConverter.PATTERN_detail = {2}:''{0}''non è un modello di serie. Esempio: {1}
+javax.faces.converter.NumberConverter.NUMBER = {2}:''{0}''non \u00E8 un numero.
+javax.faces.converter.NumberConverter.NUMBER_detail = {2}:''{0}''non \u00E8 un numero. Esempio: {1}
+javax.faces.converter.NumberConverter.PATTERN = {2}:''{0}''non \u00E8 un modello di serie.
+javax.faces.converter.NumberConverter.PATTERN_detail = {2}:''{0}''non \u00E8 un modello di serie. Esempio: {1}
 
-javax.faces.converter.ShortConverter.SHORT        = Errore di conversione
-javax.faces.converter.ShortConverter.SHORT_detail = {2}: Il valore specificato non è un numero (short) valido.
+javax.faces.converter.ShortConverter.SHORT = Errore di conversione
+javax.faces.converter.ShortConverter.SHORT_detail = {2}: Il valore specificato non \u00E8 un numero (short) valido.
 
 javax.faces.converter.STRING = {1}: Impossibile convertire ''{0}'' in una stringa.
 
 # validators
-javax.faces.validator.NOT_IN_RANGE        = Errore di convalida
-javax.faces.validator.NOT_IN_RANGE_detail = {2}: il valore specificato non è compreso tra {0} e {1}.
+javax.faces.validator.NOT_IN_RANGE = {2}: Errore di convalida: Il valore specificato non \u00E8 compreso tra {0} e {1}.
 
-javax.faces.validator.DoubleRangeValidator.MAXIMUM        = Errore di convalida
-javax.faces.validator.DoubleRangeValidator.MAXIMUM_detail = {1}: Il valore è superiore al massimo ammesso di ''{0}''.
-javax.faces.validator.DoubleRangeValidator.MINIMUM        = Errore di convalida
-javax.faces.validator.DoubleRangeValidator.MINIMUM_detail = {1}: Il valore è inferiore al minimo ammesso di ''{0}''.
-javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE        = Errore di convalida
-javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE_detail = Il valore specificato non è convertibile in un tipo appropriato.
-javax.faces.validator.DoubleRangeValidator.TYPE        = Errore di convalida
-javax.faces.validator.DoubleRangeValidator.TYPE_detail = {0}: Il valore non è di tipo corretto.
+javax.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: Errore di convalida: Il valore \u00E8 superiore al massimo ammesso di ''{0}''.
+javax.faces.validator.DoubleRangeValidator.MINIMUM = {1}: Errore di convalida: Il valore \u00E8 inferiore al minimo ammesso di ''{0}''.
+javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Errore di convalida: Il valore specificato non \u00E8 convertibile in un tipo appropriato.
+javax.faces.validator.DoubleRangeValidator.TYPE = {0}: Errore di convalida: Il valore non \u00E8 di tipo corretto.
 
-javax.faces.validator.LengthValidator.MAXIMUM        = Errore di convalida
-javax.faces.validator.LengthValidator.MAXIMUM_detail = {1}: Il valore è più lungo del massimo ammesso di {0} caratteri.
-javax.faces.validator.LengthValidator.MINIMUM        = Errore di convalida
-javax.faces.validator.LengthValidator.MINIMUM_detail = {1}: Il valore è più corto del minimo ammessi di {0} caratteri.
+javax.faces.validator.LengthValidator.MAXIMUM = {1}: Errore di convalida: Il valore \u00E8 pi\u00F9 lungo del massimo ammesso di {0} caratteri.
+javax.faces.validator.LengthValidator.MINIMUM = {1}: Errore di convalida: Il valore \u00E8 pi\u00F9 corto del minimo ammessi di {0} caratteri.
 
-javax.faces.validator.LongRangeValidator.MAXIMUM        = Errore di convalida
-javax.faces.validator.LongRangeValidator.MAXIMUM_detail = {1}: Il valore è superiore al massimo ammesso di ''{0}''.
-javax.faces.validator.LongRangeValidator.MINIMUM        = Errore di convalida
-javax.faces.validator.LongRangeValidator.MINIMUM_detail = {1}: Il valore è inferiore al minimo ammesso di ''{0}''.
-javax.faces.validator.LongRangeValidator.NOT_IN_RANGE        = Errore di convalida
-javax.faces.validator.LongRangeValidator.NOT_IN_RANGE_detail = Il valore specificato non è convertibile in un tipo appropriato.
-javax.faces.validator.LongRangeValidator.TYPE        = Errore di convalida
-javax.faces.validator.LongRangeValidator.TYPE_detail = {0}: Il valore non è di tipo corretto.
+javax.faces.validator.LongRangeValidator.MAXIMUM = {1}: Errore di convalida: Il valore \u00E8 superiore al massimo ammesso di ''{0}''.
+javax.faces.validator.LongRangeValidator.MINIMUM = {1}: Errore di convalida: Il valore \u00E8 inferiore al minimo ammesso di ''{0}''.
+javax.faces.validator.LongRangeValidator.NOT_IN_RANGE = {2}: Errore di convalida: Il valore specificato non \u00E8 convertibile in un tipo appropriato.
+javax.faces.validator.LongRangeValidator.TYPE = {0}: Errore di convalida: Il valore non \u00E8 di tipo corretto.
 
-javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Errore di convalida: Rapporto non secondo modello ''{0}''
+javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Rapporto non secondo modello ''{0}''
+javax.faces.validator.RegexValidator.PATTERN_NOT_SET = Un modello deve essere impostato per convalidare.
+javax.faces.validator.RegexValidator.MATCH_EXCEPTION = Il modello non \u00E8 un'espressione regolare valida.
 
+javax.faces.validator.BeanValidator.MESSAGE = {1}: {0}
 
 # myfaces specific messages
-
 org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \u0020in {0}
 org.apache.myfaces.Email.INVALID = Errore di convalida
-org.apache.myfaces.Email.INVALID_detail =Il valore ({0}) non è un indirizzo e-mail corretto.
+org.apache.myfaces.Email.INVALID_detail = Il valore ({0}) non \u00E8 un indirizzo e-mail corretto.
 
 org.apache.myfaces.Equal.INVALID = Errore di convalida
-org.apache.myfaces.Equal.INVALID_detail =Il valore ({0}) non è uguale al valore di "{1}".
+org.apache.myfaces.Equal.INVALID_detail = Il valore ({0}) non \u00E8 uguale al valore di "{1}".
 
 org.apache.myfaces.Creditcard.INVALID = Errore di convalida
-org.apache.myfaces.Creditcard.INVALID_detail =Il valore ({0}) non è un codice di carta di credito valido.
+org.apache.myfaces.Creditcard.INVALID_detail = Il valore ({0}) non \u00E8 un codice di carta di credito valido.
 
-org.apache.myfaces.Regexpr.INVALID=Errore di convalida
-org.apache.myfaces.Regexpr.INVALID_detail=Il valore ({0}) non è valido.
+org.apache.myfaces.Regexpr.INVALID = Errore di convalida
+org.apache.myfaces.Regexpr.INVALID_detail = Il valore ({0}) non \u00E8 valido.
 
 org.apache.myfaces.Date.INVALID = Errore di convalida
-org.apache.myfaces.Date.INVALID_detail =Il valore ({0}) non è una data corretta.
+org.apache.myfaces.Date.INVALID_detail = Il valore ({0}) non \u00E8 una data corretta.
 
-org.apache.myfaces.ticker.NOCONNECTION = Nessuna connessione: 
-org.apache.myfaces.ticker.NOCONNECTION_detail = Forse si è dietro ad un firewall ?
+org.apache.myfaces.ticker.NOCONNECTION = Nessuna connessione:
+org.apache.myfaces.ticker.NOCONNECTION_detail = Forse si \u00E8 dietro ad un firewall?
 
-org.apache.myfaces.ISBN.INVALID =Errore di convalida
-org.apache.myfaces.ISBN.INVALID_detail =Il valore ({0}) non è un codice ISBN corretto.
+org.apache.myfaces.ISBN.INVALID = Errore di convalida
+org.apache.myfaces.ISBN.INVALID_detail = Il valore ({0}) non \u00E8 un codice ISBN corretto.
+
+org.apache.myfaces.tree2.MISSING_NODE = Nodo mancante
+org.apache.myfaces.tree2.MISSING_NODE_detail = Il nodo richiesto "{0}" non esiste.
+
+org.apache.myfaces.calendar.CONVERSION = Errore di conversione
+org.apache.myfaces.calendar.CONVERSION_detail = "{0}": Il valore dato "{1}" non pu\u00F2 essere convertito in una data.
+
+org.apache.myfaces.FileUpload.SIZE_LIMIT = "{0}": Il file caricato ha superato la dimensione massima di {1} byte.
diff --git a/api/src/main/resources/javax/faces/Messages_pt.properties b/api/src/main/resources/javax/faces/Messages_pt.properties
new file mode 100644
index 0000000..515ce49
--- /dev/null
+++ b/api/src/main/resources/javax/faces/Messages_pt.properties
@@ -0,0 +1,131 @@
+# 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 = {0}: Erro de convers\u00E3o
+javax.faces.component.UIInput.REQUIRED = {0}: Erro de valida\u00E7\u00E3o: Um valor \u00E9 requerido.
+javax.faces.component.UIInput.UPDATE = {0}: Erro ao processar a informa\u00E7\u00E3o apresentada.
+
+javax.faces.component.UISelectOne.INVALID = {0}: Erro de valida\u00E7\u00E3o: O valor n\u00E3o \u00E9 uma op\u00E7\u00E3o v\u00E1lida.
+javax.faces.component.UISelectMany.INVALID = {0}: Erro de valida\u00E7\u00E3o: O valor n\u00E3o \u00E9 uma op\u00E7\u00E3o v\u00E1lida.
+
+# converters
+javax.faces.converter.BigDecimalConverter.DECIMAL = {2}: Erro de convers\u00E3o
+javax.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+javax.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: Erro de convers\u00E3o
+javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+javax.faces.converter.BooleanConverter.BOOLEAN = {1}: Erro de convers\u00E3o
+javax.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: Imposs\u00EDvel converter ''{0}'' para Boolean.
+
+javax.faces.converter.ByteConverter.BYTE = {2}: Erro de convers\u00E3o
+javax.faces.converter.ByteConverter.BYTE_detail = {2}: Imposs\u00EDvel converter ''{0}'' para Byte.
+
+javax.faces.converter.CharacterConverter.CHARACTER = {1}: Erro de convers\u00E3o
+javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: N\u00E3o foi poss\u00EDvel converter ''{0}'' para caracter.
+
+javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' n\u00E3o pode ser entendida como uma data.
+javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como uma data. Exemplo: {1}
+javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' n\u00E3o pode ser entendida como um tempo.
+javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como um tempo. Exemplo: {1}
+javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' n\u00E3o pode ser entendida como uma data e hora.
+javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como uma data e hora. Exemplo: {1}
+javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: ''pattern'' ou ''type'' atributo deve ser especificado para converter o valor ''{0}''.
+
+javax.faces.converter.DoubleConverter.DOUBLE = {2}: Erro de convers\u00E3o
+javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+javax.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' deve ser convertida para um enum.
+javax.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' deve ser convers\u00EDvel para um enum do enum que cont\u00E9m a constante ''{1}''.
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' deve ser convers\u00EDvel para um enum do enum, mas nenhuma classe enum prestados.
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' deve ser convers\u00EDvel para um enum do enum, mas nenhuma classe enum prestados.
+
+javax.faces.converter.FloatConverter.FLOAT = {2}: Erro de convers\u00E3o
+javax.faces.converter.FloatConverter.FLOAT_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+javax.faces.converter.IntegerConverter.INTEGER = {2}: Erro de convers\u00E3o
+javax.faces.converter.IntegerConverter.INTEGER_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+javax.faces.converter.LongConverter.LONG = {2}: Erro de convers\u00E3o
+javax.faces.converter.LongConverter.LONG_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+javax.faces.converter.NumberConverter.CURRENCY = {2}: ''{0}'' n\u00E3o pode ser entendida como um valor monet\u00E1rio.
+javax.faces.converter.NumberConverter.CURRENCY_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como um valor monet\u00E1rio. Exemplo: {1}
+javax.faces.converter.NumberConverter.PERCENT = {2}: ''{0}'' n\u00E3o pode ser entendida como uma porcentagem.
+javax.faces.converter.NumberConverter.PERCENT_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como uma porcentagem. Exemplo: {1}
+javax.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' n\u00E3o \u00E9 um n\u00FAmero.
+javax.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' n\u00E3o \u00E9 um n\u00FAmero. Exemplo: {1}
+javax.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' n\u00E3o \u00E9 um padr\u00E3o de n\u00FAmero.
+javax.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' n\u00E3o \u00E9 um padr\u00E3o de n\u00FAmero. Exemplo: {1}
+
+javax.faces.converter.ShortConverter.SHORT = {2}: Erro de convers\u00E3o
+javax.faces.converter.ShortConverter.SHORT_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+javax.faces.converter.STRING = {1}: N\u00E3o foi poss\u00EDvel converter ''{0}'' em uma sequ\u00EAncia.
+
+# validators
+javax.faces.validator.NOT_IN_RANGE = Erro de valida\u00E7\u00E3o: O atributo especificador n\u00E3o est\u00E1 entre os valores esperados {0} e {1}.
+
+javax.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 maior que o m\u00E1ximo permitido de ''{0}''.
+javax.faces.validator.DoubleRangeValidator.MINIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 menor que o m\u00EDnimo permitido de ''{0}''.
+javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Erro de valida\u00E7\u00E3o: O atributo especificado n\u00E3o pode ser convertido para o tipo apropriado.
+javax.faces.validator.DoubleRangeValidator.TYPE = {0}: Erro de valida\u00E7\u00E3o: O valor n\u00E3o \u00E9 do tipo correto.
+
+javax.faces.validator.LengthValidator.MAXIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 mais longo do que o m\u00E1ximo permitido de {0} caracteres.
+javax.faces.validator.LengthValidator.MINIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 mais curto do que o m\u00EDnimo permitido de {0} caracteres.
+
+javax.faces.validator.LongRangeValidator.MAXIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 maior que o m\u00E1ximo permitido de ''{0}''.
+javax.faces.validator.LongRangeValidator.MINIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 menor que o m\u00EDnimo permitido de ''{0}''.
+javax.faces.validator.LongRangeValidator.NOT_IN_RANGE = Erro de valida\u00E7\u00E3o: O atributo especificado n\u00E3o pode ser convertido para o tipo apropriado.
+javax.faces.validator.LongRangeValidator.TYPE = {0}: Erro de valida\u00E7\u00E3o: O valor n\u00E3o \u00E9 do tipo correto.
+
+javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Erro de valida\u00E7\u00E3o: Erro de valida\u00E7\u00E3o: Valor n\u00E3o de acordo com o padr\u00E3o ''{0}''
+javax.faces.validator.RegexValidator.PATTERN_NOT_SET = Um padr\u00E3o deve ser definido para validar.
+javax.faces.validator.RegexValidator.MATCH_EXCEPTION = O padr\u00E3o n\u00E3o \u00E9 uma express\u00E3o regular v\u00E1lida.
+
+javax.faces.validator.BeanValidator.MESSAGE = {1}: {0}
+
+# myfaces specific messages
+org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \u0020in {0}
+org.apache.myfaces.Email.INVALID = Erro de valida\u00E7\u00E3o
+org.apache.myfaces.Email.INVALID_detail = O valor informado ({0}) n\u00E3o \u00E9 um endere\u00E7o de e-mail v\u00E1lido.
+
+org.apache.myfaces.Equal.INVALID = Erro de valida\u00E7\u00E3o
+org.apache.myfaces.Equal.INVALID_detail = O valor informado ({0}) n\u00E3o \u00E9 igual ao valor de "{1}".
+
+org.apache.myfaces.Creditcard.INVALID = Erro de valida\u00E7\u00E3o
+org.apache.myfaces.Creditcard.INVALID_detail = O valor informado ({0}) est\u00E1 incorreto para cart\u00E3o de cr\u00E9dito
+
+org.apache.myfaces.Regexpr.INVALID = Erro de valida\u00E7\u00E3o
+org.apache.myfaces.Regexpr.INVALID_detail = O valor informado ({0}) \u00E9 inv\u00E1lido.
+
+org.apache.myfaces.Date.INVALID = Erro de valida\u00E7\u00E3o
+org.apache.myfaces.Date.INVALID_detail = O valor informado ({0}) n\u00E3o \u00E9 uma data v\u00E1lida
+
+org.apache.myfaces.ticker.NOCONNECTION = Sem conex\u00E3o:
+org.apache.myfaces.ticker.NOCONNECTION_detail = Talvez voc\u00EA esteja atr\u00E1s de um firewall?
+
+org.apache.myfaces.ISBN.INVALID = Erro de valida\u00E7\u00E3o
+org.apache.myfaces.ISBN.INVALID_detail = O valor informado ({0}) n\u00E3o \u00E9 um c\u00F3digo isbn v\u00E1lido.
+
+org.apache.myfaces.tree2.MISSING_NODE = N\u00F3 ausente
+org.apache.myfaces.tree2.MISSING_NODE_detail = O n\u00F3 solicitado "{0}" n\u00E3o existe.
+
+org.apache.myfaces.calendar.CONVERSION = Erro de convers\u00E3o
+org.apache.myfaces.calendar.CONVERSION_detail = "{0}": O valor fornecido "{1}" n\u00E3o p\u00F4de ser convertido em uma data.
+
+org.apache.myfaces.FileUpload.SIZE_LIMIT = "{0}": O arquivo carregado excedeu o tamanho m\u00E1ximo de {1} bytes.
diff --git a/api/src/main/resources/javax/faces/Messages_pt_BR.properties b/api/src/main/resources/javax/faces/Messages_pt_BR.properties
deleted file mode 100644
index c65230a..0000000
--- a/api/src/main/resources/javax/faces/Messages_pt_BR.properties
+++ /dev/null
@@ -1,133 +0,0 @@
-# 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        = Erro de conversão
-javax.faces.component.UIInput.CONVERSION_detail = {0}: Ocorreu um erro de conversão.
-javax.faces.component.UIInput.REQUIRED        = Erro de validação
-javax.faces.component.UIInput.REQUIRED_detail = {0}: Um valor é requerido.
-javax.faces.component.UIInput.UPDATE = {0}: Erro ao processar a informação apresentada.
-
-javax.faces.component.UISelectOne.INVALID        = Erro de validação
-javax.faces.component.UISelectOne.INVALID_detail = {0}: O valor não é uma opção válida.
-javax.faces.component.UISelectMany.INVALID        = Erro de validação
-javax.faces.component.UISelectMany.INVALID_detail = {0}: O valor não é uma opção válida.
-
-# converters
-javax.faces.converter.BigDecimalConverter.DECIMAL        = Erro de conversão
-javax.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}: O valor especificado não é um número válido.
-
-javax.faces.converter.BigIntegerConverter.BIGINTEGER        = Erro de conversão
-javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: O valor especificado não é um número válido.
-
-javax.faces.converter.BooleanConverter.BOOLEAN        = Erro de conversão
-javax.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: Impossível converter '{0}' para Boolean.
-
-javax.faces.converter.ByteConverter.BYTE        = Erro de conversão
-javax.faces.converter.ByteConverter.BYTE_detail = {2}: Impossível converter '{0}' para Byte.
-
-javax.faces.converter.CharacterConverter.CHARACTER        = Erro de conversão
-javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: Não foi possível converter '{0}' para caracter.
-
-javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' não pode ser entendida como uma data.
-javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' não pode ser entendida como uma data. Exemplo: {1}
-javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' não pode ser entendida como um tempo.
-javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' não pode ser entendida como um tempo. Exemplo: {1}
-javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' não pode ser entendida como uma data e hora.
-javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' não pode ser entendida como uma data e hora. Exemplo: {1}
-javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: 'pattern' ou 'type' atributo deve ser especificado para converter o valor ''{0}''.
-
-javax.faces.converter.DoubleConverter.DOUBLE        = Erro de conversão
-javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: O valor especificado não é um número válido.
-
-javax.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' deve ser convertida para um enum.
-javax.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' deve ser conversível para um enum do enum que contém a constante ''{1}''.
-javax.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' deve ser conversível para um enum do enum, mas nenhuma classe enum prestados.
-javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' deve ser conversível para um enum do enum, mas nenhuma classe enum prestados.
-
-javax.faces.converter.FloatConverter.FLOAT        = Erro de conversão
-javax.faces.converter.FloatConverter.FLOAT_detail = {2}: O valor especificado não é um número válido.
-
-javax.faces.converter.IntegerConverter.INTEGER        = Erro de conversão
-javax.faces.converter.IntegerConverter.INTEGER_detail = {2}: O valor especificado não é um número válido.
-
-javax.faces.converter.LongConverter.LONG        = Erro de conversão
-javax.faces.converter.LongConverter.LONG_detail = {2}: O valor especificado não é um número válido.
-
-javax.faces.converter.NumberConverter.CURRENCY = {2}: ''{0}'' não pode ser entendida como um valor monetário.
-javax.faces.converter.NumberConverter.CURRENCY_detail = {2}: ''{0}'' não pode ser entendida como um valor monetário. Exemplo: {1}
-javax.faces.converter.NumberConverter.PERCENT = {2}: ''{0}'' não pode ser entendida como uma porcentagem.
-javax.faces.converter.NumberConverter.PERCENT_detail = {2}: ''{0}'' não pode ser entendida como uma porcentagem. Exemplo: {1}
-javax.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' não é um número.
-javax.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' não é um número. Exemplo: {1}
-javax.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' não é um padrão de número.
-javax.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' não é um padrão de número. Exemplo: {1}
-
-javax.faces.converter.ShortConverter.SHORT        = Erro de conversão
-javax.faces.converter.ShortConverter.SHORT_detail = {2}: O valor especificado não é um número válido.
-
-# validators
-javax.faces.validator.NOT_IN_RANGE        = Erro de validação
-javax.faces.validator.NOT_IN_RANGE_detail = {2}: O atributo especificador não está entre os valores esperados {0} e {1}.
-
-javax.faces.validator.DoubleRangeValidator.MAXIMUM        = Erro de validação
-javax.faces.validator.DoubleRangeValidator.MAXIMUM_detail = {1}: O valor é maior que o máximo permitido de ''{0}''.
-javax.faces.validator.DoubleRangeValidator.MINIMUM        = Erro de validação
-javax.faces.validator.DoubleRangeValidator.MINIMUM_detail = {1}: O valor é menor que o mínimo permitido de ''{0}''.
-javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE        = Erro de validação
-javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE_detail = O atributo especificado não pode ser convertido para o tipo apropriado.
-javax.faces.validator.DoubleRangeValidator.TYPE        = Erro de validação
-javax.faces.validator.DoubleRangeValidator.TYPE_detail = {0}: O valor não é do tipo correto.
-
-javax.faces.validator.LengthValidator.MAXIMUM        = Erro de validação
-javax.faces.validator.LengthValidator.MAXIMUM_detail = {1}: O valor é mais longo do que o máximo permitido de {0} caracteres.
-javax.faces.validator.LengthValidator.MINIMUM        = Erro de validação
-javax.faces.validator.LengthValidator.MINIMUM_detail = {1}: O valor é mais curto do que o mínimo permitido de {0} caracteres.
-
-javax.faces.validator.LongRangeValidator.MAXIMUM        = Erro de validação
-javax.faces.validator.LongRangeValidator.MAXIMUM_detail = {1}: O valor é maior que o máximo permitido de ''{0}''.
-javax.faces.validator.LongRangeValidator.MINIMUM        = Erro de validação
-javax.faces.validator.LongRangeValidator.MINIMUM_detail = {1}: O valor é menor que o mínimo permitido de ''{0}''.
-javax.faces.validator.LongRangeValidator.NOT_IN_RANGE        = Erro de validação
-javax.faces.validator.LongRangeValidator.NOT_IN_RANGE_detail = O atributo especificado não pode ser convertido para o tipo apropriado.
-javax.faces.validator.LongRangeValidator.TYPE        = Erro de validação
-javax.faces.validator.LongRangeValidator.TYPE_detail = {0}: O valor não é do tipo correto.
-
-javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Erro de validação: Valor não de acordo com o padrão ''{0}''
-
-
-# myfaces specific messages
-org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \u0020in {0}
-org.apache.myfaces.Email.INVALID = Erro de validação
-org.apache.myfaces.Email.INVALID_detail = O valor informado ({0}) não é um endereço de e-mail válido.
-
-org.apache.myfaces.Equal.INVALID = Erro de validação
-org.apache.myfaces.Equal.INVALID_detail = O valor informado ({0}) não é igual ao valor de "{1}".
-
-org.apache.myfaces.Creditcard.INVALID = Erro de validação
-org.apache.myfaces.Creditcard.INVALID_detail = O valor informado ({0}) está incorreto para cartão de crédito
-
-org.apache.myfaces.Regexpr.INVALID=Erro de validação
-org.apache.myfaces.Regexpr.INVALID_detail= O valor informado ({0}) é inválido.
-
-org.apache.myfaces.Date.INVALID = Erro de validação
-org.apache.myfaces.Date.INVALID_detail = O valor informado ({0}) não é uma data válida
-
-org.apache.myfaces.ticker.NOCONNECTION = Sem conexão: 
-org.apache.myfaces.ticker.NOCONNECTION_detail = Talvez você esteja atrás de um firewall?
-
-org.apache.myfaces.ISBN.INVALID =Erro de validação
-org.apache.myfaces.ISBN.INVALID_detail = O valor informado ({0}) não é um código isbn válido.
diff --git a/api/src/main/resources/javax/faces/Messages_uk.properties b/api/src/main/resources/javax/faces/Messages_uk.properties
new file mode 100644
index 0000000..e58e862
--- /dev/null
+++ b/api/src/main/resources/javax/faces/Messages_uk.properties
@@ -0,0 +1,131 @@
+# 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 = {0}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F
+javax.faces.component.UIInput.REQUIRED = {0}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043E\u0431\u043E\u0432'\u044F\u0437\u043A\u043E\u0432\u0435.
+javax.faces.component.UIInput.UPDATE = {0}: \u041F\u0456\u0434 \u0447\u0430\u0441 \u043E\u0431\u0440\u043E\u0431\u043A\u0438 \u043F\u043E\u0434\u0430\u043D\u043E\u0457 \u0432\u0430\u043C\u0438 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457 \u0441\u0442\u0430\u043B\u0430\u0441\u044F \u043F\u043E\u043C\u0438\u043B\u043A\u0430.
+
+javax.faces.component.UISelectOne.INVALID = {0}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043D\u0435\u0434\u0456\u0439\u0441\u043D\u0435
+javax.faces.component.UISelectMany.INVALID = {0}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043D\u0435\u0434\u0456\u0439\u0441\u043D\u0435
+
+# converters
+javax.faces.converter.BigDecimalConverter.DECIMAL = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0434\u0435\u0441\u044F\u0442\u043A\u043E\u0432\u0438\u043C \u0447\u0438\u0441\u043B\u043E\u043C.
+javax.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0431\u0443\u0442\u0438 \u0434\u0435\u0441\u044F\u0442\u043A\u043E\u0432\u0438\u043C \u0447\u0438\u0441\u043B\u043E\u043C, \u0449\u043E \u0441\u043A\u043B\u0430\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0437 \u043D\u0443\u043B\u044F \u0430\u0431\u043E \u0431\u0456\u043B\u044C\u0448\u0435 \u0446\u0438\u0444\u0440, \u0437\u0430 \u044F\u043A\u0438\u043C\u0438 \u043C\u043E\u0436\u0443\u0442\u044C \u0441\u0443\u043F\u0440\u043E\u0432\u043E\u0434\u0436\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u0434\u0435\u0441\u044F\u0442\u043A\u043E\u0432\u0438\u0439 \u0437\u043D\u0430\u043A \u0456 \u0434\u0440\u0456\u0431. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+
+javax.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C, \u0449\u043E \u0441\u043A\u043B\u0430\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0437 \u043E\u0434\u043D\u0456\u0454\u0457 \u0430\u0431\u043E \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u043E\u0445 \u0446\u0438\u0444\u0440.
+javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C, \u0449\u043E \u0441\u043A\u043B\u0430\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0437 \u043E\u0434\u043D\u0456\u0454\u0457 \u0430\u0431\u043E \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u043E\u0445 \u0446\u0438\u0444\u0440. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+
+javax.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 ''\u0442\u0430\u043A'' \u0430\u0431\u043E ''\u043D\u0456''.
+javax.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 ''\u0442\u0430\u043A'' \u0430\u0431\u043E ''\u043D\u0456''. \u0411\u0443\u0434\u044C-\u044F\u043A\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F, \u043E\u043A\u0440\u0456\u043C ''\u0442\u0430\u043A'', \u0431\u0443\u0434\u0435 \u043E\u0446\u0456\u043D\u0435\u043D\u043E \u044F\u043A ''\u043D\u0456''.
+
+javax.faces.converter.ByteConverter.BYTE = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C \u0432\u0456\u0434 0 \u0434\u043E 255.
+javax.faces.converter.ByteConverter.BYTE_detail = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C \u0432\u0456\u0434 0 \u0434\u043E 255. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+
+javax.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0431\u0443\u0442\u0438 \u0434\u0456\u0439\u0441\u043D\u0438\u043C \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C.
+javax.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0431\u0443\u0442\u0438 \u0434\u0456\u0439\u0441\u043D\u0438\u043C ASCII \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u043C.
+
+javax.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0434\u0430\u0442\u0430.
+javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0434\u0430\u0442\u0430. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+javax.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0447\u0430\u0441.
+javax.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0447\u0430\u0441. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+javax.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441.
+javax.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+javax.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: \u0414\u043B\u044F \u043F\u0435\u0440\u0435\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F ''{0}'' \u043D\u0435\u043E\u0431\u0445\u0456\u0434\u043D\u043E \u0432\u043A\u0430\u0437\u0430\u0442\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 ''pattern'' \u0430\u0431\u043E ''type''.
+
+javax.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C, \u0449\u043E \u0441\u043A\u043B\u0430\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0437 \u043E\u0434\u043D\u0456\u0454\u0457 \u0430\u0431\u043E \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u043E\u0445 \u0446\u0438\u0444\u0440.
+javax.faces.converter.DoubleConverter.DOUBLE_detail = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C \u043C\u0456\u0436 4.9E-324 \u0442\u0430 1.7976931348623157E308  \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+
+javax.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u043E\u043D\u0432\u0435\u0440\u0442\u043E\u0432\u0430\u043D\u043E \u0432 enum.
+javax.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u043E\u043D\u0432\u0435\u0440\u0442\u043E\u0432\u0430\u043D\u0435 \u0432 enum \u0437 enum, \u044F\u043A\u0438\u0439 \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0443 ''{1}''.
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u043E\u043D\u0432\u0435\u0440\u0442\u043E\u0432\u0430\u043D\u0435 \u0432 enum \u0437 enum, \u0430\u043B\u0435 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0431\u0430\u0447\u0435\u043D\u043E enum \u043A\u043B\u0430\u0441\u0443.
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u043E\u043D\u0432\u0435\u0440\u0442\u043E\u0432\u0430\u043D\u0435 \u0432 enum \u0437 enum, \u0430\u043B\u0435 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0431\u0430\u0447\u0435\u043D\u043E enum \u043A\u043B\u0430\u0441\u0443.
+
+javax.faces.converter.FloatConverter.FLOAT = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C, \u0449\u043E \u0441\u043A\u043B\u0430\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0437 \u043E\u0434\u043D\u0456\u0454\u0457 \u0430\u0431\u043E \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u043E\u0445 \u0446\u0438\u0444\u0440.
+javax.faces.converter.FloatConverter.FLOAT_detail = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C \u043C\u0456\u0436 1.4E-45 \u0442\u0430 3.4028235E38  \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+
+javax.faces.converter.IntegerConverter.INTEGER = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C, \u0449\u043E \u0441\u043A\u043B\u0430\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0437 \u043E\u0434\u043D\u0456\u0454\u0457 \u0430\u0431\u043E \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u043E\u0445 \u0446\u0438\u0444\u0440.
+javax.faces.converter.IntegerConverter.INTEGER_detail = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C \u043C\u0456\u0436 -2147483648 \u0442\u0430 2147483647 \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+
+javax.faces.converter.LongConverter.LONG = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C, \u0449\u043E \u0441\u043A\u043B\u0430\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0437 \u043E\u0434\u043D\u0456\u0454\u0457 \u0430\u0431\u043E \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u043E\u0445 \u0446\u0438\u0444\u0440.
+javax.faces.converter.LongConverter.LONG_detail = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C \u043C\u0456\u0436 -9223372036854775808 \u0442\u0430 9223372036854775807 \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+
+javax.faces.converter.NumberConverter.CURRENCY = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0432\u0430\u043B\u044E\u0442\u0438.
+javax.faces.converter.NumberConverter.CURRENCY_detail = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0432\u0430\u043B\u044E\u0442\u0438. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+javax.faces.converter.NumberConverter.PERCENT = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A.
+javax.faces.converter.NumberConverter.PERCENT_detail = {2}: ''{0}'' \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0437\u0440\u043E\u0437\u0443\u043C\u0456\u043B\u0435 \u044F\u043A \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+javax.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' \u043D\u0435 \u0454 \u0447\u0438\u0441\u043B\u043E\u043C.
+javax.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' \u043D\u0435 \u0454 \u0447\u0438\u0441\u043B\u043E\u043C. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+javax.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' \u043D\u0435 \u0454 \u0447\u0438\u0441\u043B\u043E\u0432\u043E\u044E \u0441\u0445\u0435\u043C\u043E\u044E.
+javax.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' \u043D\u0435 \u0454 \u0447\u0438\u0441\u043B\u043E\u0432\u043E\u044E \u0441\u0445\u0435\u043C\u043E\u044E. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+
+javax.faces.converter.ShortConverter.SHORT = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C, \u0449\u043E \u0441\u043A\u043B\u0430\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0437 \u043E\u0434\u043D\u0456\u0454\u0457 \u0430\u0431\u043E \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u043E\u0445 \u0446\u0438\u0444\u0440.
+javax.faces.converter.ShortConverter.SHORT_detail = {2}: ''{0}'' \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C \u043C\u0456\u0436 -32768 \u0442\u0430 32767 \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+
+javax.faces.converter.STRING = {1}: \u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043F\u0435\u0440\u0435\u0442\u0432\u043E\u0440\u0438\u0442\u0438 ''{0}'' \u0443 \u0440\u044F\u0434\u043E\u043A.
+
+# validators
+javax.faces.validator.NOT_IN_RANGE = \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0412\u043A\u0430\u0437\u0430\u043D\u0438\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043D\u0435 \u0437\u043D\u0430\u0445\u043E\u0434\u0438\u0442\u044C\u0441\u044F \u043C\u0456\u0436 \u043E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u0438\u043C\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\u043C\u0438 {0} \u0442\u0430 {1}.
+
+javax.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u0432\u0438\u0449\u0443\u0454 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u0438\u0439 \u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C ''{0}''
+javax.faces.validator.DoubleRangeValidator.MINIMUM = {1}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043C\u0435\u043D\u0448\u0435 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u043E\u0433\u043E \u043C\u0456\u043D\u0456\u043C\u0443\u043C\u0443 ''{0}''
+javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043D\u0435 \u0437\u043D\u0430\u0445\u043E\u0434\u0438\u0442\u044C\u0441\u044F \u043C\u0456\u0436 \u043E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u0438\u043C\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\u043C\u0438 {0} \u0442\u0430 {1}.
+javax.faces.validator.DoubleRangeValidator.TYPE = {0}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043D\u0435 \u0454 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u043C \u0442\u0438\u043F\u043E\u043C
+
+javax.faces.validator.LengthValidator.MAXIMUM = {1}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0414\u043E\u0432\u0436\u0438\u043D\u0430 \u043F\u0435\u0440\u0435\u0432\u0438\u0449\u0443\u0454 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u0438\u0439 \u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C ''{0}''
+javax.faces.validator.LengthValidator.MINIMUM = {1}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0414\u043E\u0432\u0436\u0438\u043D\u0430 \u043C\u0435\u043D\u0448\u0435 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u043E\u0433\u043E \u043C\u0456\u043D\u0456\u043C\u0443\u043C\u0443 ''{0}''
+
+javax.faces.validator.LongRangeValidator.MAXIMUM = {1}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u0432\u0438\u0449\u0443\u0454 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u0438\u0439 \u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C ''{0}''
+javax.faces.validator.LongRangeValidator.MINIMUM = {1}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043C\u0435\u043D\u0448\u0435 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u043E\u0433\u043E \u043C\u0456\u043D\u0456\u043C\u0443\u043C\u0443 ''{0}''
+javax.faces.validator.LongRangeValidator.NOT_IN_RANGE = {2}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043D\u0435 \u0437\u043D\u0430\u0445\u043E\u0434\u0438\u0442\u044C\u0441\u044F \u043C\u0456\u0436 \u043E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u0438\u043C\u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\u043C\u0438 {0} \u0442\u0430 {1}.
+javax.faces.validator.LongRangeValidator.TYPE = {0}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043D\u0435 \u0454 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u043C \u0442\u0438\u043F\u043E\u043C.
+
+javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438: \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043D\u0435 \u0437\u0430 \u0437\u0440\u0430\u0437\u043A\u043E\u043C ''{0}''
+javax.faces.validator.RegexValidator.PATTERN_NOT_SET = \u041D\u0435\u043E\u0431\u0445\u0456\u0434\u043D\u043E \u0432\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438.
+javax.faces.validator.RegexValidator.MATCH_EXCEPTION = \u0428\u0430\u0431\u043B\u043E\u043D \u043D\u0435 \u0454 \u0434\u0456\u0439\u0441\u043D\u0438\u043C \u0440\u0435\u0433\u0443\u043B\u044F\u0440\u043D\u0438\u043C \u0432\u0438\u0440\u0430\u0437\u043E\u043C.
+
+javax.faces.validator.BeanValidator.MESSAGE = {1}: {0}
+
+# myfaces specific messages
+org.apache.myfaces.renderkit.html.HtmlMessagesRenderer.IN_FIELD = \u0020in {0}
+org.apache.myfaces.Email.INVALID = \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438
+org.apache.myfaces.Email.INVALID_detail = \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F ({0}) \u043D\u0435 \u0454 \u043A\u043E\u0440\u0435\u043A\u0442\u043D\u043E\u044E \u0430\u0434\u0440\u0435\u0441\u043E\u044E \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438.
+
+org.apache.myfaces.Equal.INVALID = \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438
+org.apache.myfaces.Equal.INVALID_detail = \u0417\u0430\u0434\u0430\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F ({0}) \u043D\u0435 \u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044E "{1}".
+
+org.apache.myfaces.Creditcard.INVALID = \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438
+org.apache.myfaces.Creditcard.INVALID_detail = \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F ({0}) \u043D\u0435 \u0454 \u043A\u043E\u0440\u0435\u043A\u0442\u043D\u043E\u044E \u043A\u0440\u0435\u0434\u0438\u0442\u043D\u043E\u044E \u043A\u0430\u0440\u0442\u043A\u043E\u044E
+
+org.apache.myfaces.Regexpr.INVALID = \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438
+org.apache.myfaces.Regexpr.INVALID_detail = \u0414\u0430\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F ({0}) \u043D\u0435 \u0454 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u043C.
+
+org.apache.myfaces.Date.INVALID = \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438
+org.apache.myfaces.Date.INVALID_detail = \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F ({0}) \u043D\u0435 \u0454 \u043A\u043E\u0440\u0435\u043A\u0442\u043D\u043E\u044E \u0434\u0430\u0442\u043E\u044E
+
+org.apache.myfaces.ticker.NOCONNECTION = \u041D\u0435\u043C\u0430\u0454 \u0437\u0432'\u044F\u0437\u043A\u0443:
+org.apache.myfaces.ticker.NOCONNECTION_detail = \u041C\u043E\u0436\u043B\u0438\u0432\u043E, \u0432\u0438 \u0437\u0430 \u0431\u0440\u0430\u043D\u0434\u043C\u0430\u0443\u0435\u0440\u043E\u043C?
+
+org.apache.myfaces.ISBN.INVALID = \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438
+org.apache.myfaces.ISBN.INVALID_detail = \u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F ({0}) \u043D\u0435 \u0454 \u043A\u043E\u0440\u0435\u043A\u0442\u043D\u0438\u043C isbn \u043A\u043E\u0434\u043E\u043C.
+
+org.apache.myfaces.tree2.MISSING_NODE = \u0412\u0456\u0434\u0441\u0443\u0442\u043D\u0456\u0439 \u0432\u0443\u0437\u043E\u043B
+org.apache.myfaces.tree2.MISSING_NODE_detail = \u0417\u0430\u043F\u0438\u0442\u0430\u043D\u0438\u0439 \u0432\u0443\u0437\u043E\u043B "{0}" \u043D\u0435 \u0456\u0441\u043D\u0443\u0454.
+
+org.apache.myfaces.calendar.CONVERSION = \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F
+org.apache.myfaces.calendar.CONVERSION_detail = "{0}": \u0437\u0430\u0434\u0430\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F "{1}" \u043D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043F\u0435\u0440\u0435\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u0430 \u0434\u0430\u0442\u0443.
+
+org.apache.myfaces.FileUpload.SIZE_LIMIT = "{0}": \u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u0438\u0439 \u0444\u0430\u0439\u043B \u043F\u0435\u0440\u0435\u0432\u0438\u0449\u0438\u0432 \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440 {1} \u0431\u0430\u0439\u0442.