diff --git a/Products/validation/configure.zcml b/Products/validation/configure.zcml
new file mode 100644
index 0000000..d25397d
--- /dev/null
+++ b/Products/validation/configure.zcml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/Products/validation/locales/README.rst b/Products/validation/locales/README.rst
new file mode 100644
index 0000000..3581757
--- /dev/null
+++ b/Products/validation/locales/README.rst
@@ -0,0 +1,37 @@
+Adding and updating locales
+---------------------------
+
+For every language you want to translate into you need a
+locales/[language]/LC_MESSAGES/plone.po
+(e.g. locales/de/LC_MESSAGES/plone.po)
+
+For German
+
+.. code-block:: console
+
+ $ mkdir de
+
+For updating locales
+
+.. code-block:: console
+
+ $ ./bin/update_locale
+
+Note
+----
+
+The script uses gettext package for internationalization.
+
+Install it before running the script.
+
+On macOS
+--------
+
+.. code-block:: console
+
+ $ brew install gettext
+
+On Windows
+----------
+
+see https://mlocati.github.io/articles/gettext-iconv-windows.html
diff --git a/Products/validation/locales/bg/LC_MESSAGES/plone.po b/Products/validation/locales/bg/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..9d73065
--- /dev/null
+++ b/Products/validation/locales/bg/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Идентификатор $id вече се използва"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Интервалите не са разрешени във идентификаторите"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Проверката е неуспешна($name): $value от тип $type, очаква се 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Проверката е неуспешна($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Проверката е неуспешна($name): '$value' не е празно."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Проверката е неуспешна($name): '$value' извън диапазон($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Проверката е неуспешна($name): '$value' не може да се преобразува в дата."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Проверката е неуспешна($name): '$value' не може да се преубразува в число"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Проверката е неуспешна($name): стойността е празна ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Проверката е неуспешна($name): Качения файл е прекалено голям: ${size}MB (максимум ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "съдържа символи, които не могат да бъдат отпечатани"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "не е десетично число."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "не е валиден email адрес."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "не е валиден международен телефонен номер"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "не е валиден url."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "не е валиден американски телефонен номер."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "не е валиден зип код."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr ""
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "не е цяло число."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "това не е валиден идентификатор"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr ""
diff --git a/Products/validation/locales/ca/LC_MESSAGES/plone.po b/Products/validation/locales/ca/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..b7ba85b
--- /dev/null
+++ b/Products/validation/locales/ca/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "L'Id $id ja s'està utilitzant"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "No es permeten espais en blanc per als ids"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Ha fallat la validació($name): $value del tipus $type, s'esperava 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Ha fallat la validació($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Ha fallat la validació($name): '$value' no és buit."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Ha fallat la validació($name): '$value' fora de rang($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Ha fallat la validació($name): no es pot convertir $value a una data."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Ha fallat la validació($name): no es pot convertir '$value' a un número"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Ha fallat la validació($name): el valor és buit ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Ha fallat la validació($name: La informació que s'ha carregat és massa gran ${size}MB (màx. ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "conté caràcters no imprimibles"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "no és un número decimal."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "no és una adreça de correu vàlida."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "no és un número de telèfon internacional vàlid."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "no és un url vàlid."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "no és un número de telèfon vàlid."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "no és un codi postal vàlid."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "no és un SSN ben format."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "no és un enter."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "aquest nom no és un identificador vàlid"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "ha fallat la validació, l'expressió era:$expr"
diff --git a/Products/validation/locales/cs/LC_MESSAGES/plone.po b/Products/validation/locales/cs/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..dadfdad
--- /dev/null
+++ b/Products/validation/locales/cs/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "ID $id je již použito"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "V ID nejsou povoleny mezery"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Chyba validace($name): $value je typu $type ale je očekáván 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Chyba validace($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Chyba validace($name): '$value' není prázdná."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Chyba validace($name): '$value' je mimo rozsah ($min, $max)."
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Chyba validace($name): nelze převést '$value' na datum."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Chyba validace($name): nelze převést '$value' na číslo."
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Chyba validace($name): Hodnota je prázdná ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Chyba validace($name): Nahraná data jsou příliš velká: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "obsahuje netisknutelné znaky"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "není dekadické číslo."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "není platná emailová adresa."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "není platné telefonní číslo v mezinárodním formátu."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "není platná adresa url."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "není platné US telefonní číslo."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "není platné směrovací číslo."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "není platné číslo formátu SSN."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "není celé číslo."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "tento název není platný identifikátor"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "validace se nezdařila, výraz byl: $expr"
diff --git a/Products/validation/locales/da/LC_MESSAGES/plone.po b/Products/validation/locales/da/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..37488a7
--- /dev/null
+++ b/Products/validation/locales/da/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id ${id} er allerede i brug"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Mellemrum er ikke tilladt i id'er"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validering fejlede ($name): $value of type $type, expected 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validering fejlede ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validation failed($name): '$value' is not empty."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validation failed($name): '$value' out of range($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validation failed($name): could not convert $value to a date."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validation failed($name): could not convert '$value' to number"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validation failed($name): value is empty ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "indeholder tegn som ikke kan printes"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "er ikke et decimaltal"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "er ikke en gyldig email-adresse"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "er ikke et gyldigt internationalt tlfnr."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "er ikke en gyldig url"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "er ikke et gyldigt us tlfnr."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "er ikke en gyldig zip-kode."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "er ikke et velformet SSN (social security number)"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "er ikke et heltal"
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "Navnet er ikke en gyldig identifikator"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "Validering fejlede, expr was:$expr"
diff --git a/Products/validation/locales/de/LC_MESSAGES/plone.po b/Products/validation/locales/de/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..83e9e43
--- /dev/null
+++ b/Products/validation/locales/de/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Die ID $id wird bereits genutzt"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Leerzeichen sind in IDs nicht erlaubt"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validierung fehlgeschlagen ($name): $value des Typs $type, erwartet eine Zeichenkette."
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validierung fehlgeschlagen ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validierung fehlgeschlagen ($name): '$value' ist nicht leer."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validierung fehlgeschlagen($name): '$value' außerhalb von ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validierung fehlgeschlagen($name): konnte $value nicht in ein Datum konvertieren."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validierung fehlgeschlafen($name): konnte '$value' nicht in eine Zahl konvertieren."
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validierung fehlgeschlagen ($name): Wert ($value) ist leer."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validierung fehlgeschlagen($name: Hochgeladene Daten sind zu groß: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "enthält nicht druckbare Zeichen"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "ist keine Dezimalzahl"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "ist keine gültige E-Mail-Adresse"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "Ist keine gültige internationale Telefonnummer"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "ist keine gültige URL"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "ist keine gültige US-Telefonnummer"
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "ist keine gültige Postleitzahl"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "keine gültige Sozialversicherungsnummer"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "keine Ganzzahl."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "Dieser Name ist keine gültige ID"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "Validierung fehlgeschlagen, Ausdruck war: $expr"
diff --git a/Products/validation/locales/eo/LC_MESSAGES/plone.po b/Products/validation/locales/eo/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..a36927f
--- /dev/null
+++ b/Products/validation/locales/eo/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Identigilo $id estas jam uzata"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Interspacoj ne estas permesitaj en identigiloj"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validigo ne funkciis ($name): $value de tipo $type ekspektas 'signovico'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validigo ne funkciis ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validigo ne funkciis ($name): '$value' ne estas malplena."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validigo ne funkciis ($name): '$value' ne estas en intervalo ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validigo ne funkciis ($name): ne eblis konverti $value en daton."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validigo ne funkciis ($name): ne eblis konverti $value en nombron"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validigo ne funkciis ($name): valoro estas malplena ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validigo ne funkciis ($name): Alŝutita datumkvanto estas tro granda: ${size} MB (maksimume ${max} MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "enhavas neprinteblajn literoj"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "ne estas dekuma numero."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "ne estas valida retpoŝtadreso."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "ne estas valida internacia telefonnumero."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "ne estas valida URL."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "ne estas valida usona telefonnumero."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "ne estas valida ZIP-kodo."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "ne estas bone formita SSN."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "ne estas entjero."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "tiu nomo ne estas valida identigilo"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "validigo fiaskis, esprimo estis: $expr"
diff --git a/Products/validation/locales/es/LC_MESSAGES/plone.po b/Products/validation/locales/es/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..3e73e74
--- /dev/null
+++ b/Products/validation/locales/es/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "El id $id ya está en uso"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "No se permite espacios en los ids"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Fallo en la validación($name): $value de tipo $type, se esperaba 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Fallo en la validación($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Fallo en la validación($name): '$value' no está vacío."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Fallo en la validación($name): '$value' fuera de rango($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Fallo en la validación($name): no se ha podido convertir $value a una fecha."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Fallo en la validación($name): no se ha podido convertir '$value' a número"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Fallo en la validación($name): el valor está vacío ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Fallo en la validación($name: Los datos subidos son demasiado grandes: ${size}MB (máx. ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "contiene caracteres no imprimibles"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "no es un número decimal."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "no es una dirección de correo válida."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "no es un número de teléfono internacional válido."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "no es un url válido."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "no es un número de teléfono local válido."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "no es un código postal válido."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "no es un SSN bien formado."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "no es un entero."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "este nombre no es un identificador válido"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "la validación ha fallado, la expresión fue:$expr"
diff --git a/Products/validation/locales/eu/LC_MESSAGES/plone.po b/Products/validation/locales/eu/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..b37360e
--- /dev/null
+++ b/Products/validation/locales/eu/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "$id identifikadorea erabilita dago jadanik"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Identifikadoreetan ezin dira espazioak erabili"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Balidazioak huts egin du ($name): $value balioa $type motakoa da eta karaktere kate bat espero zen"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Balidazioak huts egin du ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Balidazioak huts egin du ($name): '$value' ez da hutsa."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Balidazioak huts egin du ($name): '$value' ez dago ($min, $max) tartean"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Balidazioak huts egin du ($name): $value ezin da data formatura bihurtu"
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Balidazioak huts egin du ($name): '$value' ezin da zenbaki formatura bihurtu"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Balidazioak huts egin du ($name): balioa ezin da hutsa izan ($value)"
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Balidazioak huts egin du: ($name: kargatutako fitxategia handiegia da: ${size} MB (gehienezko muga ${max} MB))"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "Inprimatu ezin diren karaktereak ditu"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "Ez da zenbaki dezimala"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "Ez da baliozko e-posta helbidea"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "Ez da baliozko nazioarteko telefono zenbakia"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "Ez da baliozko web helbide bat"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "Ez da AEBko telefono zenbaki bat"
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "Ez da AEBko posta kode bat"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "Ez da baliozko SSN zenbakia"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "Ez da zenbakia"
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "Izen hau ez da baliozko identifikadore bat"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "Balidazioak huts egin du, espresioa hauxe izan da: $expr"
diff --git a/Products/validation/locales/fi/LC_MESSAGES/plone.po b/Products/validation/locales/fi/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..cf21759
--- /dev/null
+++ b/Products/validation/locales/fi/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Tunniste $id on jo käytössä"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Välilyönnit eivät ole sallittu tunnisteissa"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validointi epäonnistui($name): tyypin $type arvo $value, odotettiin merkkijonoa"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validointi epäonnistui($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validointi epäonnistui($name): '$value' ei ole tyhjä."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validointi epäonnistui($name): '$value' raja-arvojen ulkopuolella ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validointi epäonnistui($name): ei voi kääntää $value päivämääräksi."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validointi epäonnistui($name): ei voinut kääntää '$value' numeroksi"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validointi epäonnistui($name): value on tyhjä ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validointi epäonnistui($name): palvelimelle kopioitu tiedosto on liian suuri: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "sisältää tulostuskelvottomia merkkejä"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "ei ole murtoluku."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "ei ole kelvollinen sähköpostiosoite."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "ei ole kelvollinen kansainvälinen puhelinnumero."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "ei ole kelvollinen url."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "ei ole kelvollinen yhdysvaltojen puhelinnumero."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "ei ole kelvollinen postiosoite."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "ei ole kelvollinen hetu."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "ei ole kokonaisluku."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "tämä nimi ei ole kelvollinen tunniste"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "kelvollisuustarkistus epäonnistui, expr oli:$expr"
diff --git a/Products/validation/locales/fr/LC_MESSAGES/plone.po b/Products/validation/locales/fr/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..974fad2
--- /dev/null
+++ b/Products/validation/locales/fr/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "L'id $id est déjà utilisé."
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Les espaces ne sont pas autorisées dans les ids."
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "La validation a échoué ($name) : $value de type $type, attendu « string »."
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "La validation a échoué ($name) : « $value » $errmsg."
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "La validation a échoué ($name) : « $value » n'est pas vide."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "La validation a échoué ($name) : « $value » hors de l'intervalle ($min, $max)."
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "La validation a échoué ($name) : n'a pu convertir $value en une date."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "La validation a échoué ($name) : n'a pu convertir « $value » en nombre."
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "La validation a échoué ($name) : la valeur est vide ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "La validation a échoué ($name) : les données téléversées sur le serveur sont trop volumineuses : ${size}Mo (max ${max}Mo)."
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "contient des caractères non imprimables."
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "n'est pas un nombre décimal."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "n'est pas une adresse courriel valide."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "n'est pas un numéro de téléphone international valide."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "n'est pas une url valide."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "n'est pas un numéro de téléphone états-unien valide."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "n'est pas un code postal valide."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "n'est pas un SSN bien formé."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "n'est pas un entier."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "Ce nom n'est pas un identifiant valide."
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "La validation a échoué, l'expression était : $expr."
diff --git a/Products/validation/locales/hi/LC_MESSAGES/plone.po b/Products/validation/locales/hi/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..d480559
--- /dev/null
+++ b/Products/validation/locales/hi/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "आईडी $id पहले से ही उपयोग में है"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "आईडी में अंतरिक्ष अनुमत नहीं हैं"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "मान्यीकरण असफल ($name): $value प्रकार $type, 'स्ट्रिंग' की अपेक्षा"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "मान्यीकरण असफल ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "मान्यीकरण असफल ($name): '$value' खाली नहीं है।"
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "मान्यीकरण असफल ($name): '$value' सीमा से बाहर ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "मान्यीकरण असफल ($name): $value को तारीख में परिवर्तित नहीं किया जा सका।"
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "मान्यीकरण असफल ($name): '$value' को संख्या में परिवर्तित नहीं किया जा सका"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "मान्यीकरण असफल ($name): मान खाली है ($value)।"
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "मान्यीकरण असफल ($name: अपलोड किए गए डेटा बहुत बड़ा है: ${size}MB (अधिकतम ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "अप्रिंटेबल अक्षरों को समाहित करता है"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "एक दशमलव संख्या नहीं है।"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "एक मान्य ईमेल पता नहीं है।"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "एक मान्य अंतर्राष्ट्रीय फोन नंबर नहीं है।"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "एक मान्य यूआरएल नहीं है।"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "एक मान्य यूएस फोन नंबर नहीं है।"
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "एक मान्य ज़िप कोड नहीं है।"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "एक अच्छी तरह से निर्मित एसएसएन नहीं है।"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "एक पूर्णांक नहीं है।"
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "यह नाम एक वैध पहचानकर्ता नहीं है"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "सत्यापन विफल रहा, expr था:$expr"
diff --git a/Products/validation/locales/id/LC_MESSAGES/plone.po b/Products/validation/locales/id/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..bca9716
--- /dev/null
+++ b/Products/validation/locales/id/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id $id telah digunakan"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Tidak boleh menggunakan spasi dalam id"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validasi gagal($ame): $value dari tipe $type, seharusnya berupa huruf/string"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validasi gagal ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validasi gagal($name): '$value' tidak kosong."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validasi gagal($name): '$value' diluar rentang yang seharusnya ($min,$max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validasi gagal($name): tidak bisa mengubah $value menjadi bentuk tanggal."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validasi gagal($name): tidak bisa mengubah '$value' menjadi angka"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validasi gagal($name): nilai kosong ($value)"
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validasi gagal($name): Data yang diunggah terlalu besar ${size}MB (maksimal ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "Berisi karakter yg tidak bisa di print"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "bukan bilangan desimal"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "bukan alamat email yang benar"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "bukan nomor telepon internasional yang benar"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "bukan alamat url yang benar"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "bukan nomor telepon US yang benar"
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "bukan kodepos yang benar"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "bukan format SSN yang benar"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "bukan intenger"
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "nama ini bukan nama pengenal yang valid"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr ""
diff --git a/Products/validation/locales/it/LC_MESSAGES/plone.po b/Products/validation/locales/it/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..49f54eb
--- /dev/null
+++ b/Products/validation/locales/it/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id $id già in uso"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Non sono consentiti spazi negli id"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validazione fallita($name): \"$value\" di tipo $type invece che \"string\""
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validazione fallita($name): \"$value\" $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validazione fallita($name): \"$value\" non è vuoto"
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validazione fallita($name): \"$value\" fuori dall'intervallo ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validazione fallita($name): impossibile convertire \"$value\" in una data"
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validazione fallita($name): impossibile convertire \"$value\" in un numero"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validazione fallita($name): il valore è vuoto ($value)"
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validazione fallita($name): dimensione eccessiva: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "contiene caratteri non stampabili"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "non è un numero decimale."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "non è un indirizzo e-mail valido."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "non è un numero telefonico internazionale."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "non è un URL valido."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "non è un numero telefonico statunitense."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "non è un codice postale valido."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "non è un numero SSN corretto."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "non è un numero intero."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "questo nome non è un identificatore valido"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "validazione fallita, expr: $expr"
diff --git a/Products/validation/locales/ja/LC_MESSAGES/plone.po b/Products/validation/locales/ja/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..6f24356
--- /dev/null
+++ b/Products/validation/locales/ja/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "ID $id はすでに使われています"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "ID内にスペースは許されません"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "バリデーション失敗($name): $type タイプの値 $value は 'string' が期待されます"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "バリデーション失敗($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "バリデーション失敗($name): 値 '$value' が空ではありません"
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "バリデーション失敗($name): 値 '$value' は ($min, $max) の範囲外です"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "バリデーション失敗($name): 値 $value を日付に変換できません"
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "バリデーション失敗($name): 値 '$value' を数値に変換できません"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "バリデーション失敗($name): 値が空です ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "バリデーション失敗($name: アップロードされたデータが大きすぎます: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "プリントできない文字を含んでいます"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "十進数ではありません"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "有効なメールアドレスではありません"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "有効な国際電話番号ではありません"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "有効なURLではありません"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "有効なUS 電話番号ではありません"
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "有効なUS ZIPコードではありません"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "適格な US SSN ではありません"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "整数ではありません"
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "この名前は有効な識別子ではありません"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "バリデーションに失敗しました。exprは次のものです: $expr"
diff --git a/Products/validation/locales/nl/LC_MESSAGES/plone.po b/Products/validation/locales/nl/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..57baff3
--- /dev/null
+++ b/Products/validation/locales/nl/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Het id $id is al in gebruik"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Spaties zijn in id's niet toegestaan"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validatie mislukt ($name): $value van type $type, 'string' verwacht"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validatie mislukt ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validatie mislukt ($name): '$value' is niet leeg."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validatie mislukt ($name): '$value' valt buiten de reeks ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validatie mislukt ($name): kan $value niet naar een datum omzetten."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validatie mislukt ($name): kan '$value' niet naar een getal omzetten."
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validatie mislukt ($name): waarde is leeg."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validatie mislukt ($name): Geuploade bestand is te groot: ${size}MB. Maximale bestandsgrootte: ${max}MB"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "bevat niet af te drukken karakters"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "is geen getal."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "is geen geldig e-mailadres."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "is geen geldig internationaal telefoonnummer."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "is geen geldig internetadres."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "is geen geldig Amerikaans telefoonnummer."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "is geen geldige postcode."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "is geen geldig BSN."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "is geen geldig geheel getal."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "deze naam is ongeldig"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "Validatie mislukt, expr was '$expr'"
diff --git a/Products/validation/locales/no/LC_MESSAGES/plone.po b/Products/validation/locales/no/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..0ff7246
--- /dev/null
+++ b/Products/validation/locales/no/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Identifikatoren $id er allerede i bruk"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Mellomrom er ikke tillatt i identifikatorer"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validering feilet ($name): $value av type $type, forventet 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validering feilet ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validering feilet ($name): '$value' er ikke tom."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validering feilet ($name): '$value' ikke i området ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validering feilet($name): kunne ikke konvertere $value til en dato."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validering feilet($name): kunne ikke konvertere '$value' til et tall"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validering feilet($name): verdien er tom ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validering feilet($name: Opplastede data er for store: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "inneholder ikke-synlige tegn"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "er ikke et desimaltall"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "er ikke en gyldig epostadresse"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "er ikke et gyldig internasjonalt telefonnummer"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "er ikke en gyldig url"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "er ikke et gyldig telefonnummer"
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "er ikke et gyldig postnummer"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "er ikke et (amerikansk) personnummer (social security number)"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "er ikke et heltall"
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "Dette navnet er ikke en gyldig"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "Validering feilet. Uttrykket brukt var: $expr"
diff --git a/Products/validation/locales/pl/LC_MESSAGES/plone.po b/Products/validation/locales/pl/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..3b690c9
--- /dev/null
+++ b/Products/validation/locales/pl/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id $id jest już używane"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Spacje nie są tu dopuszczalne."
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Błąd walidacji($name): $value jest typu $type, a powinna być 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Błąd walidacji($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Błąd walidacji($name): '$value' nie jest pusta."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Błąd walidacji($name): '$value' ma wartość spoza zakresu ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Błąd walidacji($name): nie można dokonać konwersji $value na datę."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Błąd walidacji($name): nie można dokonać konwersji $value na liczbę."
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Błąd walidacji($name): wartość jest pusta ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Błąd walidacji($name): Wysłany plik jest zbyt duży: ${size}MB (maksymalnie ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "Zawiera znaki niemożliwe do wydrukowania"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "nie jest liczbą dziesiętną"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "niepoprawny adres email"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "niepoprawny międzynarodowy numer telefonu"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "niepoprawny URL"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "niepoprawny numer telefonu"
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "niepoprawny kod pocztowy"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "nie jest poprawnym numerem SSN."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "nie jest liczbą naturalną."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "ta nazwa nie jest poprawnych identyfikatorem"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "błąd walidacji, wyrażenie: $expr"
diff --git a/Products/validation/locales/plone.pot b/Products/validation/locales/plone.pot
new file mode 100644
index 0000000..bc873de
--- /dev/null
+++ b/Products/validation/locales/plone.pot
@@ -0,0 +1,102 @@
+#--- PLEASE EDIT THE LINES BELOW CORRECTLY ---
+#SOME DESCRIPTIVE TITLE.
+#FIRST AUTHOR , YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: plone\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr ""
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr ""
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr ""
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr ""
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr ""
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr ""
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr ""
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr ""
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr ""
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr ""
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr ""
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr ""
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr ""
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr ""
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr ""
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr ""
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr ""
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr ""
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr ""
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr ""
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr ""
diff --git a/Products/validation/locales/pt/LC_MESSAGES/plone.po b/Products/validation/locales/pt/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..b2fef93
--- /dev/null
+++ b/Products/validation/locales/pt/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "O identificador $id já está a ser utilizado"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Espaços não são permitidos nos identificadores."
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Erro de validação($name): $value é do tipo $type, esperado 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Erro de validação($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Erro de validação($name): '$value' não é vazio."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Erro de validação($name): '$value' está fora dos limites ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Erro de validação($name): não foi possível converter $value numa data."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Erro de validação($name): não foi possível converter $value num número"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Erro de validação($name): valor é vazio ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Erro de validação($name: Conteúdo carregado demasiado grande: ${size}MB (máximo ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "contém caracteres impossíveis de imprimir"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "não é um número decimal válido."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "não é um endereço de email válido."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "não é um número de telefone internacional válido."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "não é um URL válido."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "não é um número de telefone válido nos EUA."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "não é um código postal válido."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "não é um SSN bem construído."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "não é um inteiro."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "Este nome não é um identificador válido"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "erro de validação, a expressão foi:$expr"
diff --git a/Products/validation/locales/pt_BR/LC_MESSAGES/plone.po b/Products/validation/locales/pt_BR/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..689d65a
--- /dev/null
+++ b/Products/validation/locales/pt_BR/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "O nome curto $id já está em uso"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Espaços não são permitidos nos nomes curtos"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Falhou a validação($name): $value o tipo $type, esperado 'texto'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Falhou a validação($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Falhou a validação($name): '$value' não é vazio."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Falhou a validação($name): '$value' fora dos limites($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Falhou a validação($name): Não foi possível converter '$value' para data."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Falhou a validação($name): Não foi possível converter '$value'para número"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Falhou a validação($name): Valor vazio($value)"
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Falhou a validação($name): Dados enviados são muito grandes ${size}MB (máx ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "contém caracteres não imprimíveis"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "não é um número decimal."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "não é um endereço de email válido."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "não é um número de telefone internacional válido."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "não é uma url válida."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "não é um número de telefone americano válido."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "não é um zip code válido."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "não é um SSN bem formado."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "não é um número inteiro."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "este nome não é um identificador válido"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "falha na validação, a expressão era: $expr"
diff --git a/Products/validation/locales/ro/LC_MESSAGES/plone.po b/Products/validation/locales/ro/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..d42cb97
--- /dev/null
+++ b/Products/validation/locales/ro/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id-ul $id este deja în folosință"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Spațiile nu sunt permise în ID-uri"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validarea câmpului($name): $value de tipul $type, asteptăm 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validare eșuată($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validare eșuată($name): '$value' nu este goală."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validare eșuată($name): '$value' afară din gamă ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validare eșuată($name): nu am putut converti $value într-o dată."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validare eșuată($name): nu am putut converti '$value' într-un număr"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validare eșuată($name): valoarea este goală ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validare eșuată($name): Fișierul este prea mare: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "conţine caractere care nu pot fi afişate"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "nu este un număr zecimal."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "nu este o adresă de e-mail validă."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "nu este un număr de telefon internaţional valid"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "nu este un URL valid."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "nu este un număr american valid."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "nu este un cod poştal valid."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "nu este un SSN bine format"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "nu este un întreg."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "acest nume nu este un identificator valid"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "validare eșuată, expresia a fost:$expr"
diff --git a/Products/validation/locales/ru/LC_MESSAGES/plone.po b/Products/validation/locales/ru/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..f2e7c73
--- /dev/null
+++ b/Products/validation/locales/ru/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Идентификатор $id уже используется"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "В идентификаторе нельзя использовать пробелы."
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Проверка ($name) не пройдена: $value типа $type, должна быть 'строковой'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Проверка ($name) не пройдена: '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Проверка ($name) не пройдена: '$value' не пустое."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Проверка ($name) не пройдена: '$value' не в допуске($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Проверка ($name) не пройдена: $value не сконвертировать в дату."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Проверка ($name) не пройдена: $value не сконвертировать в число."
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Проверка ($name) не пройдена: значение $value пусто."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Проверка не пройдена($name: Объем загруженных данных слишком велик: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "содержит символы, которые не печатаются"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "не десятичное число"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "не верный адрес электронной почты."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "не верный формат международного телефонного номера."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "не верный адрес (url)."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "не верный формат телефонного номера."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "не верный формат индекса."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "не верный SSN."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "не целое число."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "это название не подходит, как идетнификатор"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "Проверка не прошла: $expr"
diff --git a/Products/validation/locales/sk/LC_MESSAGES/plone.po b/Products/validation/locales/sk/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..2c2ba9f
--- /dev/null
+++ b/Products/validation/locales/sk/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id $id sa už používa"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "V ID nie sú povolené medzery"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validácia zlyhala($name): $value typu $type, musí byť reťazec, 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validácia zlyhala($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validácia zlyhala($name): '$value' nie je prázdna."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validácia zlyhala($name): '$value' je mimo rozsah($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validácia zlyhala($name): $value sa nedá konvertovať na dátum."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validácia zlyhala($name): '$value' sa nedá konvertovať na číslo"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validácia zlyhala($name): prázdna hodnota ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validácia zlyhala($name): Priveľké množstvo dát: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "obsahuje netlačiteľné znaky"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "nie je desatinné číslo."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "nie je platná e-mail adresa."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "nie je platné medzinárodné tel. číslo."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "nie je platná URL adresa."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "nie je platné US tel. číslo."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "nie je platné PSČ."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "nie je správne vytvorené SSN."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "nie je celé číslo."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "tento názov nie je platný identifikátor"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "validácia zlyhala, výraz:$expr"
diff --git a/Products/validation/locales/sl/LC_MESSAGES/plone.po b/Products/validation/locales/sl/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..7813c36
--- /dev/null
+++ b/Products/validation/locales/sl/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id $id je že v rabi"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Presledki niso dovoljeni v identifikatorjih"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Preverjanje ni uspelo ($name): $value tipa $type, pričakovan je bil 'niz'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Preverjanje ni uspelo ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Preverjanje ni uspelo ($name): '$value' ni prazno."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Preverjanje ni uspelo ($name): '$value' izven obsega ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Preverjanje ni uspelo ($name): ne morem spremeniti vrednosti $value v datum."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Preverjanje ni uspelo ($name): ne morem spremeniti vrednosti $value v število."
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Preverjanje ni uspelo ($name): vrednost je prazna ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Preverjanje ni uspelo ($name: Oddanih podatkov je preveč: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "vsebuje znake, ki se jih ne da natisniti"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "ni decimalno število."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "ni veljaven naslov elektronske pošte."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "ni veljavna mednarodna telefonska številka."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "ni veljaven spletni naslov."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "ni veljavna telefonska številka v ZDA."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "ni veljavna poštna številka."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "ni pravilno oblikovana koda SSN."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "ni celo število."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "to ime ni veljaven identifikator"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "vejavnost ni potrjena, uporabljen izraz je bil: $expr"
diff --git a/Products/validation/locales/sv/LC_MESSAGES/plone.po b/Products/validation/locales/sv/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..1f1d985
--- /dev/null
+++ b/Products/validation/locales/sv/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id $id används redan"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Blanksteg ej tillåtet i id"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Validering misslyckades ($name): $value har typen $type, 'string' förväntades"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Validering misslyckades ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Validering misslyckades ($name): '$value' är ej tom."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Validering misslyckades ($name): '$value' utanför intervallet ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Validering misslyckades ($name): kunde ej konvertera $value till ett datum."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Validering misslyckades ($name): kunde ej konvertera '$value' till ett tal"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Validering misslyckades ($name): värdet är tomt ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Validering misslyckades ($name: För mycket data uppladdat: ${size}MB (max. ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "innehåller ej skrivbara tecken"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "är ej ett decimalt tal."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "är ej en giltig epost-adress."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "är ej ett giltigt internationellt telefonnummer."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "är ej en giltig url."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "är ej ett giltigt telefonnummer."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "är ej ett giltigt postnummer."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "är ej ett välformat SSN."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "är ej ett heltal."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "detta namn är ej en giltig identifierare"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "validering misslyckades:$expr"
diff --git a/Products/validation/locales/tr/LC_MESSAGES/plone.po b/Products/validation/locales/tr/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..c4443c1
--- /dev/null
+++ b/Products/validation/locales/tr/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "$id kimliği zaten kullanılıyor"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Kimliklerde boşluğa izin yok"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Denetim başarısız oldu($name): $value $type değil 'string' tipinden olmalıydı"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Denetim başarısız oldu($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Denetim başarısız oldu($name): '$value' boş değil."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Denetim başarısız oldu($name): '$value' ($min, $max) aralığında değil."
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Denetim başarısız oldu($name): $value bir tarih değerine çevrilemedi."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Denetim başarısız oldu($name): '$value' bir sayı değerine çevrilemedi."
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Denetim başarısız oldu($name): '$value' boş."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Denetim başarısız oldu($name: Yüklenen veri çok büyük: ${size}MB (en fazla ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "içinde basılamaz karakterler var"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "ondalık bir sayı değil."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "geçerli bir e-posta adresi değil."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "geçerli bir uluslararası telefon numarası değil."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "geçerli bir URL adresi değil."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "geçerli bir ABD telefon numarası değil."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "geçerli bir posta kodu değil."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "geçerli bir SSN (sosyal güvenlik numarası) değil."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "bir tam sayı değil."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "bu isim geçerli bir kimlik değil"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "denetim başarısız oldu, expr:$expr"
diff --git a/Products/validation/locales/uk/LC_MESSAGES/plone.po b/Products/validation/locales/uk/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..d89329b
--- /dev/null
+++ b/Products/validation/locales/uk/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Таке $id вже використовується"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Пробіли недопустимі в ids"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Перевірка не вдалася($name): $value типу $type, очікувалось 'стрічка'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Помилка перевірки($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Помилка перевірки($name): '$value' не є порожнім."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Перевірка не вдалася($name): '$value' виходить за межі діапазону($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Помилка перевірки($name): неможливо перетворити $value на дату."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Помилка перевірки($name): неможливо перетворити $value на число."
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Помилка перевірки($name): '$value' є порожнім."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Помилка перевірки($name: Завелика кількість завантажених даних: ${size}MB (max ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "містить символи, які неможливо надрукувати"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "не є десятковим числом."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "не є дійсною адресою електронної пошти."
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "не є дійсним міжнародним телефонним номером."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "не є дійсним URL."
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "не є дійсним телефонним номером."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "не є дійсним індексом."
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "не є добре сформованим SSN."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "не є цілим числом."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "це ім'я не є коректним ідентифікатором"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "перевірка невдала, вираз такий:$expr"
diff --git a/Products/validation/locales/update.sh b/Products/validation/locales/update.sh
new file mode 100755
index 0000000..263f950
--- /dev/null
+++ b/Products/validation/locales/update.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# i18ndude should be available in current $PATH (eg by running
+# ``export PATH=$PATH:$BUILDOUT_DIR/bin`` when i18ndude is located in your buildout's bin directory)
+#
+# For every language you want to translate into you need a
+# locales/[language]/LC_MESSAGES/plone.po
+# (e.g. locales/de/LC_MESSAGES/plone.po)
+
+domain=plone
+
+i18ndude rebuild-pot --pot $domain.pot --create $domain ../ --exclude="*.html"
+
+i18ndude sync --pot $domain.pot */LC_MESSAGES/$domain.po
diff --git a/Products/validation/locales/vi/LC_MESSAGES/plone.po b/Products/validation/locales/vi/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..2894d34
--- /dev/null
+++ b/Products/validation/locales/vi/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id $id đang được sử dụng"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "Id không được chứa khoảng trắng"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "Xác thực thất bại ($name): $value thuộc kiểu $type, yêu cầu phải là kiểu chuỗi"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "Xác thực thất bại ($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "Xác thực thất bại ($name): '$value' không rỗng."
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "Xác thực thất bại ($name): '$value' nằm ngoài giới hạn ($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "Xác thực thất bại ($name): không thể chuyển giá trị $value sang ngày tháng."
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "Xác thực thất bại ($name): không thể chuyển giá trị '$value' sang số"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "Xác thực thất bại ($name): giá trị rỗng ($value)."
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "Xác thực thất bại ($name: Dữ liệu tải lên quá lớn: ${size}MB (tối đa ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "có chứa các ký tự không thể hiển thị ra được"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "không phải là số thập phân."
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "không phải là địa chỉ thư điện tử hợp lệ"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "không phải là số điện thoại quốc tế hợp lệ."
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "không phải là url hợp lệ"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "không phải là số điện thoại của Mỹ hợp lệ."
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "không phải là zip code hợp lệ"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "không phải là số SSN đúng định dạng."
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "không phải là số nguyên."
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "đây không phải là một định danh hợp lệ"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "xác thực thất bại, thông điệp trả về: $expr"
diff --git a/Products/validation/locales/zh_CN/LC_MESSAGES/plone.po b/Products/validation/locales/zh_CN/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..e09e857
--- /dev/null
+++ b/Products/validation/locales/zh_CN/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "Id $id 已经被占用"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "id 里不允许出现空格"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "($name) 验证失败:类型 $type 的 $value(值)期望 'string'"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "($name) 验证失败:'$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "($name) 验证失败:'$value' 非空。"
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "($name) 验证失败:'$value' 超出范围($min, $max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "($name) 验证失败:不能转换 $value 到日期。"
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "($name) 验证失败:不能转换 '$value' 到数字"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "($name) 验证失败:($value) 是空的。"
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "验证失败($name: 上传的数据太大: ${size}MB (最大 ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "包含不可打印的字符"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "不是10进制数。"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "不是有效的 Email 地址。"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "不是有效的电话号码。"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "不是有效的 url。"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "不是有效的美国电话号码。"
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "不是有效的邮政编码。"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "不是有效的SSN。"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "不是一个整数。"
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "这个名称不是有效的标识符"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "验证失败,表达式是:$expr"
diff --git a/Products/validation/locales/zh_TW/LC_MESSAGES/plone.po b/Products/validation/locales/zh_TW/LC_MESSAGES/plone.po
new file mode 100644
index 0000000..d366063
--- /dev/null
+++ b/Products/validation/locales/zh_TW/LC_MESSAGES/plone.po
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-08-18 09:06+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../validators/IdValidator.py:26
+msgid "Id $id is already in use"
+msgstr "辨別碼 $id 已被使用"
+
+#: ../validators/IdValidator.py:17
+msgid "Spaces are not allowed in ids"
+msgstr "空白不允許在 Id 中使用"
+
+#: ../validators/RegexValidator.py:46
+msgid "Validation failed($name): $value of type $type, expected 'string'"
+msgstr "檢核失敗($name): 型別 $type 的資料 $value, 預期為「字串」"
+
+#: ../validators/RegexValidator.py:65
+msgid "Validation failed($name): '$value' $errmsg"
+msgstr "檢核失敗($name): '$value' $errmsg"
+
+#: ../validators/EmptyValidator.py:45
+msgid "Validation failed($name): '$value' is not empty."
+msgstr "檢核失敗($name): '$value' 不是空的。"
+
+#: ../validators/RangeValidator.py:41
+msgid "Validation failed($name): '$value' out of range($min, $max)"
+msgstr "檢核失敗($name): '$value' 超過範圍($min,$max)"
+
+#: ../validators/SupplValidators.py:103
+msgid "Validation failed($name): could not convert $value to a date."
+msgstr "檢核失敗($name): $value 無法轉為日期"
+
+#: ../validators/RangeValidator.py:33
+msgid "Validation failed($name): could not convert '$value' to number"
+msgstr "檢核失敗($name): $value 無法轉為數值"
+
+#: ../validators/SupplValidators.py:94
+msgid "Validation failed($name): value is empty ($value)."
+msgstr "檢核失敗($name): 資料是空的($value)。"
+
+#: ../validators/SupplValidators.py:71
+msgid "Validation failed($name: Uploaded data is too large: ${size}MB (max ${max}MB)"
+msgstr "檢核失敗($name): 上傳資料太大: ${size}MB (最大 ${max}MB)"
+
+#: ../validators/BaseValidators.py:51
+msgid "contains unprintable characters"
+msgstr "含有無法列印的字元"
+
+#: ../validators/BaseValidators.py:37
+msgid "is not a decimal number."
+msgstr "不是一個十進位數值。"
+
+#: ../validators/BaseValidators.py:95
+msgid "is not a valid email address."
+msgstr "不是一個正確的電子郵件地址。"
+
+#: ../validators/BaseValidators.py:74
+msgid "is not a valid international phone number."
+msgstr "不是一個正確的國際電話號碼。"
+
+#: ../validators/BaseValidators.py:88
+msgid "is not a valid url."
+msgstr "不是一個正確的網址。"
+
+#: ../validators/BaseValidators.py:66
+msgid "is not a valid us phone number."
+msgstr "不是一個正確的美國電話號碼。"
+
+#: ../validators/BaseValidators.py:81
+msgid "is not a valid zip code."
+msgstr "不是一個正確的郵遞區號。"
+
+#: ../validators/BaseValidators.py:58
+msgid "is not a well formed SSN."
+msgstr "不是一個正確的 SSN。"
+
+#: ../validators/BaseValidators.py:44
+msgid "is not an integer."
+msgstr "不是一個整數。"
+
+#: ../validators/BaseValidators.py:109
+msgid "this name is not a valid identifier"
+msgstr "這名稱不是正確的Id"
+
+#: ../validators/ExpressionValidator.py:94
+msgid "validation failed, expr was:$expr"
+msgstr "檢核失敗,表示式為: $expr"
diff --git a/news/11.feature b/news/11.feature
new file mode 100644
index 0000000..c365ef2
--- /dev/null
+++ b/news/11.feature
@@ -0,0 +1,2 @@
+Move translations from plone.app.locales to here
+[erral]