You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2020/04/18 19:44:11 UTC

[myfaces] branch 3.0.x updated: Update messages translations, add Ukrainian language

This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch 3.0.x
in repository https://gitbox.apache.org/repos/asf/myfaces.git


The following commit(s) were added to refs/heads/3.0.x by this push:
     new a2886e5  Update messages translations, add Ukrainian language
     new da57805  Merge pull request #97 from astappiev/patch-3
a2886e5 is described below

commit a2886e5981df19632dde93685d5a4dc0e72f9de3
Author: Oleh Astappiev <as...@l3s.de>
AuthorDate: Sat Apr 18 17:36:44 2020 +0200

    Update messages translations, add Ukrainian language
---
 .../resources/jakarta/faces/Messages.properties    |  12 +-
 .../resources/jakarta/faces/Messages_de.properties |  77 ++++-----
 .../resources/jakarta/faces/Messages_en.properties |  12 +-
 .../resources/jakarta/faces/Messages_es.properties | 173 ++++++++++-----------
 .../resources/jakarta/faces/Messages_it.properties | 134 ++++++++--------
 .../resources/jakarta/faces/Messages_pt.properties | 131 ++++++++++++++++
 .../resources/jakarta/faces/Messages_uk.properties | 131 ++++++++++++++++
 7 files changed, 460 insertions(+), 210 deletions(-)

diff --git a/api/src/main/resources/jakarta/faces/Messages.properties b/api/src/main/resources/jakarta/faces/Messages.properties
index a2a1a48..57ef372 100644
--- a/api/src/main/resources/jakarta/faces/Messages.properties
+++ b/api/src/main/resources/jakarta/faces/Messages.properties
@@ -17,7 +17,7 @@
 # components
 jakarta.faces.component.UIInput.CONVERSION = {0}: Conversion error occurred.
 jakarta.faces.component.UIInput.REQUIRED = {0}: Validation Error: Value is required.
-jakarta.faces.component.UIInput.UPDATE = {0}: An error occurred when processing your submitted information. 
+jakarta.faces.component.UIInput.UPDATE = {0}: An error occurred when processing your submitted information.
 
 jakarta.faces.component.UISelectOne.INVALID = {0}: Validation Error: Value is not valid
 jakarta.faces.component.UISelectMany.INVALID = {0}: Validation Error: Value is not valid
@@ -39,11 +39,11 @@ jakarta.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' must be a va
 jakarta.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' must be a valid ASCII character.
 
 jakarta.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' could not be understood as a date.
-jakarta.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1} 
+jakarta.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1}
 jakarta.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' could not be understood as a time.
-jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' could not be understood as a time. Example: {1} 
+jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' could not be understood as a time. Example: {1}
 jakarta.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' could not be understood as a date and time.
-jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' could not be understood as a date and time. Example: {1} 
+jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' could not be understood as a date and time. Example: {1}
 jakarta.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: A ''pattern'' or ''type'' attribute must be specified to convert the value ''{0}''.
 
 jakarta.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' must be a number consisting of one or more digits.
@@ -116,13 +116,13 @@ org.apache.myfaces.Regexpr.INVALID_detail=The given value ({0}) is not valid.
 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/jakarta/faces/Messages_de.properties b/api/src/main/resources/jakarta/faces/Messages_de.properties
index e87122e..6cccf8c 100644
--- a/api/src/main/resources/jakarta/faces/Messages_de.properties
+++ b/api/src/main/resources/jakarta/faces/Messages_de.properties
@@ -17,40 +17,40 @@
 # components
 jakarta.faces.component.UIInput.CONVERSION = {0}: Ein Konvertierungsfehler ist aufgetreten.
 jakarta.faces.component.UIInput.REQUIRED = {0}: Validierungsfehler: Eingabe erforderlich.
-jakarta.faces.component.UIInput.UPDATE = {0}\: Bei der Verarbeitung der \u00fcbertragenden Eingaben ist ein Fehler aufgetreten. 
+jakarta.faces.component.UIInput.UPDATE = {0}: Bei der Verarbeitung der \u00FCbertragenden Eingaben ist ein Fehler aufgetreten.
 
-jakarta.faces.component.UISelectOne.INVALID = {0}\: Validierungsfehler\: Wert ist keine g\u00fcltige Auswahl
-jakarta.faces.component.UISelectMany.INVALID = {0}\: Validierungsfehler\: Wert ist keine g\u00fcltige Auswahl
+jakarta.faces.component.UISelectOne.INVALID = {0}: Validierungsfehler: Wert ist keine g\u00FCltige Auswahl
+jakarta.faces.component.UISelectMany.INVALID = {0}: Validierungsfehler: Wert ist keine g\u00FCltige Auswahl
 
 # converters
 jakarta.faces.converter.BigDecimalConverter.DECIMAL = {2}: ''{0}'' muss eine Dezimalzahl sein.
-jakarta.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} 
- 
-jakarta.faces.converter.BigIntegerConverter.BIGINTEGER = {2}\: ''{0}'' muss eine Zahl aus ein oder mehr Ziffern sein. 
+jakarta.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}
+
+jakarta.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: ''{0}'' muss eine Zahl aus ein oder mehr Ziffern sein.
 jakarta.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: ''{0}'' muss eine Zahl aus ein oder mehr Ziffern sein. Beispiel: {1}
- 
-jakarta.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' muss 'true' oder 'false' sein.
-jakarta.faces.converter.BooleanConverter.BOOLEAN_detail = {1}\: ''{0}'' muss 'true' oder 'false' sein.  Jeder Wert au\u00dfer 'true' wird als 'false' interpretiert.
+
+jakarta.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' muss ''true'' oder ''false'' sein.
+jakarta.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: ''{0}'' muss ''true'' oder ''false'' sein.  Jeder Wert au\u00DFer ''true'' wird als ''false'' interpretiert.
 
 jakarta.faces.converter.ByteConverter.BYTE = {2}: ''{0}'' muss eine Zahl zwischen 0 und 255 sein.
 jakarta.faces.converter.ByteConverter.BYTE_detail = {2}: ''{0}'' muss eine Zahl zwischen 0 und 255 sein.  Beispiel: {1}
- 
-jakarta.faces.converter.CharacterConverter.CHARACTER = {1}\: ''{0}'' muss ein g\u00fcltiges Zeichen sein.
-jakarta.faces.converter.CharacterConverter.CHARACTER_detail = {1}\: ''{0}'' muss ein g\u00fcltiges ASCII Zeichen sein.
+
+jakarta.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' muss ein g\u00FCltiges Zeichen sein.
+jakarta.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' muss ein g\u00FCltiges ASCII Zeichen sein.
 
 jakarta.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' konnte nicht als Datum erkannt werden.
-jakarta.faces.converter.DateTimeConverter.DATE_detail = {2}\: ''{0}'' konnte nicht als Datum erkannt werden. Beispiel\: {1} 
+jakarta.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' konnte nicht als Datum erkannt werden. Beispiel: {1}
 jakarta.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' konnte nicht als Zeit erkannt werden.
-jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}\: ''{0}'' konnte nicht als Zeit erkannt werden. Beispiel\: {1} 
+jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' konnte nicht als Zeit erkannt werden. Beispiel: {1}
 jakarta.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' konnte nicht als Datum und Zeit erkannt werden.
-jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}\: ''{0}'' konnte nicht als Datum und Zeit erkannt werden. Beispiel\: {1} 
-jakarta.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: Ein 'pattern' oder 'type' Attribut muss angegeben werden um den Wert ''{0}'' zu konvertieren.
+jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' konnte nicht als Datum und Zeit erkannt werden. Beispiel: {1}
+jakarta.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: Ein ''pattern'' oder ''type'' Attribut muss angegeben werden um den Wert ''{0}'' zu konvertieren.
 
 jakarta.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' muss eine Zahl aus ein oder mehr Ziffern sein.
 jakarta.faces.converter.DoubleConverter.DOUBLE_detail = {2}: ''{0}'' muss eine Zahl zwischen 4.9E-324 und 1.7976931348623157E308 sein. Beispiel: {1}
 
 jakarta.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' muss in einen Enum konvertierbar sein.
-jakarta.faces.converter.EnumConverter.ENUM_detail = {2}\: ''{0}'' muss in einen Enum konvertierbar sein, der die Konstante ''{1}'' enth\u00e4lt.
+jakarta.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' muss in einen Enum konvertierbar sein, der die Konstante ''{1}'' enth\u00E4lt.
 jakarta.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' muss in einen Enum konvertierbar sein, aber es wurde keine Enum Klasse bereitgestellt.
 jakarta.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 @@ jakarta.faces.converter.ShortConverter.SHORT_detail = {2}: ''{0}'' muss eine Zah
 jakarta.faces.converter.STRING = {1}: Konnte ''{0}'' nicht in eine Zeichenkette konvertieren.
 
 # validators
-jakarta.faces.validator.NOT_IN_RANGE = Validierungsfehler\: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}.  
+jakarta.faces.validator.NOT_IN_RANGE = Validierungsfehler: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}.
 
-jakarta.faces.validator.DoubleRangeValidator.MAXIMUM = {1}\: Validierungsfehler\: Der Wert ist gr\u00f6\u00dfer als das erlaubte Maximum von ''{0}''
+jakarta.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: Validierungsfehler: Der Wert ist gr\u00F6\u00DFer als das erlaubte Maximum von ''{0}''
 jakarta.faces.validator.DoubleRangeValidator.MINIMUM = {1}: Validierungsfehler: Der Wert ist kleiner als das erlaubte Minimum von ''{0}''
-jakarta.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Validierungsfehler: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}
+jakarta.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Validierungsfehler: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}.
 jakarta.faces.validator.DoubleRangeValidator.TYPE = {0}: Validierungsfehler: Der Wert ist nicht vom korrekten Typ
 
-jakarta.faces.validator.LengthValidator.MAXIMUM = {1}\: Validierungsfehler\: Die L\u00e4nge des Werts ist gr\u00f6\u00dfer als das erlaubte Maximum von ''{0}'' Zeichen
-jakarta.faces.validator.LengthValidator.MINIMUM = {1}: Validierungsfehler: Die L\u00e4nge des Werts ist kleiner als das erlaubte Minimum von ''{0}'' Zeichen
+jakarta.faces.validator.LengthValidator.MAXIMUM = {1}: Validierungsfehler: Die L\u00E4nge des Werts ist gr\u00F6\u00DFer als das erlaubte Maximum von ''{0}'' Zeichen
+jakarta.faces.validator.LengthValidator.MINIMUM = {1}: Validierungsfehler: Die L\u00E4nge des Werts ist kleiner als das erlaubte Minimum von ''{0}'' Zeichen
 
-jakarta.faces.validator.LongRangeValidator.MAXIMUM = {1}\: Validierungsfehler\: Der Wert ist gr\u00f6\u00dfer als das erlaubte Maximum von ''{0}''
-jakarta.faces.validator.LongRangeValidator.MINIMUM = {1}: Validation Error: Der Wert ist kleiner als das erlaubte Minimum von ''{0}''
+jakarta.faces.validator.LongRangeValidator.MAXIMUM = {1}: Validierungsfehler: Der Wert ist gr\u00F6\u00DFer als das erlaubte Maximum von ''{0}''
+jakarta.faces.validator.LongRangeValidator.MINIMUM = {1}: Validierungsfehler: Der Wert ist kleiner als das erlaubte Minimum von ''{0}''
 jakarta.faces.validator.LongRangeValidator.NOT_IN_RANGE = {2}: Validierungsfehler: Der Wert ist nicht zwischen den erwarteten Werten von {0} und {1}.
 jakarta.faces.validator.LongRangeValidator.TYPE = {0}: Validierungsfehler: Der Wert ist nicht vom korrekten Typ.
 
-jakarta.faces.validator.RegexValidator.NOT_MATCHED=Validierungsfehler
-jakarta.faces.validator.RegexValidator.NOT_MATCHED_detail= {1}: Der eingegebene Wert ({0}) ist nicht korrekt.
-jakarta.faces.validator.RegexValidator.PATTERN_NOT_SET = Ein Muster muss f\u00fcr Validierung eingestellt werden.
-jakarta.faces.validator.RegexValidator.MATCH_EXCEPTION = Das Muster ist kein g\u00fcltiger regul\u00e4rer Ausdruck.
+jakarta.faces.validator.RegexValidator.NOT_MATCHED = {1}: Validierungsfehler: Der eingegebene Wert ''{0}'' ist nicht korrekt.
+jakarta.faces.validator.RegexValidator.PATTERN_NOT_SET = Ein Muster muss f\u00FCr Validierung eingestellt werden.
+jakarta.faces.validator.RegexValidator.MATCH_EXCEPTION = Das Muster ist kein g\u00FCltiger regul\u00E4rer Ausdruck.
+
+jakarta.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}" \u00fcberein.
+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/jakarta/faces/Messages_en.properties b/api/src/main/resources/jakarta/faces/Messages_en.properties
index a2a1a48..57ef372 100644
--- a/api/src/main/resources/jakarta/faces/Messages_en.properties
+++ b/api/src/main/resources/jakarta/faces/Messages_en.properties
@@ -17,7 +17,7 @@
 # components
 jakarta.faces.component.UIInput.CONVERSION = {0}: Conversion error occurred.
 jakarta.faces.component.UIInput.REQUIRED = {0}: Validation Error: Value is required.
-jakarta.faces.component.UIInput.UPDATE = {0}: An error occurred when processing your submitted information. 
+jakarta.faces.component.UIInput.UPDATE = {0}: An error occurred when processing your submitted information.
 
 jakarta.faces.component.UISelectOne.INVALID = {0}: Validation Error: Value is not valid
 jakarta.faces.component.UISelectMany.INVALID = {0}: Validation Error: Value is not valid
@@ -39,11 +39,11 @@ jakarta.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' must be a va
 jakarta.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' must be a valid ASCII character.
 
 jakarta.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' could not be understood as a date.
-jakarta.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1} 
+jakarta.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1}
 jakarta.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' could not be understood as a time.
-jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' could not be understood as a time. Example: {1} 
+jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' could not be understood as a time. Example: {1}
 jakarta.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' could not be understood as a date and time.
-jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' could not be understood as a date and time. Example: {1} 
+jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' could not be understood as a date and time. Example: {1}
 jakarta.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: A ''pattern'' or ''type'' attribute must be specified to convert the value ''{0}''.
 
 jakarta.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' must be a number consisting of one or more digits.
@@ -116,13 +116,13 @@ org.apache.myfaces.Regexpr.INVALID_detail=The given value ({0}) is not valid.
 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/jakarta/faces/Messages_es.properties b/api/src/main/resources/jakarta/faces/Messages_es.properties
index 249a95d..b9a921d 100644
--- a/api/src/main/resources/jakarta/faces/Messages_es.properties
+++ b/api/src/main/resources/jakarta/faces/Messages_es.properties
@@ -15,124 +15,117 @@
 # standard messages (Spec. 2.5.2.4)
 
 # components
-jakarta.faces.component.UIInput.CONVERSION        = {0}: Error de conversi\u00f3n
-jakarta.faces.component.UIInput.CONVERSION_detail = {0}: Ha ocurrido un error de conversi\u00f3n.
-jakarta.faces.component.UIInput.REQUIRED        = {0}: Error de validaci\u00f3n
-jakarta.faces.component.UIInput.REQUIRED_detail = {0}: Error de validaci\u00f3n: Valor requerido.
-jakarta.faces.component.UIInput.UPDATE = {0}: Un error occurri\u00f3 cuando se estaba procesando la informaci\u00f3n enviada.
+jakarta.faces.component.UIInput.CONVERSION = {0}: Error de conversi\u00F3n
+jakarta.faces.component.UIInput.REQUIRED = {0}: Error de validaci\u00F3n: Valor requerido.
+jakarta.faces.component.UIInput.UPDATE = {0}: Un error occurri\u00F3 cuando se estaba procesando la informaci\u00F3n enviada.
 
-jakarta.faces.component.UISelectOne.INVALID        = {0}: Error de validaci\u00f3n: Valor no v\u00e1lido.
-jakarta.faces.component.UISelectOne.INVALID_detail = {0}: Error de validaci\u00f3n: El valor no es una opci\u00f3n v\u00e1lida.
-
-jakarta.faces.component.UISelectMany.INVALID        = {0}: Error de validaci\u00f3n
-jakarta.faces.component.UISelectMany.INVALID_detail = {0}: Error de validaci\u00f3n: El valor no es una opci\u00f3n v\u00e1lida.
+jakarta.faces.component.UISelectOne.INVALID = {0}: Error de validaci\u00F3n: El valor no es una opci\u00F3n v\u00E1lida.
+jakarta.faces.component.UISelectMany.INVALID = {0}: Error de validaci\u00F3n: El valor no es una opci\u00F3n v\u00E1lida.
 
 # converters
-jakarta.faces.converter.BigDecimalConverter.DECIMAL = {2}: ''{0}'' debe ser un n\u00famero decimal con signo.
-jakarta.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}
+jakarta.faces.converter.BigDecimalConverter.DECIMAL = {2}: ''{0}'' debe ser un n\u00FAmero decimal con signo.
+jakarta.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}
  
-jakarta.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: ''{0}'' debe ser un n\u00famero consistente de uno o m\u00e1s d\u00edgitos.
-jakarta.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: ''{0}'' debe ser un n\u00famero consistente de uno o m\u00e1s d\u00edgitos. Ejemplo: {1}
+jakarta.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+jakarta.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos. Ejemplo: {1}
  
-jakarta.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' debe ser 'true' o 'false'.
-jakarta.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: ''{0}'' debe ser 'true' o 'false'.  Cualquier otro valor diferente a 'true' se evaluar\u00e1 como 'false'.
+jakarta.faces.converter.BooleanConverter.BOOLEAN = {1}: ''{0}'' debe ser ''true'' o ''false''.
+jakarta.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: ''{0}'' debe ser ''true'' o ''false''.  Cualquier otro valor diferente a ''true'' se evaluar\u00E1 como ''false''.
 
-jakarta.faces.converter.ByteConverter.BYTE = {2}: ''{0}'' debe ser un n\u00famero entre 0 y 255.
-jakarta.faces.converter.ByteConverter.BYTE_detail = {2}: ''{0}'' debe ser un n\u00famero entre 0 y 255. Ejemplo: {1}
+jakarta.faces.converter.ByteConverter.BYTE = {2}: ''{0}'' debe ser un n\u00FAmero entre 0 y 255.
+jakarta.faces.converter.ByteConverter.BYTE_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre 0 y 255. Ejemplo: {1}
  
-jakarta.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' debe ser un car\u00e1cter v\u00e1lido.
-jakarta.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' debe ser un caracter ASCII v\u00e1lido.
-
-jakarta.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' no puede ser entendido como una fecha v\u00e1lida.
-jakarta.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' no puede ser entendido como una fecha v\u00e1lida. Ejemplo\: {1} 
-jakarta.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' no puede ser entendido como una hora v\u00e1lida.
-jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' no puede ser entendido como una hora v\u00e1lida. Ejemplo\: {1} 
-jakarta.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' no puede ser entendido como una fecha y hora v\u00e1lida.
-jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' no puede ser entendido como una fecha y hora v\u00e1lida. Ejemplo\: {1} 
-jakarta.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: El attributo 'pattern' o 'type' debe ser especificado para convertir el valor ''{0}''.
-
-jakarta.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' debe ser un n\u00famero consistente de uno o m\u00e1s d\u00edgitos.
-jakarta.faces.converter.DoubleConverter.DOUBLE_detail = {2}: ''{0}'' debe ser un n\u00famero entre 4.9E-324 y 1.7976931348623157E308  Ejemplo: {1}
-
-jakarta.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' debe ser convertible a una enumeraci\u00f3n.
-jakarta.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' debe ser convertible a una enumeraci\u00f3n de la enumeraci\u00f3n que contiene la constante ''{1}''.
+jakarta.faces.converter.CharacterConverter.CHARACTER = {1}: ''{0}'' debe ser un car\u00E1cter v\u00E1lido.
+jakarta.faces.converter.CharacterConverter.CHARACTER_detail = {1}: ''{0}'' debe ser un caracter ASCII v\u00E1lido.
+
+jakarta.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' no puede ser entendido como una fecha v\u00E1lida.
+jakarta.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' no puede ser entendido como una fecha v\u00E1lida. Ejemplo: {1}
+jakarta.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' no puede ser entendido como una hora v\u00E1lida.
+jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' no puede ser entendido como una hora v\u00E1lida. Ejemplo: {1}
+jakarta.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' no puede ser entendido como una fecha y hora v\u00E1lida.
+jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' no puede ser entendido como una fecha y hora v\u00E1lida. Ejemplo: {1}
+jakarta.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: El attributo ''pattern'' o ''type'' debe ser especificado para convertir el valor ''{0}''.
+
+jakarta.faces.converter.DoubleConverter.DOUBLE = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+jakarta.faces.converter.DoubleConverter.DOUBLE_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre 4.9E-324 y 1.7976931348623157E308  Ejemplo: {1}
+
+jakarta.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' debe ser convertible a una enumeraci\u00F3n.
+jakarta.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' debe ser convertible a una enumeraci\u00F3n de la enumeraci\u00F3n que contiene la constante ''{1}''.
 jakarta.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' must be convertible to an enum from the enum, but no enum class provided.
 jakarta.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' must be convertible to an enum from the enum, but no enum class provided.
 
-jakarta.faces.converter.FloatConverter.FLOAT = {2}: ''{0}'' debe ser un n\u00famero consistente de uno o m\u00e1s d\u00edgitos.
-jakarta.faces.converter.FloatConverter.FLOAT_detail = {2}: ''{0}'' debe ser un n\u00famero entre 1.4E-45 y 3.4028235E38 Ejemplo: {1}
+jakarta.faces.converter.FloatConverter.FLOAT = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+jakarta.faces.converter.FloatConverter.FLOAT_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre 1.4E-45 y 3.4028235E38 Ejemplo: {1}
 
-jakarta.faces.converter.IntegerConverter.INTEGER = {2}: ''{0}'' debe ser un n\u00famero consistente de uno o m\u00e1s d\u00edgitos.
-jakarta.faces.converter.IntegerConverter.INTEGER_detail = {2}: ''{0}'' debe ser un n\u00famero entre -2147483648 y 2147483647 Ejemplo: {1}
+jakarta.faces.converter.IntegerConverter.INTEGER = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+jakarta.faces.converter.IntegerConverter.INTEGER_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre -2147483648 y 2147483647 Ejemplo: {1}
 
-jakarta.faces.converter.LongConverter.LONG = {2}: ''{0}'' debe ser un n\u00famero consistente de uno o m\u00e1s d\u00edgitos.
-jakarta.faces.converter.LongConverter.LONG_detail = {2}: ''{0}'' debe ser un n\u00famero entre -9223372036854775808 a 9223372036854775807 Ejemplo: {1}
+jakarta.faces.converter.LongConverter.LONG = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+jakarta.faces.converter.LongConverter.LONG_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre -9223372036854775808 a 9223372036854775807 Ejemplo: {1}
 
 jakarta.faces.converter.NumberConverter.CURRENCY = {2}: ''{0}'' no puede ser entendida como un valor de moneda.
 jakarta.faces.converter.NumberConverter.CURRENCY_detail = {2}: ''{0}'' no puede ser entendida como un valor de moneda. Ejemplo: {1}
 jakarta.faces.converter.NumberConverter.PERCENT = {2}: ''{0}'' no puede ser entendida como un porcentaje.
 jakarta.faces.converter.NumberConverter.PERCENT_detail = {2}: ''{0}'' no puede ser entendida como un porcentaje. Ejemplo: {1}
-jakarta.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' no es un n\u00famero.
-jakarta.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' no es un n\u00famero. Ejemplo: {1}
-jakarta.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' no es un patr\u00f3n de n\u00fameros.
-jakarta.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' no es un patr\u00f3n de n\u00fameros. Ejemplo: {1}
+jakarta.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' no es un n\u00FAmero.
+jakarta.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' no es un n\u00FAmero. Ejemplo: {1}
+jakarta.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' no es un patr\u00F3n de n\u00FAmeros.
+jakarta.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' no es un patr\u00F3n de n\u00FAmeros. Ejemplo: {1}
 
-jakarta.faces.converter.ShortConverter.SHORT = {2}: ''{0}'' debe ser un n\u00famero consistente de uno o m\u00e1s d\u00edgitos.
-jakarta.faces.converter.ShortConverter.SHORT_detail = {2}: ''{0}'' debe ser un n\u00famero entre -32768 y 32767 Ejemplo: {1}
+jakarta.faces.converter.ShortConverter.SHORT = {2}: ''{0}'' debe ser un n\u00FAmero consistente de uno o m\u00E1s d\u00EDgitos.
+jakarta.faces.converter.ShortConverter.SHORT_detail = {2}: ''{0}'' debe ser un n\u00FAmero entre -32768 y 32767 Ejemplo: {1}
 
 jakarta.faces.converter.STRING = {1}: No se pudo convertir ''{0}'' en una cadena.
 
 # validators
-jakarta.faces.validator.NOT_IN_RANGE        = Error de validaci\u00f3n: El atributo especificado no se encuentra entre los valores esperados de {0} y {1}.
-jakarta.faces.validator.NOT_IN_RANGE_detail = "{2}": El atributo especificado no se encuentra entre los valores esperados {0} y {1}.
-
-jakarta.faces.validator.DoubleRangeValidator.MAXIMUM        = {1}: Error de validaci\u00f3n: El valor es mayor que el m\u00e1ximo permitido de "{0}"
-jakarta.faces.validator.DoubleRangeValidator.MAXIMUM_detail = {1}: Valor superior al m\u00e1ximo permitido de ''{0}''.
-jakarta.faces.validator.DoubleRangeValidator.MINIMUM        = {1}: Error de validaci\u00f3n: El valor es inferior al m\u00ednimo permitido de ''{0}''
-jakarta.faces.validator.DoubleRangeValidator.MINIMUM_detail = {1}: Valor inferior al m\u00ednimo permitido de ''{0}''.
-jakarta.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}.
-jakarta.faces.validator.DoubleRangeValidator.NOT_IN_RANGE_detail = El atributo especificado no se puede convertir al tipo adecuado.
-jakarta.faces.validator.DoubleRangeValidator.TYPE        = {0}:  Error de validaci\u00f3n
-jakarta.faces.validator.DoubleRangeValidator.TYPE_detail = {0}: El valor no es del tipo correcto.
-
-jakarta.faces.validator.LengthValidator.MAXIMUM        = {1}: Error de validaci\u00f3n: Longitud es mayor al m\u00e1ximo permitido de ''{0}''
-jakarta.faces.validator.LengthValidator.MAXIMUM_detail = {1}: La longitud del valor es mayor al m\u00e1ximo permitido de ''{0}'' caracteres.
-jakarta.faces.validator.LengthValidator.MINIMUM        = {1}: Error de validaci\u00f3n Longitud es menor al m\u00ednimo permitido de ''{0}''
-jakarta.faces.validator.LengthValidator.MINIMUM_detail = {1}: La longitud del valor es inferior al m\u00ednimo permitido de ''{0}'' caracteres.
-
-jakarta.faces.validator.LongRangeValidator.MAXIMUM        = {1}: Error de validaci\u00f3n: Longitud es mayor al m\u00e1ximo permitido de ''{0}''
-jakarta.faces.validator.LongRangeValidator.MAXIMUM_detail = {1}:  Valor superior al m\u00e1ximo permitido de ''{0}''.
-jakarta.faces.validator.LongRangeValidator.MINIMUM        = {1}: Error de validaci\u00f3n Longitud es menor al m\u00ednimo permitido de ''{0}''
-jakarta.faces.validator.LongRangeValidator.MINIMUM_detail = {1}: Valor inferior al m\u00ednimo permitido de ''{0}''.
-jakarta.faces.validator.LongRangeValidator.NOT_IN_RANGE        = {2}: Error de validaci\u00f3n: Valor especificado no esta entre los valores esperados de {0} y {1}.
-jakarta.faces.validator.LongRangeValidator.NOT_IN_RANGE_detail = Error de validaci\u00f3n: Valor especificado no esta entre los valores esperados de {0} y {1}.
-jakarta.faces.validator.LongRangeValidator.TYPE        = {0}: Error de validaci\u00f3n: El valor no es del tipo correcto.
-jakarta.faces.validator.LongRangeValidator.TYPE_detail = {0}: El valor no es del tipo correcto.
-
-jakarta.faces.validator.RegexValidator.NOT_MATCHED = {1}: Error de validaci\u00f3n: El valor no est\u00e1 de acuerdo con el patr\u00f3n ''{0}''
-jakarta.faces.validator.RegexValidator.PATTERN_NOT_SET = Un patr\u00f3n debe ser establecido para validar.
-jakarta.faces.validator.RegexValidator.MATCH_EXCEPTION = El patr\u00f3n no es una expresi\u00f3n regular v\u00e1lida.
+jakarta.faces.validator.NOT_IN_RANGE = Error de validaci\u00F3n: El atributo especificado no se encuentra entre los valores esperados {0} y {1}.
+
+jakarta.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: Error de validaci\u00F3n: El valor es mayor que el m\u00E1ximo permitido de "{0}"
+jakarta.faces.validator.DoubleRangeValidator.MINIMUM = {1}: Error de validaci\u00F3n: El valor es inferior al m\u00EDnimo permitido de ''{0}''
+jakarta.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}.
+jakarta.faces.validator.DoubleRangeValidator.TYPE = {0}: Error de validaci\u00F3n: El valor no es del tipo correcto.
+
+jakarta.faces.validator.LengthValidator.MAXIMUM = {1}: Error de validaci\u00F3n: Longitud es mayor al m\u00E1ximo permitido de ''{0}''
+jakarta.faces.validator.LengthValidator.MINIMUM = {1}: Error de validaci\u00F3n: Longitud es menor al m\u00EDnimo permitido de ''{0}''
+
+jakarta.faces.validator.LongRangeValidator.MAXIMUM = {1}: Error de validaci\u00F3n: Longitud es mayor al m\u00E1ximo permitido de ''{0}''
+jakarta.faces.validator.LongRangeValidator.MINIMUM = {1}: Error de validaci\u00F3n: Longitud es menor al m\u00EDnimo permitido de ''{0}''
+jakarta.faces.validator.LongRangeValidator.NOT_IN_RANGE = {2}: Error de validaci\u00F3n: Valor especificado no esta entre los valores esperados de {0} y {1}.
+jakarta.faces.validator.LongRangeValidator.TYPE = {0}: Error de validaci\u00F3n: El valor no es del tipo correcto.
 
+jakarta.faces.validator.RegexValidator.NOT_MATCHED = {1}: Error de validaci\u00F3n: El valor no est\u00E1 de acuerdo con el patr\u00F3n ''{0}''
+jakarta.faces.validator.RegexValidator.PATTERN_NOT_SET = Un patr\u00F3n debe ser establecido para validar.
+jakarta.faces.validator.RegexValidator.MATCH_EXCEPTION = El patr\u00F3n no es una expresi\u00F3n regular v\u00E1lida.
+
+jakarta.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\u00f3n
-org.apache.myfaces.Email.INVALID_detail =El valor ({0}) no es una direcci\u00f3n de correo v\u00e1lida.
+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\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\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\u00F3n
+org.apache.myfaces.Regexpr.INVALID_detail = El valor ({0}) no es v\u00E1lido.
 
-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.Date.INVALID = Error de validaci\u00F3n
+org.apache.myfaces.Date.INVALID_detail = El valor ({0}) no es una fecha 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.ticker.NOCONNECTION = No hay conexi\u00F3n:
+org.apache.myfaces.ticker.NOCONNECTION_detail = \u00BFQuiz\u00E0 est\u00E9 detr\u00E1s de un cortafuegos?
 
-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.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.Date.INVALID = Error de validaci\u00f3n
-org.apache.myfaces.Date.INVALID_detail =El valor ({0}) no es una fecha correcta.
+org.apache.myfaces.tree2.MISSING_NODE = Nodo faltante
+org.apache.myfaces.tree2.MISSING_NODE_detail = El nodo solicitado "{0}" no existe.
 
-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.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.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.FileUpload.SIZE_LIMIT = "{0}": El archivo cargado excedi\u00F3 el tama\u00F1o m\u00E1ximo de {1} bytes.
diff --git a/api/src/main/resources/jakarta/faces/Messages_it.properties b/api/src/main/resources/jakarta/faces/Messages_it.properties
index d6ca17b..fc96b19 100644
--- a/api/src/main/resources/jakarta/faces/Messages_it.properties
+++ b/api/src/main/resources/jakarta/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
-jakarta.faces.component.UIInput.CONVERSION        = Errore di conversione
-jakarta.faces.component.UIInput.CONVERSION_detail = {0}: Errore durante l'' aggiornamento del data model
-jakarta.faces.component.UIInput.REQUIRED        = Errore di convalida
-jakarta.faces.component.UIInput.REQUIRED_detail = {0}: Il valore \u00e8 obbligatorio
-jakarta.faces.component.UIInput.UPDATE = {0}: \u00e8 verificato un errore durante l'elaborazione delle informazioni presentate.
+jakarta.faces.component.UIInput.CONVERSION = Errore di conversione
+jakarta.faces.component.UIInput.REQUIRED = {0}: Errore di convalida: Il valore \u00E8 obbligatorio
+jakarta.faces.component.UIInput.UPDATE = {0}: \u00E8 verificato un errore durante l'elaborazione delle informazioni presentate.
 
-jakarta.faces.component.UISelectOne.INVALID        = Errore di convalida
-jakarta.faces.component.UISelectOne.INVALID_detail = {0}: Opzione non valida
-jakarta.faces.component.UISelectMany.INVALID        = Errore di convalida
-jakarta.faces.component.UISelectMany.INVALID_detail = {0}: Opzione non valida
+jakarta.faces.component.UISelectOne.INVALID = {0}: Errore di convalida: Opzione non valida
+jakarta.faces.component.UISelectMany.INVALID = {0}: Errore di convalida: Opzione non valida
 
 # converters
-jakarta.faces.converter.BigDecimalConverter.DECIMAL        = Errore di conversione
-jakarta.faces.converter.BigDecimalConverter.DECIMAL_detail = Il valore specificato non \u00e8 un numero valido.
+jakarta.faces.converter.BigDecimalConverter.DECIMAL = Errore di conversione
+jakarta.faces.converter.BigDecimalConverter.DECIMAL_detail = Il valore specificato non \u00E8 un numero valido.
 
-jakarta.faces.converter.BigIntegerConverter.BIGINTEGER        = Errore di conversione
-jakarta.faces.converter.BigIntegerConverter.BIGINTEGER_detail = Il valore specificato non \u00e8 un numero valido.
+jakarta.faces.converter.BigIntegerConverter.BIGINTEGER = Errore di conversione
+jakarta.faces.converter.BigIntegerConverter.BIGINTEGER_detail = Il valore specificato non \u00E8 un numero valido.
 
-jakarta.faces.converter.BooleanConverter.BOOLEAN        = Errore di conversione
+jakarta.faces.converter.BooleanConverter.BOOLEAN = Errore di conversione
 jakarta.faces.converter.BooleanConverter.BOOLEAN_detail = Impossibile convertire '{0}' in booleano.
 
-jakarta.faces.converter.ByteConverter.BYTE        = Errore di conversione
+jakarta.faces.converter.ByteConverter.BYTE = Errore di conversione
 jakarta.faces.converter.ByteConverter.BYTE_detail = Impossibile convertire '{0}' in Byte.
 
-jakarta.faces.converter.CharacterConverter.CHARACTER        = Errore di conversione
+jakarta.faces.converter.CharacterConverter.CHARACTER = Errore di conversione
 jakarta.faces.converter.CharacterConverter.CHARACTER_detail = Impossibile convertire '{0}' in carattere.
 
 jakarta.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' non potrebbe essere inteso come una data.
@@ -49,89 +44,88 @@ jakarta.faces.converter.DateTimeConverter.TIME = {2}:''{0}'' non potrebbe essere
 jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' non potrebbe essere inteso come un tempo. Esempio: {1}
 jakarta.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' non potrebbe essere inteso come una data e ora.
 jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' non potrebbe essere inteso come una data e ora. Esempio: {1}
-jakarta.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: Un attributo 'pattern' o 'type' deve essere specificato per convertire il valore ''{0}''.
+jakarta.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: Un attributo ''pattern'' o ''type'' deve essere specificato per convertire il valore ''{0}''.
 
-jakarta.faces.converter.DoubleConverter.DOUBLE        = Errore di conversione
-jakarta.faces.converter.DoubleConverter.DOUBLE_detail = {2}: Il valore specificato non \u00e8 un numero (double) valido.
+jakarta.faces.converter.DoubleConverter.DOUBLE = Errore di conversione
+jakarta.faces.converter.DoubleConverter.DOUBLE_detail = {2}: Il valore specificato non \u00E8 un numero (double) valido.
 
 jakarta.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' deve essere convertibile in un enum.
 jakarta.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' deve essere convertibile in un enum dal enum che contiene la costante''{1}''.
 jakarta.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' deve essere convertibile in un enum dal enum, ma nessuna classe enum fornito.
 jakarta.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' deve essere convertibile in un enum dal enum, ma nessuna classe enum fornito.
 
-jakarta.faces.converter.FloatConverter.FLOAT        = Errore di conversione
-jakarta.faces.converter.FloatConverter.FLOAT_detail = {2}: Il valore specificato non \u00e8 un numero (float) valido.
+jakarta.faces.converter.FloatConverter.FLOAT = Errore di conversione
+jakarta.faces.converter.FloatConverter.FLOAT_detail = {2}: Il valore specificato non \u00E8 un numero (float) valido.
 
-jakarta.faces.converter.IntegerConverter.INTEGER        = Errore di conversione
-jakarta.faces.converter.IntegerConverter.INTEGER_detail = {2}: Il valore specificato non \u00e8 un numero intero valido.
+jakarta.faces.converter.IntegerConverter.INTEGER = Errore di conversione
+jakarta.faces.converter.IntegerConverter.INTEGER_detail = {2}: Il valore specificato non \u00E8 un numero intero valido.
 
-jakarta.faces.converter.LongConverter.LONG        = Errore di conversione
-jakarta.faces.converter.LongConverter.LONG_detail = {2}: Il valore specificato non \u00e8 un numero (long) valido.
+jakarta.faces.converter.LongConverter.LONG = Errore di conversione
+jakarta.faces.converter.LongConverter.LONG_detail = {2}: Il valore specificato non \u00E8 un numero (long) valido.
 
 jakarta.faces.converter.NumberConverter.CURRENCY = {2}:''{0}''non potrebbe essere inteso come valore di valuta.
 jakarta.faces.converter.NumberConverter.CURRENCY_detail = {2}:''{0}''non potrebbe essere inteso come valore di valuta. Esempio: {1}
 jakarta.faces.converter.NumberConverter.PERCENT = {2}:''{0}''non potrebbe essere inteso come percentuale.
 jakarta.faces.converter.NumberConverter.PERCENT_detail = {2}:''{0}''non potrebbe essere inteso come percentuale. Esempio: {1}
-jakarta.faces.converter.NumberConverter.NUMBER = {2}:''{0}''non \u00e8 un numero.
-jakarta.faces.converter.NumberConverter.NUMBER_detail = {2}:''{0}''non \u00e8 un numero. Esempio: {1}
-jakarta.faces.converter.NumberConverter.PATTERN = {2}:''{0}''non \u00e8 un modello di serie.
-jakarta.faces.converter.NumberConverter.PATTERN_detail = {2}:''{0}''non \u00e8 un modello di serie. Esempio: {1}
+jakarta.faces.converter.NumberConverter.NUMBER = {2}:''{0}''non \u00E8 un numero.
+jakarta.faces.converter.NumberConverter.NUMBER_detail = {2}:''{0}''non \u00E8 un numero. Esempio: {1}
+jakarta.faces.converter.NumberConverter.PATTERN = {2}:''{0}''non \u00E8 un modello di serie.
+jakarta.faces.converter.NumberConverter.PATTERN_detail = {2}:''{0}''non \u00E8 un modello di serie. Esempio: {1}
 
-jakarta.faces.converter.ShortConverter.SHORT        = Errore di conversione
-jakarta.faces.converter.ShortConverter.SHORT_detail = {2}: Il valore specificato non \u00e8 un numero (short) valido.
+jakarta.faces.converter.ShortConverter.SHORT = Errore di conversione
+jakarta.faces.converter.ShortConverter.SHORT_detail = {2}: Il valore specificato non \u00E8 un numero (short) valido.
 
 jakarta.faces.converter.STRING = {1}: Impossibile convertire ''{0}'' in una stringa.
 
 # validators
-jakarta.faces.validator.NOT_IN_RANGE        = Errore di convalida
-jakarta.faces.validator.NOT_IN_RANGE_detail = {2}: il valore specificato non \u00e8 compreso tra {0} e {1}.
-
-jakarta.faces.validator.DoubleRangeValidator.MAXIMUM        = Errore di convalida
-jakarta.faces.validator.DoubleRangeValidator.MAXIMUM_detail = {1}: Il valore \u00e8 superiore al massimo ammesso di ''{0}''.
-jakarta.faces.validator.DoubleRangeValidator.MINIMUM        = Errore di convalida
-jakarta.faces.validator.DoubleRangeValidator.MINIMUM_detail = {1}: Il valore \u00e8 inferiore al minimo ammesso di ''{0}''.
-jakarta.faces.validator.DoubleRangeValidator.NOT_IN_RANGE        = Errore di convalida
-jakarta.faces.validator.DoubleRangeValidator.NOT_IN_RANGE_detail = Il valore specificato non \u00e8 convertibile in un tipo appropriato.
-jakarta.faces.validator.DoubleRangeValidator.TYPE        = Errore di convalida
-jakarta.faces.validator.DoubleRangeValidator.TYPE_detail = {0}: Il valore non \u00e8 di tipo corretto.
-
-jakarta.faces.validator.LengthValidator.MAXIMUM        = Errore di convalida
-jakarta.faces.validator.LengthValidator.MAXIMUM_detail = {1}: Il valore \u00e8 pi\u00f9 lungo del massimo ammesso di {0} caratteri.
-jakarta.faces.validator.LengthValidator.MINIMUM        = Errore di convalida
-jakarta.faces.validator.LengthValidator.MINIMUM_detail = {1}: Il valore \u00e8 pi\u00f9 corto del minimo ammessi di {0} caratteri.
-
-jakarta.faces.validator.LongRangeValidator.MAXIMUM        = Errore di convalida
-jakarta.faces.validator.LongRangeValidator.MAXIMUM_detail = {1}: Il valore \u00e8 superiore al massimo ammesso di ''{0}''.
-jakarta.faces.validator.LongRangeValidator.MINIMUM        = Errore di convalida
-jakarta.faces.validator.LongRangeValidator.MINIMUM_detail = {1}: Il valore \u00e8 inferiore al minimo ammesso di ''{0}''.
-jakarta.faces.validator.LongRangeValidator.NOT_IN_RANGE        = Errore di convalida
-jakarta.faces.validator.LongRangeValidator.NOT_IN_RANGE_detail = Il valore specificato non \u00e8 convertibile in un tipo appropriato.
-jakarta.faces.validator.LongRangeValidator.TYPE        = Errore di convalida
-jakarta.faces.validator.LongRangeValidator.TYPE_detail = {0}: Il valore non \u00e8 di tipo corretto.
-
-jakarta.faces.validator.RegexValidator.NOT_MATCHED = {1}: Errore di convalida: Rapporto non secondo modello ''{0}''
+jakarta.faces.validator.NOT_IN_RANGE = {2}: Errore di convalida: Il valore specificato non \u00E8 compreso tra {0} e {1}.
 
+jakarta.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: Errore di convalida: Il valore \u00E8 superiore al massimo ammesso di ''{0}''.
+jakarta.faces.validator.DoubleRangeValidator.MINIMUM = {1}: Errore di convalida: Il valore \u00E8 inferiore al minimo ammesso di ''{0}''.
+jakarta.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Errore di convalida: Il valore specificato non \u00E8 convertibile in un tipo appropriato.
+jakarta.faces.validator.DoubleRangeValidator.TYPE = {0}: Errore di convalida: Il valore non \u00E8 di tipo corretto.
 
-# myfaces specific messages
+jakarta.faces.validator.LengthValidator.MAXIMUM = {1}: Errore di convalida: Il valore \u00E8 pi\u00F9 lungo del massimo ammesso di {0} caratteri.
+jakarta.faces.validator.LengthValidator.MINIMUM = {1}: Errore di convalida: Il valore \u00E8 pi\u00F9 corto del minimo ammessi di {0} caratteri.
+
+jakarta.faces.validator.LongRangeValidator.MAXIMUM = {1}: Errore di convalida: Il valore \u00E8 superiore al massimo ammesso di ''{0}''.
+jakarta.faces.validator.LongRangeValidator.MINIMUM = {1}: Errore di convalida: Il valore \u00E8 inferiore al minimo ammesso di ''{0}''.
+jakarta.faces.validator.LongRangeValidator.NOT_IN_RANGE = {2}: Errore di convalida: Il valore specificato non \u00E8 convertibile in un tipo appropriato.
+jakarta.faces.validator.LongRangeValidator.TYPE = {0}: Errore di convalida: Il valore non \u00E8 di tipo corretto.
+
+jakarta.faces.validator.RegexValidator.NOT_MATCHED = {1}: Rapporto non secondo modello ''{0}''
+jakarta.faces.validator.RegexValidator.PATTERN_NOT_SET = Un modello deve essere impostato per convalidare.
+jakarta.faces.validator.RegexValidator.MATCH_EXCEPTION = Il modello non \u00E8 un'espressione regolare valida.
+
+jakarta.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 \u00e8 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 \u00e8 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 \u00e8 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 \u00e8 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 \u00e8 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 \u00E8 dietro ad un firewall?
+
+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.ticker.NOCONNECTION = Nessuna connessione: 
-org.apache.myfaces.ticker.NOCONNECTION_detail = Forse si \u00e8 dietro ad un firewall ?
+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.ISBN.INVALID =Errore di convalida
-org.apache.myfaces.ISBN.INVALID_detail =Il valore ({0}) non \u00e8 un codice ISBN corretto.
+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/jakarta/faces/Messages_pt.properties b/api/src/main/resources/jakarta/faces/Messages_pt.properties
new file mode 100644
index 0000000..37b3e6c
--- /dev/null
+++ b/api/src/main/resources/jakarta/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
+jakarta.faces.component.UIInput.CONVERSION = {0}: Erro de convers\u00E3o
+jakarta.faces.component.UIInput.REQUIRED = {0}: Erro de valida\u00E7\u00E3o: Um valor \u00E9 requerido.
+jakarta.faces.component.UIInput.UPDATE = {0}: Erro ao processar a informa\u00E7\u00E3o apresentada.
+
+jakarta.faces.component.UISelectOne.INVALID = {0}: Erro de valida\u00E7\u00E3o: O valor n\u00E3o \u00E9 uma op\u00E7\u00E3o v\u00E1lida.
+jakarta.faces.component.UISelectMany.INVALID = {0}: Erro de valida\u00E7\u00E3o: O valor n\u00E3o \u00E9 uma op\u00E7\u00E3o v\u00E1lida.
+
+# converters
+jakarta.faces.converter.BigDecimalConverter.DECIMAL = {2}: Erro de convers\u00E3o
+jakarta.faces.converter.BigDecimalConverter.DECIMAL_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+jakarta.faces.converter.BigIntegerConverter.BIGINTEGER = {2}: Erro de convers\u00E3o
+jakarta.faces.converter.BigIntegerConverter.BIGINTEGER_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+jakarta.faces.converter.BooleanConverter.BOOLEAN = {1}: Erro de convers\u00E3o
+jakarta.faces.converter.BooleanConverter.BOOLEAN_detail = {1}: Imposs\u00EDvel converter ''{0}'' para Boolean.
+
+jakarta.faces.converter.ByteConverter.BYTE = {2}: Erro de convers\u00E3o
+jakarta.faces.converter.ByteConverter.BYTE_detail = {2}: Imposs\u00EDvel converter ''{0}'' para Byte.
+
+jakarta.faces.converter.CharacterConverter.CHARACTER = {1}: Erro de convers\u00E3o
+jakarta.faces.converter.CharacterConverter.CHARACTER_detail = {1}: N\u00E3o foi poss\u00EDvel converter ''{0}'' para caracter.
+
+jakarta.faces.converter.DateTimeConverter.DATE = {2}: ''{0}'' n\u00E3o pode ser entendida como uma data.
+jakarta.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como uma data. Exemplo: {1}
+jakarta.faces.converter.DateTimeConverter.TIME = {2}: ''{0}'' n\u00E3o pode ser entendida como um tempo.
+jakarta.faces.converter.DateTimeConverter.TIME_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como um tempo. Exemplo: {1}
+jakarta.faces.converter.DateTimeConverter.DATETIME = {2}: ''{0}'' n\u00E3o pode ser entendida como uma data e hora.
+jakarta.faces.converter.DateTimeConverter.DATETIME_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como uma data e hora. Exemplo: {1}
+jakarta.faces.converter.DateTimeConverter.PATTERN_TYPE = {1}: ''pattern'' ou ''type'' atributo deve ser especificado para converter o valor ''{0}''.
+
+jakarta.faces.converter.DoubleConverter.DOUBLE = {2}: Erro de convers\u00E3o
+jakarta.faces.converter.DoubleConverter.DOUBLE_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+jakarta.faces.converter.EnumConverter.ENUM = {2}: ''{0}'' deve ser convertida para um enum.
+jakarta.faces.converter.EnumConverter.ENUM_detail = {2}: ''{0}'' deve ser convers\u00EDvel para um enum do enum que cont\u00E9m a constante ''{1}''.
+jakarta.faces.converter.EnumConverter.ENUM_NO_CLASS = {1}: ''{0}'' deve ser convers\u00EDvel para um enum do enum, mas nenhuma classe enum prestados.
+jakarta.faces.converter.EnumConverter.ENUM_NO_CLASS_detail = {1}: ''{0}'' deve ser convers\u00EDvel para um enum do enum, mas nenhuma classe enum prestados.
+
+jakarta.faces.converter.FloatConverter.FLOAT = {2}: Erro de convers\u00E3o
+jakarta.faces.converter.FloatConverter.FLOAT_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+jakarta.faces.converter.IntegerConverter.INTEGER = {2}: Erro de convers\u00E3o
+jakarta.faces.converter.IntegerConverter.INTEGER_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+jakarta.faces.converter.LongConverter.LONG = {2}: Erro de convers\u00E3o
+jakarta.faces.converter.LongConverter.LONG_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+jakarta.faces.converter.NumberConverter.CURRENCY = {2}: ''{0}'' n\u00E3o pode ser entendida como um valor monet\u00E1rio.
+jakarta.faces.converter.NumberConverter.CURRENCY_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como um valor monet\u00E1rio. Exemplo: {1}
+jakarta.faces.converter.NumberConverter.PERCENT = {2}: ''{0}'' n\u00E3o pode ser entendida como uma porcentagem.
+jakarta.faces.converter.NumberConverter.PERCENT_detail = {2}: ''{0}'' n\u00E3o pode ser entendida como uma porcentagem. Exemplo: {1}
+jakarta.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' n\u00E3o \u00E9 um n\u00FAmero.
+jakarta.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' n\u00E3o \u00E9 um n\u00FAmero. Exemplo: {1}
+jakarta.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' n\u00E3o \u00E9 um padr\u00E3o de n\u00FAmero.
+jakarta.faces.converter.NumberConverter.PATTERN_detail = {2}: ''{0}'' n\u00E3o \u00E9 um padr\u00E3o de n\u00FAmero. Exemplo: {1}
+
+jakarta.faces.converter.ShortConverter.SHORT = {2}: Erro de convers\u00E3o
+jakarta.faces.converter.ShortConverter.SHORT_detail = {2}: O valor especificado n\u00E3o \u00E9 um n\u00FAmero v\u00E1lido.
+
+jakarta.faces.converter.STRING = {1}: N\u00E3o foi poss\u00EDvel converter ''{0}'' em uma sequ\u00EAncia.
+
+# validators
+jakarta.faces.validator.NOT_IN_RANGE = Erro de valida\u00E7\u00E3o: O atributo especificador n\u00E3o est\u00E1 entre os valores esperados {0} e {1}.
+
+jakarta.faces.validator.DoubleRangeValidator.MAXIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 maior que o m\u00E1ximo permitido de ''{0}''.
+jakarta.faces.validator.DoubleRangeValidator.MINIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 menor que o m\u00EDnimo permitido de ''{0}''.
+jakarta.faces.validator.DoubleRangeValidator.NOT_IN_RANGE = {2}: Erro de valida\u00E7\u00E3o: O atributo especificado n\u00E3o pode ser convertido para o tipo apropriado.
+jakarta.faces.validator.DoubleRangeValidator.TYPE = {0}: Erro de valida\u00E7\u00E3o: O valor n\u00E3o \u00E9 do tipo correto.
+
+jakarta.faces.validator.LengthValidator.MAXIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 mais longo do que o m\u00E1ximo permitido de {0} caracteres.
+jakarta.faces.validator.LengthValidator.MINIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 mais curto do que o m\u00EDnimo permitido de {0} caracteres.
+
+jakarta.faces.validator.LongRangeValidator.MAXIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 maior que o m\u00E1ximo permitido de ''{0}''.
+jakarta.faces.validator.LongRangeValidator.MINIMUM = {1}: Erro de valida\u00E7\u00E3o: O valor \u00E9 menor que o m\u00EDnimo permitido de ''{0}''.
+jakarta.faces.validator.LongRangeValidator.NOT_IN_RANGE = Erro de valida\u00E7\u00E3o: O atributo especificado n\u00E3o pode ser convertido para o tipo apropriado.
+jakarta.faces.validator.LongRangeValidator.TYPE = {0}: Erro de valida\u00E7\u00E3o: O valor n\u00E3o \u00E9 do tipo correto.
+
+jakarta.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}''
+jakarta.faces.validator.RegexValidator.PATTERN_NOT_SET = Um padr\u00E3o deve ser definido para validar.
+jakarta.faces.validator.RegexValidator.MATCH_EXCEPTION = O padr\u00E3o n\u00E3o \u00E9 uma express\u00E3o regular v\u00E1lida.
+
+jakarta.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/jakarta/faces/Messages_uk.properties b/api/src/main/resources/jakarta/faces/Messages_uk.properties
new file mode 100644
index 0000000..bb9e806
--- /dev/null
+++ b/api/src/main/resources/jakarta/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
+jakarta.faces.component.UIInput.CONVERSION = {0}: \u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0435\u0440\u0435\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F
+jakarta.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.
+jakarta.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.
+
+jakarta.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
+jakarta.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
+jakarta.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.
+jakarta.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\ [...]
+
+jakarta.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.
+jakarta.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}
+
+jakarta.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''.
+jakarta.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''.
+
+jakarta.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.
+jakarta.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}
+
+jakarta.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.
+jakarta.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.
+
+jakarta.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.
+jakarta.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}
+jakarta.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.
+jakarta.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}
+jakarta.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.
+jakarta.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}
+jakarta.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''.
+
+jakarta.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.
+jakarta.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}
+
+jakarta.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.
+jakarta.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}''.
+jakarta.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.
+jakarta.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.
+
+jakarta.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.
+jakarta.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}
+
+jakarta.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.
+jakarta.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}
+
+jakarta.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.
+jakarta.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}
+
+jakarta.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.
+jakarta.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}
+jakarta.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.
+jakarta.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}
+jakarta.faces.converter.NumberConverter.NUMBER = {2}: ''{0}'' \u043D\u0435 \u0454 \u0447\u0438\u0441\u043B\u043E\u043C.
+jakarta.faces.converter.NumberConverter.NUMBER_detail = {2}: ''{0}'' \u043D\u0435 \u0454 \u0447\u0438\u0441\u043B\u043E\u043C. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: {1}
+jakarta.faces.converter.NumberConverter.PATTERN = {2}: ''{0}'' \u043D\u0435 \u0454 \u0447\u0438\u0441\u043B\u043E\u0432\u043E\u044E \u0441\u0445\u0435\u043C\u043E\u044E.
+jakarta.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}
+
+jakarta.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.
+jakarta.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}
+
+jakarta.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
+jakarta.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}.
+
+jakarta.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}''
+jakarta.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}''
+jakarta.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}.
+jakarta.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
+
+jakarta.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}''
+jakarta.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}''
+
+jakarta.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}''
+jakarta.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}''
+jakarta.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}.
+jakarta.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.
+
+jakarta.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}''
+jakarta.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.
+jakarta.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.
+
+jakarta.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.