Internationalization
The @nhtio/validation library patches internationalization functionality into the standard Joi validation schema, allowing you to automatically hook into your application's internationalization functionality.
To define your application's internationalization functionality, you can use:
$setI18nto define the internationalization functionality for the validator instance$clearI18nto clear the internationalization functionality and return to default English messages
Translations are resolved when validation errors are rendered, for all schemas: those built before or after $setI18n, nested schemas, and decoded schemas. Switching the callback or calling $clearI18n affects existing schemas on their next validation. Schema factories are never replaced, and translations are never included in describe() or encode() output. Explicit user messages take precedence over the translator. A throwing callback, a non-string result, or an invalid message template falls back to the built-in default message.
For example:
// Set up Spanish translations
validator.$setI18n((term: string) => {
const translations = {
'string.base': 'debe ser una cadena de texto',
'string.min': 'debe tener al menos {{#limit}} caracteres',
'number.base': 'debe ser un número',
'any.required': 'es requerido'
}
return translations[term] || term
})
// All schemas, including ones built earlier, now report errors in Spanish
const userSchema = validator.object({
name: validator.string().min(3).required(),
age: validator.number().required()
})
// These schemas also resolve translations at validation time
const stringSchema = validator.string().min(5)
const phoneSchema = validator.phone().country('ES')
// You can clear the i18n functionality to return to English
validator.$clearI18n()
// All schemas now report errors in default English again
const englishSchema = validator.string().required()Terms for Translation
The following is a list of terms which can be translated:
| Term | Default Message |
|---|---|
alternatives.all | {{#label}} does not match all of the required types |
alternatives.any | {{#label}} does not match any of the allowed types |
alternatives.match | {{#label}} does not match any of the allowed types |
alternatives.one | {{#label}} matches more than one allowed type |
alternatives.types | {{#label}} must be one of {{#types}} |
any.custom | {{#label}} failed custom validation because {{#error.message}} |
any.default | {{#label}} threw an error when running default method |
any.failover | {{#label}} threw an error when running failover method |
any.invalid | {{#label}} contains an invalid value |
any.only | {{#label}} must be {if(#valids.length == 1, "", "one of ")}{{#valids}} |
any.ref | {{#label}} {{#arg}} references {{:#ref}} which {{#reason}} |
any.required | {{#label}} is required |
any.unknown | {{#label}} is not allowed |
array.base | {{#label}} must be an array |
array.excludes | {{#label}} contains an excluded value |
array.hasKnown | {{#label}} does not contain at least one required match for type {:#patternLabel} |
array.hasUnknown | {{#label}} does not contain at least one required match |
array.includes | {{#label}} does not match any of the allowed types |
array.includesRequiredBoth | {{#label}} does not contain {{#knownMisses}} and {{#unknownMisses}} other required value(s) |
array.includesRequiredKnowns | {{#label}} does not contain {{#knownMisses}} |
array.includesRequiredUnknowns | {{#label}} does not contain {{#unknownMisses}} required value(s) |
array.length | {{#label}} must contain {{#limit}} items |
array.max | {{#label}} must contain less than or equal to {{#limit}} items |
array.min | {{#label}} must contain at least {{#limit}} items |
array.orderedLength | {{#label}} must contain at most {{#limit}} items |
array.sort | {{#label}} must be sorted in {#order} order by {{#by}} |
array.sort.mismatching | {{#label}} cannot be sorted due to mismatching types |
array.sort.unsupported | {{#label}} cannot be sorted due to unsupported type {#type} |
array.sparse | {{#label}} must not be a sparse array item |
array.unique | {{#label}} contains a duplicate value |
boolean.base | {{#label}} must be a boolean |
date.base | {{#label}} must be a valid date |
date.format | {{#label}} must be in {msg("date.format." + #format) || #format} format |
date.greater | {{#label}} must be greater than {{:#limit}} |
date.less | {{#label}} must be less than {{:#limit}} |
date.max | {{#label}} must be less than or equal to {{:#limit}} |
date.min | {{#label}} must be greater than or equal to {{:#limit}} |
date.format.iso | ISO 8601 date |
date.format.javascript | timestamp or number of milliseconds |
date.format.unix | timestamp or number of seconds |
function.arity | {{#label}} must have an arity of {{#n}} |
function.class | {{#label}} must be a class |
function.maxArity | {{#label}} must have an arity lesser or equal to {{#n}} |
function.minArity | {{#label}} must have an arity greater or equal to {{#n}} |
number.base | {{#label}} must be a number |
number.greater | {{#label}} must be greater than {{#limit}} |
number.infinity | {{#label}} cannot be infinity |
number.integer | {{#label}} must be an integer |
number.less | {{#label}} must be less than {{#limit}} |
number.max | {{#label}} must be less than or equal to {{#limit}} |
number.min | {{#label}} must be greater than or equal to {{#limit}} |
number.multiple | {{#label}} must be a multiple of {{#multiple}} |
number.negative | {{#label}} must be a negative number |
number.port | {{#label}} must be a valid port |
number.positive | {{#label}} must be a positive number |
number.precision | {{#label}} must have no more than {{#limit}} decimal places |
number.unsafe | {{#label}} must be a safe number |
object.and | {{#label}} contains {{#presentWithLabels}} without its required peers {{#missingWithLabels}} |
object.assert | {{#label}} is invalid because {if(#subject.key, `"` + #subject.key + `" failed to ` + (#message || "pass the assertion test"), #message || "the assertion failed")} |
object.base | {{#label}} must be of type {{#type}} |
object.instance | {{#label}} must be an instance of {{:#type}} |
object.length | {{#label}} must have {{#limit}} key{if(#limit == 1, "", "s")} |
object.max | {{#label}} must have less than or equal to {{#limit}} key{if(#limit == 1, "", "s")} |
object.min | {{#label}} must have at least {{#limit}} key{if(#limit == 1, "", "s")} |
object.missing | {{#label}} must contain at least one of {{#peersWithLabels}} |
object.nand | {{:#mainWithLabel}} must not exist simultaneously with {{#peersWithLabels}} |
object.oxor | {{#label}} contains a conflict between optional exclusive peers {{#peersWithLabels}} |
object.pattern.match | {{#label}} keys failed to match pattern requirements |
object.refType | {{#label}} must be a Joi reference |
object.regex | {{#label}} must be a RegExp object |
object.rename.multiple | {{#label}} cannot rename {{:#from}} because multiple renames are disabled and another key was already renamed to {{:#to}} |
object.rename.override | {{#label}} cannot rename {{:#from}} because override is disabled and target {{:#to}} exists |
object.schema | {{#label}} must be a Joi schema of {{#type}} type |
object.unknown | {{#label}} is not allowed |
object.with | {{:#mainWithLabel}} missing required peer {{:#peerWithLabel}} |
object.without | {{:#mainWithLabel}} conflict with forbidden peer {{:#peerWithLabel}} |
object.xor | {{#label}} contains a conflict between exclusive peers {{#peersWithLabels}} |
string.alphanum | {{#label}} must only contain alpha-numeric characters |
string.base | {{#label}} must be a string |
string.base64 | {{#label}} must be a valid base64 string |
string.creditCard | {{#label}} must be a credit card |
string.dataUri | {{#label}} must be a valid dataUri string |
string.domain | {{#label}} must contain a valid domain name |
string.email | {{#label}} must be a valid email |
string.empty | {{#label}} is not allowed to be empty |
string.guid | {{#label}} must be a valid GUID |
string.hex | {{#label}} must only contain hexadecimal characters |
string.hexAlign | {{#label}} hex decoded representation must be byte aligned |
string.hostname | {{#label}} must be a valid hostname |
string.ip | {{#label}} must be a valid ip address with a {{#cidr}} CIDR |
string.ipVersion | {{#label}} must be a valid ip address of one of the following versions {{#version}} with a {{#cidr}} CIDR |
string.isoDate | {{#label}} must be in iso format |
string.isoDuration | {{#label}} must be a valid ISO 8601 duration |
string.length | {{#label}} length must be {{#limit}} characters long |
string.lowercase | {{#label}} must only contain lowercase characters |
string.max | {{#label}} length must be less than or equal to {{#limit}} characters long |
string.min | {{#label}} length must be at least {{#limit}} characters long |
string.normalize | {{#label}} must be unicode normalized in the {{#form}} form |
string.token | {{#label}} must only contain alpha-numeric and underscore characters |
string.pattern.base | {{#label}} with value {:[.]} fails to match the required pattern: {{#regex}} |
string.pattern.name | {{#label}} with value {:[.]} fails to match the {{#name}} pattern |
string.pattern.invert.base | {{#label}} with value {:[.]} matches the inverted pattern: {{#regex}} |
string.pattern.invert.name | {{#label}} with value {:[.]} matches the inverted {{#name}} pattern |
string.trim | {{#label}} must not have leading or trailing whitespace |
string.uri | {{#label}} must be a valid uri |
string.uriCustomScheme | {{#label}} must be a valid uri with a scheme matching the {{#scheme}} pattern |
string.uriRelativeOnly | {{#label}} must be a valid relative uri |
string.uppercase | {{#label}} must only contain uppercase characters |
string.fqdn | {{#label}} must be a valid fully qualified domain name |
symbol.base | {{#label}} must be a symbol |
symbol.map | {{#label}} must be one of {{#map}} |
binary.base | {{#label}} must be a buffer or a string |
binary.length | {{#label}} must be {{#limit}} bytes |
binary.max | {{#label}} must be less than or equal to {{#limit}} bytes |
binary.min | {{#label}} must be at least {{#limit}} bytes |
bigint.base | "{{#label}}" must be a valid bigint |
bigint.greater | "{{#label}}" must be greater than {{#limit}} |
bigint.less | "{{#label}}" must be less than {{#limit}} |
bigint.max | "{{#label}}" must be less than or equal to {{#limit}} |
bigint.min | "{{#label}}" must be greater than or equal to {{#limit}} |
bigint.multiple | "{{#label}}" must be a multiple of {{#limit}} |
bigint.negative | "{{#label}}" must be a negative bigint |
bigint.positive | "{{#label}}" must be a positive bigint |
datetime.base | {{#label}} must be a datetime value |
datetime.exactly | {{#label}} must be a datetime exactly equal to {{#limit}} |
datetime.equals | {{#label}} must be a datetime equal to {{#limit}} |
datetime.after | {{#label}} must be a datetime after {{#limit}} |
datetime.greater | {{#label}} must be a datetime after {{#limit}} |
datetime.before | {{#label}} must be a datetime before {{#limit}} |
datetime.less | {{#label}} must be a datetime before {{#limit}} |
datetime.afterOrEqual | {{#label}} must be a datetime after or equal to {{#limit}} |
datetime.min | {{#label}} must be a datetime after or equal to {{#limit}} |
datetime.beforeOrEqual | {{#label}} must be a datetime before or equal to {{#limit}} |
datetime.max | {{#label}} must be a datetime before or equal to {{#limit}} |
datetime.weekend | {{#label}} is not a weekend |
datetime.weekday | {{#label}} is not a weekday |
phone.base | {{#label}} must be a phone number |
phone.invalid | {{#label}} must be a valid phone number for {{#country}} |
phone.fixedLine | {{#label}} must be a fixed line number for {{#country}} |
phone.mobile | {{#label}} must be a mobile number for {{#country}} |
phone.strictFixedLine | {{#label}} is not a fixed line number for {{#country}} |
phone.strictMobile | {{#label}} is not a mobile number for {{#country}} |
phone.fixedLineOrMobile | {{#label}} must be a fixed line or mobile number for {{#country}} |
phone.tollFree | {{#label}} must be a toll-free number for {{#country}} |
phone.premiumRate | {{#label}} must be a premium rate number for {{#country}} |
phone.sharedCost | {{#label}} must be a shared cost number for {{#country}} |
phone.voip | {{#label}} must be a VoIP number for {{#country}} |
phone.personalNumber | {{#label}} must be a personal number for {{#country}} |
phone.pager | {{#label}} must be a pager number for {{#country}} |
phone.uan | {{#label}} must be a UAN number for {{#country}} |
phone.voicemail | {{#label}} must be a voicemail number for {{#country}} |
phone.unknown | {{#label}} must be an unknown type number for {{#country}} |
phone.types | {{#label}} must be one of the specified phone types for {{#country}} |
country.AD | Andorra |
country.AE | United Arab Emirates |
country.AF | Afghanistan |
country.AG | Antigua and Barbuda |
country.AI | Anguilla |
country.AL | Albania |
country.AM | Armenia |
country.AO | Angola |
country.AQ | Antarctica |
country.AR | Argentina |
country.AS | American Samoa |
country.AT | Austria |
country.AU | Australia |
country.AW | Aruba |
country.AX | Aland Islands |
country.AZ | Azerbaijan |
country.BA | Bosnia and Herzegovina |
country.BB | Barbados |
country.BD | Bangladesh |
country.BE | Belgium |
country.BF | Burkina Faso |
country.BG | Bulgaria |
country.BH | Bahrain |
country.BI | Burundi |
country.BJ | Benin |
country.BL | Saint Barthelemy |
country.BM | Bermuda |
country.BN | Brunei |
country.BO | Bolivia |
country.BQ | Bonaire, Saint Eustatius and Saba |
country.BR | Brazil |
country.BS | Bahamas |
country.BT | Bhutan |
country.BV | Bouvet Island |
country.BW | Botswana |
country.BY | Belarus |
country.BZ | Belize |
country.CA | Canada |
country.CC | Cocos Islands |
country.CD | Democratic Republic of the Congo |
country.CF | Central African Republic |
country.CG | Republic of the Congo |
country.CH | Switzerland |
country.CI | Ivory Coast |
country.CK | Cook Islands |
country.CL | Chile |
country.CM | Cameroon |
country.CN | China |
country.CO | Colombia |
country.CR | Costa Rica |
country.CU | Cuba |
country.CV | Cape Verde |
country.CW | Curacao |
country.CX | Christmas Island |
country.CY | Cyprus |
country.CZ | Czech Republic |
country.DE | Germany |
country.DJ | Djibouti |
country.DK | Denmark |
country.DM | Dominica |
country.DO | Dominican Republic |
country.DZ | Algeria |
country.EC | Ecuador |
country.EE | Estonia |
country.EG | Egypt |
country.EH | Western Sahara |
country.ER | Eritrea |
country.ES | Spain |
country.ET | Ethiopia |
country.FI | Finland |
country.FJ | Fiji |
country.FK | Falkland Islands |
country.FM | Micronesia |
country.FO | Faroe Islands |
country.FR | France |
country.GA | Gabon |
country.GB | United Kingdom |
country.GD | Grenada |
country.GE | Georgia |
country.GF | French Guiana |
country.GG | Guernsey |
country.GH | Ghana |
country.GI | Gibraltar |
country.GL | Greenland |
country.GM | Gambia |
country.GN | Guinea |
country.GP | Guadeloupe |
country.GQ | Equatorial Guinea |
country.GR | Greece |
country.GS | South Georgia and the South Sandwich Islands |
country.GT | Guatemala |
country.GU | Guam |
country.GW | Guinea-Bissau |
country.GY | Guyana |
country.HK | Hong Kong |
country.HM | Heard Island and McDonald Islands |
country.HN | Honduras |
country.HR | Croatia |
country.HT | Haiti |
country.HU | Hungary |
country.ID | Indonesia |
country.IE | Ireland |
country.IL | Israel |
country.IM | Isle of Man |
country.IN | India |
country.IO | British Indian Ocean Territory |
country.IQ | Iraq |
country.IR | Iran |
country.IS | Iceland |
country.IT | Italy |
country.JE | Jersey |
country.JM | Jamaica |
country.JO | Jordan |
country.JP | Japan |
country.KE | Kenya |
country.KG | Kyrgyzstan |
country.KH | Cambodia |
country.KI | Kiribati |
country.KM | Comoros |
country.KN | Saint Kitts and Nevis |
country.KP | North Korea |
country.KR | South Korea |
country.KW | Kuwait |
country.KY | Cayman Islands |
country.KZ | Kazakhstan |
country.LA | Laos |
country.LB | Lebanon |
country.LC | Saint Lucia |
country.LI | Liechtenstein |
country.LK | Sri Lanka |
country.LR | Liberia |
country.LS | Lesotho |
country.LT | Lithuania |
country.LU | Luxembourg |
country.LV | Latvia |
country.LY | Libya |
country.MA | Morocco |
country.MC | Monaco |
country.MD | Moldova |
country.ME | Montenegro |
country.MF | Saint Martin |
country.MG | Madagascar |
country.MH | Marshall Islands |
country.MK | Macedonia |
country.ML | Mali |
country.MM | Myanmar |
country.MN | Mongolia |
country.MO | Macao |
country.MP | Northern Mariana Islands |
country.MQ | Martinique |
country.MR | Mauritania |
country.MS | Montserrat |
country.MT | Malta |
country.MU | Mauritius |
country.MV | Maldives |
country.MW | Malawi |
country.MX | Mexico |
country.MY | Malaysia |
country.MZ | Mozambique |
country.NA | Namibia |
country.NC | New Caledonia |
country.NE | Niger |
country.NF | Norfolk Island |
country.NG | Nigeria |
country.NI | Nicaragua |
country.NL | Netherlands |
country.NO | Norway |
country.NP | Nepal |
country.NR | Nauru |
country.NU | Niue |
country.NZ | New Zealand |
country.OM | Oman |
country.PA | Panama |
country.PE | Peru |
country.PF | French Polynesia |
country.PG | Papua New Guinea |
country.PH | Philippines |
country.PK | Pakistan |
country.PL | Poland |
country.PM | Saint Pierre and Miquelon |
country.PN | Pitcairn |
country.PR | Puerto Rico |
country.PS | Palestinian Territory |
country.PT | Portugal |
country.PW | Palau |
country.PY | Paraguay |
country.QA | Qatar |
country.RE | Reunion |
country.RO | Romania |
country.RS | Serbia |
country.RU | Russia |
country.RW | Rwanda |
country.SA | Saudi Arabia |
country.SB | Solomon Islands |
country.SC | Seychelles |
country.SD | Sudan |
country.SE | Sweden |
country.SG | Singapore |
country.SH | Saint Helena |
country.SI | Slovenia |
country.SJ | Svalbard and Jan Mayen |
country.SK | Slovakia |
country.SL | Sierra Leone |
country.SM | San Marino |
country.SN | Senegal |
country.SO | Somalia |
country.SR | Suriname |
country.SS | South Sudan |
country.ST | Sao Tome and Principe |
country.SV | El Salvador |
country.SX | Sint Maarten |
country.SY | Syria |
country.SZ | Swaziland |
country.TC | Turks and Caicos Islands |
country.TD | Chad |
country.TF | French Southern Territories |
country.TG | Togo |
country.TH | Thailand |
country.TJ | Tajikistan |
country.TK | Tokelau |
country.TL | East Timor |
country.TM | Turkmenistan |
country.TN | Tunisia |
country.TO | Tonga |
country.TR | Turkey |
country.TT | Trinidad and Tobago |
country.TV | Tuvalu |
country.TW | Taiwan |
country.TZ | Tanzania |
country.UA | Ukraine |
country.UG | Uganda |
country.UM | United States Minor Outlying Islands |
country.US | United States |
country.UY | Uruguay |
country.UZ | Uzbekistan |
country.VA | Vatican |
country.VC | Saint Vincent and the Grenadines |
country.VE | Venezuela |
country.VG | British Virgin Islands |
country.VI | U.S. Virgin Islands |
country.VN | Vietnam |
country.VU | Vanuatu |
country.WF | Wallis and Futuna |
country.WS | Samoa |
country.XK | Kosovo |
country.YE | Yemen |
country.YT | Mayotte |
country.ZA | South Africa |
country.ZM | Zambia |
country.ZW | Zimbabwe |
As JSON
{
"alternatives.all": "{{#label}} does not match all of the required types",
"alternatives.any": "{{#label}} does not match any of the allowed types",
"alternatives.match": "{{#label}} does not match any of the allowed types",
"alternatives.one": "{{#label}} matches more than one allowed type",
"alternatives.types": "{{#label}} must be one of {{#types}}",
"any.custom": "{{#label}} failed custom validation because {{#error.message}}",
"any.default": "{{#label}} threw an error when running default method",
"any.failover": "{{#label}} threw an error when running failover method",
"any.invalid": "{{#label}} contains an invalid value",
"any.only": "{{#label}} must be {if(#valids.length == 1, \"\", \"one of \")}{{#valids}}",
"any.ref": "{{#label}} {{#arg}} references {{:#ref}} which {{#reason}}",
"any.required": "{{#label}} is required",
"any.unknown": "{{#label}} is not allowed",
"array.base": "{{#label}} must be an array",
"array.excludes": "{{#label}} contains an excluded value",
"array.hasKnown": "{{#label}} does not contain at least one required match for type {:#patternLabel}",
"array.hasUnknown": "{{#label}} does not contain at least one required match",
"array.includes": "{{#label}} does not match any of the allowed types",
"array.includesRequiredBoth": "{{#label}} does not contain {{#knownMisses}} and {{#unknownMisses}} other required value(s)",
"array.includesRequiredKnowns": "{{#label}} does not contain {{#knownMisses}}",
"array.includesRequiredUnknowns": "{{#label}} does not contain {{#unknownMisses}} required value(s)",
"array.length": "{{#label}} must contain {{#limit}} items",
"array.max": "{{#label}} must contain less than or equal to {{#limit}} items",
"array.min": "{{#label}} must contain at least {{#limit}} items",
"array.orderedLength": "{{#label}} must contain at most {{#limit}} items",
"array.sort": "{{#label}} must be sorted in {#order} order by {{#by}}",
"array.sort.mismatching": "{{#label}} cannot be sorted due to mismatching types",
"array.sort.unsupported": "{{#label}} cannot be sorted due to unsupported type {#type}",
"array.sparse": "{{#label}} must not be a sparse array item",
"array.unique": "{{#label}} contains a duplicate value",
"boolean.base": "{{#label}} must be a boolean",
"date.base": "{{#label}} must be a valid date",
"date.format": "{{#label}} must be in {msg(\"date.format.\" + #format) || #format} format",
"date.greater": "{{#label}} must be greater than {{:#limit}}",
"date.less": "{{#label}} must be less than {{:#limit}}",
"date.max": "{{#label}} must be less than or equal to {{:#limit}}",
"date.min": "{{#label}} must be greater than or equal to {{:#limit}}",
"date.format.iso": "ISO 8601 date",
"date.format.javascript": "timestamp or number of milliseconds",
"date.format.unix": "timestamp or number of seconds",
"function.arity": "{{#label}} must have an arity of {{#n}}",
"function.class": "{{#label}} must be a class",
"function.maxArity": "{{#label}} must have an arity lesser or equal to {{#n}}",
"function.minArity": "{{#label}} must have an arity greater or equal to {{#n}}",
"number.base": "{{#label}} must be a number",
"number.greater": "{{#label}} must be greater than {{#limit}}",
"number.infinity": "{{#label}} cannot be infinity",
"number.integer": "{{#label}} must be an integer",
"number.less": "{{#label}} must be less than {{#limit}}",
"number.max": "{{#label}} must be less than or equal to {{#limit}}",
"number.min": "{{#label}} must be greater than or equal to {{#limit}}",
"number.multiple": "{{#label}} must be a multiple of {{#multiple}}",
"number.negative": "{{#label}} must be a negative number",
"number.port": "{{#label}} must be a valid port",
"number.positive": "{{#label}} must be a positive number",
"number.precision": "{{#label}} must have no more than {{#limit}} decimal places",
"number.unsafe": "{{#label}} must be a safe number",
"object.and": "{{#label}} contains {{#presentWithLabels}} without its required peers {{#missingWithLabels}}",
"object.assert": "{{#label}} is invalid because {if(#subject.key, `\"` + #subject.key + `\" failed to ` + (#message || \"pass the assertion test\"), #message || \"the assertion failed\")}",
"object.base": "{{#label}} must be of type {{#type}}",
"object.instance": "{{#label}} must be an instance of {{:#type}}",
"object.length": "{{#label}} must have {{#limit}} key{if(#limit == 1, \"\", \"s\")}",
"object.max": "{{#label}} must have less than or equal to {{#limit}} key{if(#limit == 1, \"\", \"s\")}",
"object.min": "{{#label}} must have at least {{#limit}} key{if(#limit == 1, \"\", \"s\")}",
"object.missing": "{{#label}} must contain at least one of {{#peersWithLabels}}",
"object.nand": "{{:#mainWithLabel}} must not exist simultaneously with {{#peersWithLabels}}",
"object.oxor": "{{#label}} contains a conflict between optional exclusive peers {{#peersWithLabels}}",
"object.pattern.match": "{{#label}} keys failed to match pattern requirements",
"object.refType": "{{#label}} must be a Joi reference",
"object.regex": "{{#label}} must be a RegExp object",
"object.rename.multiple": "{{#label}} cannot rename {{:#from}} because multiple renames are disabled and another key was already renamed to {{:#to}}",
"object.rename.override": "{{#label}} cannot rename {{:#from}} because override is disabled and target {{:#to}} exists",
"object.schema": "{{#label}} must be a Joi schema of {{#type}} type",
"object.unknown": "{{#label}} is not allowed",
"object.with": "{{:#mainWithLabel}} missing required peer {{:#peerWithLabel}}",
"object.without": "{{:#mainWithLabel}} conflict with forbidden peer {{:#peerWithLabel}}",
"object.xor": "{{#label}} contains a conflict between exclusive peers {{#peersWithLabels}}",
"string.alphanum": "{{#label}} must only contain alpha-numeric characters",
"string.base": "{{#label}} must be a string",
"string.base64": "{{#label}} must be a valid base64 string",
"string.creditCard": "{{#label}} must be a credit card",
"string.dataUri": "{{#label}} must be a valid dataUri string",
"string.domain": "{{#label}} must contain a valid domain name",
"string.email": "{{#label}} must be a valid email",
"string.empty": "{{#label}} is not allowed to be empty",
"string.guid": "{{#label}} must be a valid GUID",
"string.hex": "{{#label}} must only contain hexadecimal characters",
"string.hexAlign": "{{#label}} hex decoded representation must be byte aligned",
"string.hostname": "{{#label}} must be a valid hostname",
"string.ip": "{{#label}} must be a valid ip address with a {{#cidr}} CIDR",
"string.ipVersion": "{{#label}} must be a valid ip address of one of the following versions {{#version}} with a {{#cidr}} CIDR",
"string.isoDate": "{{#label}} must be in iso format",
"string.isoDuration": "{{#label}} must be a valid ISO 8601 duration",
"string.length": "{{#label}} length must be {{#limit}} characters long",
"string.lowercase": "{{#label}} must only contain lowercase characters",
"string.max": "{{#label}} length must be less than or equal to {{#limit}} characters long",
"string.min": "{{#label}} length must be at least {{#limit}} characters long",
"string.normalize": "{{#label}} must be unicode normalized in the {{#form}} form",
"string.token": "{{#label}} must only contain alpha-numeric and underscore characters",
"string.pattern.base": "{{#label}} with value {:[.]} fails to match the required pattern: {{#regex}}",
"string.pattern.name": "{{#label}} with value {:[.]} fails to match the {{#name}} pattern",
"string.pattern.invert.base": "{{#label}} with value {:[.]} matches the inverted pattern: {{#regex}}",
"string.pattern.invert.name": "{{#label}} with value {:[.]} matches the inverted {{#name}} pattern",
"string.trim": "{{#label}} must not have leading or trailing whitespace",
"string.uri": "{{#label}} must be a valid uri",
"string.uriCustomScheme": "{{#label}} must be a valid uri with a scheme matching the {{#scheme}} pattern",
"string.uriRelativeOnly": "{{#label}} must be a valid relative uri",
"string.uppercase": "{{#label}} must only contain uppercase characters",
"string.fqdn": "{{#label}} must be a valid fully qualified domain name",
"symbol.base": "{{#label}} must be a symbol",
"symbol.map": "{{#label}} must be one of {{#map}}",
"binary.base": "{{#label}} must be a buffer or a string",
"binary.length": "{{#label}} must be {{#limit}} bytes",
"binary.max": "{{#label}} must be less than or equal to {{#limit}} bytes",
"binary.min": "{{#label}} must be at least {{#limit}} bytes",
"bigint.base": "\"{{#label}}\" must be a valid bigint",
"bigint.greater": "\"{{#label}}\" must be greater than {{#limit}}",
"bigint.less": "\"{{#label}}\" must be less than {{#limit}}",
"bigint.max": "\"{{#label}}\" must be less than or equal to {{#limit}}",
"bigint.min": "\"{{#label}}\" must be greater than or equal to {{#limit}}",
"bigint.multiple": "\"{{#label}}\" must be a multiple of {{#limit}}",
"bigint.negative": "\"{{#label}}\" must be a negative bigint",
"bigint.positive": "\"{{#label}}\" must be a positive bigint",
"datetime.base": "{{#label}} must be a datetime value",
"datetime.exactly": "{{#label}} must be a datetime exactly equal to {{#limit}}",
"datetime.equals": "{{#label}} must be a datetime equal to {{#limit}}",
"datetime.after": "{{#label}} must be a datetime after {{#limit}}",
"datetime.greater": "{{#label}} must be a datetime after {{#limit}}",
"datetime.before": "{{#label}} must be a datetime before {{#limit}}",
"datetime.less": "{{#label}} must be a datetime before {{#limit}}",
"datetime.afterOrEqual": "{{#label}} must be a datetime after or equal to {{#limit}}",
"datetime.min": "{{#label}} must be a datetime after or equal to {{#limit}}",
"datetime.beforeOrEqual": "{{#label}} must be a datetime before or equal to {{#limit}}",
"datetime.max": "{{#label}} must be a datetime before or equal to {{#limit}}",
"datetime.weekend": "{{#label}} is not a weekend",
"datetime.weekday": "{{#label}} is not a weekday",
"phone.base": "{{#label}} must be a phone number",
"phone.invalid": "{{#label}} must be a valid phone number for {{#country}}",
"phone.fixedLine": "{{#label}} must be a fixed line number for {{#country}}",
"phone.mobile": "{{#label}} must be a mobile number for {{#country}}",
"phone.strictFixedLine": "{{#label}} is not a fixed line number for {{#country}}",
"phone.strictMobile": "{{#label}} is not a mobile number for {{#country}}",
"phone.fixedLineOrMobile": "{{#label}} must be a fixed line or mobile number for {{#country}}",
"phone.tollFree": "{{#label}} must be a toll-free number for {{#country}}",
"phone.premiumRate": "{{#label}} must be a premium rate number for {{#country}}",
"phone.sharedCost": "{{#label}} must be a shared cost number for {{#country}}",
"phone.voip": "{{#label}} must be a VoIP number for {{#country}}",
"phone.personalNumber": "{{#label}} must be a personal number for {{#country}}",
"phone.pager": "{{#label}} must be a pager number for {{#country}}",
"phone.uan": "{{#label}} must be a UAN number for {{#country}}",
"phone.voicemail": "{{#label}} must be a voicemail number for {{#country}}",
"phone.unknown": "{{#label}} must be an unknown type number for {{#country}}",
"phone.types": "{{#label}} must be one of the specified phone types for {{#country}}",
"country.AD": "Andorra",
"country.AE": "United Arab Emirates",
"country.AF": "Afghanistan",
"country.AG": "Antigua and Barbuda",
"country.AI": "Anguilla",
"country.AL": "Albania",
"country.AM": "Armenia",
"country.AO": "Angola",
"country.AQ": "Antarctica",
"country.AR": "Argentina",
"country.AS": "American Samoa",
"country.AT": "Austria",
"country.AU": "Australia",
"country.AW": "Aruba",
"country.AX": "Aland Islands",
"country.AZ": "Azerbaijan",
"country.BA": "Bosnia and Herzegovina",
"country.BB": "Barbados",
"country.BD": "Bangladesh",
"country.BE": "Belgium",
"country.BF": "Burkina Faso",
"country.BG": "Bulgaria",
"country.BH": "Bahrain",
"country.BI": "Burundi",
"country.BJ": "Benin",
"country.BL": "Saint Barthelemy",
"country.BM": "Bermuda",
"country.BN": "Brunei",
"country.BO": "Bolivia",
"country.BQ": "Bonaire, Saint Eustatius and Saba",
"country.BR": "Brazil",
"country.BS": "Bahamas",
"country.BT": "Bhutan",
"country.BV": "Bouvet Island",
"country.BW": "Botswana",
"country.BY": "Belarus",
"country.BZ": "Belize",
"country.CA": "Canada",
"country.CC": "Cocos Islands",
"country.CD": "Democratic Republic of the Congo",
"country.CF": "Central African Republic",
"country.CG": "Republic of the Congo",
"country.CH": "Switzerland",
"country.CI": "Ivory Coast",
"country.CK": "Cook Islands",
"country.CL": "Chile",
"country.CM": "Cameroon",
"country.CN": "China",
"country.CO": "Colombia",
"country.CR": "Costa Rica",
"country.CU": "Cuba",
"country.CV": "Cape Verde",
"country.CW": "Curacao",
"country.CX": "Christmas Island",
"country.CY": "Cyprus",
"country.CZ": "Czech Republic",
"country.DE": "Germany",
"country.DJ": "Djibouti",
"country.DK": "Denmark",
"country.DM": "Dominica",
"country.DO": "Dominican Republic",
"country.DZ": "Algeria",
"country.EC": "Ecuador",
"country.EE": "Estonia",
"country.EG": "Egypt",
"country.EH": "Western Sahara",
"country.ER": "Eritrea",
"country.ES": "Spain",
"country.ET": "Ethiopia",
"country.FI": "Finland",
"country.FJ": "Fiji",
"country.FK": "Falkland Islands",
"country.FM": "Micronesia",
"country.FO": "Faroe Islands",
"country.FR": "France",
"country.GA": "Gabon",
"country.GB": "United Kingdom",
"country.GD": "Grenada",
"country.GE": "Georgia",
"country.GF": "French Guiana",
"country.GG": "Guernsey",
"country.GH": "Ghana",
"country.GI": "Gibraltar",
"country.GL": "Greenland",
"country.GM": "Gambia",
"country.GN": "Guinea",
"country.GP": "Guadeloupe",
"country.GQ": "Equatorial Guinea",
"country.GR": "Greece",
"country.GS": "South Georgia and the South Sandwich Islands",
"country.GT": "Guatemala",
"country.GU": "Guam",
"country.GW": "Guinea-Bissau",
"country.GY": "Guyana",
"country.HK": "Hong Kong",
"country.HM": "Heard Island and McDonald Islands",
"country.HN": "Honduras",
"country.HR": "Croatia",
"country.HT": "Haiti",
"country.HU": "Hungary",
"country.ID": "Indonesia",
"country.IE": "Ireland",
"country.IL": "Israel",
"country.IM": "Isle of Man",
"country.IN": "India",
"country.IO": "British Indian Ocean Territory",
"country.IQ": "Iraq",
"country.IR": "Iran",
"country.IS": "Iceland",
"country.IT": "Italy",
"country.JE": "Jersey",
"country.JM": "Jamaica",
"country.JO": "Jordan",
"country.JP": "Japan",
"country.KE": "Kenya",
"country.KG": "Kyrgyzstan",
"country.KH": "Cambodia",
"country.KI": "Kiribati",
"country.KM": "Comoros",
"country.KN": "Saint Kitts and Nevis",
"country.KP": "North Korea",
"country.KR": "South Korea",
"country.KW": "Kuwait",
"country.KY": "Cayman Islands",
"country.KZ": "Kazakhstan",
"country.LA": "Laos",
"country.LB": "Lebanon",
"country.LC": "Saint Lucia",
"country.LI": "Liechtenstein",
"country.LK": "Sri Lanka",
"country.LR": "Liberia",
"country.LS": "Lesotho",
"country.LT": "Lithuania",
"country.LU": "Luxembourg",
"country.LV": "Latvia",
"country.LY": "Libya",
"country.MA": "Morocco",
"country.MC": "Monaco",
"country.MD": "Moldova",
"country.ME": "Montenegro",
"country.MF": "Saint Martin",
"country.MG": "Madagascar",
"country.MH": "Marshall Islands",
"country.MK": "Macedonia",
"country.ML": "Mali",
"country.MM": "Myanmar",
"country.MN": "Mongolia",
"country.MO": "Macao",
"country.MP": "Northern Mariana Islands",
"country.MQ": "Martinique",
"country.MR": "Mauritania",
"country.MS": "Montserrat",
"country.MT": "Malta",
"country.MU": "Mauritius",
"country.MV": "Maldives",
"country.MW": "Malawi",
"country.MX": "Mexico",
"country.MY": "Malaysia",
"country.MZ": "Mozambique",
"country.NA": "Namibia",
"country.NC": "New Caledonia",
"country.NE": "Niger",
"country.NF": "Norfolk Island",
"country.NG": "Nigeria",
"country.NI": "Nicaragua",
"country.NL": "Netherlands",
"country.NO": "Norway",
"country.NP": "Nepal",
"country.NR": "Nauru",
"country.NU": "Niue",
"country.NZ": "New Zealand",
"country.OM": "Oman",
"country.PA": "Panama",
"country.PE": "Peru",
"country.PF": "French Polynesia",
"country.PG": "Papua New Guinea",
"country.PH": "Philippines",
"country.PK": "Pakistan",
"country.PL": "Poland",
"country.PM": "Saint Pierre and Miquelon",
"country.PN": "Pitcairn",
"country.PR": "Puerto Rico",
"country.PS": "Palestinian Territory",
"country.PT": "Portugal",
"country.PW": "Palau",
"country.PY": "Paraguay",
"country.QA": "Qatar",
"country.RE": "Reunion",
"country.RO": "Romania",
"country.RS": "Serbia",
"country.RU": "Russia",
"country.RW": "Rwanda",
"country.SA": "Saudi Arabia",
"country.SB": "Solomon Islands",
"country.SC": "Seychelles",
"country.SD": "Sudan",
"country.SE": "Sweden",
"country.SG": "Singapore",
"country.SH": "Saint Helena",
"country.SI": "Slovenia",
"country.SJ": "Svalbard and Jan Mayen",
"country.SK": "Slovakia",
"country.SL": "Sierra Leone",
"country.SM": "San Marino",
"country.SN": "Senegal",
"country.SO": "Somalia",
"country.SR": "Suriname",
"country.SS": "South Sudan",
"country.ST": "Sao Tome and Principe",
"country.SV": "El Salvador",
"country.SX": "Sint Maarten",
"country.SY": "Syria",
"country.SZ": "Swaziland",
"country.TC": "Turks and Caicos Islands",
"country.TD": "Chad",
"country.TF": "French Southern Territories",
"country.TG": "Togo",
"country.TH": "Thailand",
"country.TJ": "Tajikistan",
"country.TK": "Tokelau",
"country.TL": "East Timor",
"country.TM": "Turkmenistan",
"country.TN": "Tunisia",
"country.TO": "Tonga",
"country.TR": "Turkey",
"country.TT": "Trinidad and Tobago",
"country.TV": "Tuvalu",
"country.TW": "Taiwan",
"country.TZ": "Tanzania",
"country.UA": "Ukraine",
"country.UG": "Uganda",
"country.UM": "United States Minor Outlying Islands",
"country.US": "United States",
"country.UY": "Uruguay",
"country.UZ": "Uzbekistan",
"country.VA": "Vatican",
"country.VC": "Saint Vincent and the Grenadines",
"country.VE": "Venezuela",
"country.VG": "British Virgin Islands",
"country.VI": "U.S. Virgin Islands",
"country.VN": "Vietnam",
"country.VU": "Vanuatu",
"country.WF": "Wallis and Futuna",
"country.WS": "Samoa",
"country.XK": "Kosovo",
"country.YE": "Yemen",
"country.YT": "Mayotte",
"country.ZA": "South Africa",
"country.ZM": "Zambia",
"country.ZW": "Zimbabwe"
}For vue-i18n
{
"alternatives.all": "{'{#label'}} does not match all of the required types",
"alternatives.any": "{'{#label'}} does not match any of the allowed types",
"alternatives.match": "{'{#label'}} does not match any of the allowed types",
"alternatives.one": "{'{#label'}} matches more than one allowed type",
"alternatives.types": "{'{#label'}} must be one of {'{#types'}}",
"any.custom": "{'{#label'}} failed custom validation because {'{#error.message'}}",
"any.default": "{'{#label'}} threw an error when running default method",
"any.failover": "{'{#label'}} threw an error when running failover method",
"any.invalid": "{'{#label'}} contains an invalid value",
"any.only": "{'{#label'}} must be {'if(#valids.length == 1, \"\", \"one of \")'}{'{#valids'}}",
"any.ref": "{'{#label'}} {'{#arg'}} references {'{:#ref'}} which {'{#reason'}}",
"any.required": "{'{#label'}} is required",
"any.unknown": "{'{#label'}} is not allowed",
"array.base": "{'{#label'}} must be an array",
"array.excludes": "{'{#label'}} contains an excluded value",
"array.hasKnown": "{'{#label'}} does not contain at least one required match for type {':#patternLabel'}",
"array.hasUnknown": "{'{#label'}} does not contain at least one required match",
"array.includes": "{'{#label'}} does not match any of the allowed types",
"array.includesRequiredBoth": "{'{#label'}} does not contain {'{#knownMisses'}} and {'{#unknownMisses'}} other required value(s)",
"array.includesRequiredKnowns": "{'{#label'}} does not contain {'{#knownMisses'}}",
"array.includesRequiredUnknowns": "{'{#label'}} does not contain {'{#unknownMisses'}} required value(s)",
"array.length": "{'{#label'}} must contain {'{#limit'}} items",
"array.max": "{'{#label'}} must contain less than or equal to {'{#limit'}} items",
"array.min": "{'{#label'}} must contain at least {'{#limit'}} items",
"array.orderedLength": "{'{#label'}} must contain at most {'{#limit'}} items",
"array.sort": "{'{#label'}} must be sorted in {'#order'} order by {'{#by'}}",
"array.sort.mismatching": "{'{#label'}} cannot be sorted due to mismatching types",
"array.sort.unsupported": "{'{#label'}} cannot be sorted due to unsupported type {'#type'}",
"array.sparse": "{'{#label'}} must not be a sparse array item",
"array.unique": "{'{#label'}} contains a duplicate value",
"boolean.base": "{'{#label'}} must be a boolean",
"date.base": "{'{#label'}} must be a valid date",
"date.format": "{'{#label'}} must be in {'msg(\"date.format.\" + #format) || #format'} format",
"date.greater": "{'{#label'}} must be greater than {'{:#limit'}}",
"date.less": "{'{#label'}} must be less than {'{:#limit'}}",
"date.max": "{'{#label'}} must be less than or equal to {'{:#limit'}}",
"date.min": "{'{#label'}} must be greater than or equal to {'{:#limit'}}",
"date.format.iso": "ISO 8601 date",
"date.format.javascript": "timestamp or number of milliseconds",
"date.format.unix": "timestamp or number of seconds",
"function.arity": "{'{#label'}} must have an arity of {'{#n'}}",
"function.class": "{'{#label'}} must be a class",
"function.maxArity": "{'{#label'}} must have an arity lesser or equal to {'{#n'}}",
"function.minArity": "{'{#label'}} must have an arity greater or equal to {'{#n'}}",
"number.base": "{'{#label'}} must be a number",
"number.greater": "{'{#label'}} must be greater than {'{#limit'}}",
"number.infinity": "{'{#label'}} cannot be infinity",
"number.integer": "{'{#label'}} must be an integer",
"number.less": "{'{#label'}} must be less than {'{#limit'}}",
"number.max": "{'{#label'}} must be less than or equal to {'{#limit'}}",
"number.min": "{'{#label'}} must be greater than or equal to {'{#limit'}}",
"number.multiple": "{'{#label'}} must be a multiple of {'{#multiple'}}",
"number.negative": "{'{#label'}} must be a negative number",
"number.port": "{'{#label'}} must be a valid port",
"number.positive": "{'{#label'}} must be a positive number",
"number.precision": "{'{#label'}} must have no more than {'{#limit'}} decimal places",
"number.unsafe": "{'{#label'}} must be a safe number",
"object.and": "{'{#label'}} contains {'{#presentWithLabels'}} without its required peers {'{#missingWithLabels'}}",
"object.assert": "{'{#label'}} is invalid because {'if(#subject.key, `\"` + #subject.key + `\" failed to ` + (#message || \"pass the assertion test\"), #message || \"the assertion failed\")'}",
"object.base": "{'{#label'}} must be of type {'{#type'}}",
"object.instance": "{'{#label'}} must be an instance of {'{:#type'}}",
"object.length": "{'{#label'}} must have {'{#limit'}} key{'if(#limit == 1, \"\", \"s\")'}",
"object.max": "{'{#label'}} must have less than or equal to {'{#limit'}} key{'if(#limit == 1, \"\", \"s\")'}",
"object.min": "{'{#label'}} must have at least {'{#limit'}} key{'if(#limit == 1, \"\", \"s\")'}",
"object.missing": "{'{#label'}} must contain at least one of {'{#peersWithLabels'}}",
"object.nand": "{'{:#mainWithLabel'}} must not exist simultaneously with {'{#peersWithLabels'}}",
"object.oxor": "{'{#label'}} contains a conflict between optional exclusive peers {'{#peersWithLabels'}}",
"object.pattern.match": "{'{#label'}} keys failed to match pattern requirements",
"object.refType": "{'{#label'}} must be a Joi reference",
"object.regex": "{'{#label'}} must be a RegExp object",
"object.rename.multiple": "{'{#label'}} cannot rename {'{:#from'}} because multiple renames are disabled and another key was already renamed to {'{:#to'}}",
"object.rename.override": "{'{#label'}} cannot rename {'{:#from'}} because override is disabled and target {'{:#to'}} exists",
"object.schema": "{'{#label'}} must be a Joi schema of {'{#type'}} type",
"object.unknown": "{'{#label'}} is not allowed",
"object.with": "{'{:#mainWithLabel'}} missing required peer {'{:#peerWithLabel'}}",
"object.without": "{'{:#mainWithLabel'}} conflict with forbidden peer {'{:#peerWithLabel'}}",
"object.xor": "{'{#label'}} contains a conflict between exclusive peers {'{#peersWithLabels'}}",
"string.alphanum": "{'{#label'}} must only contain alpha-numeric characters",
"string.base": "{'{#label'}} must be a string",
"string.base64": "{'{#label'}} must be a valid base64 string",
"string.creditCard": "{'{#label'}} must be a credit card",
"string.dataUri": "{'{#label'}} must be a valid dataUri string",
"string.domain": "{'{#label'}} must contain a valid domain name",
"string.email": "{'{#label'}} must be a valid email",
"string.empty": "{'{#label'}} is not allowed to be empty",
"string.guid": "{'{#label'}} must be a valid GUID",
"string.hex": "{'{#label'}} must only contain hexadecimal characters",
"string.hexAlign": "{'{#label'}} hex decoded representation must be byte aligned",
"string.hostname": "{'{#label'}} must be a valid hostname",
"string.ip": "{'{#label'}} must be a valid ip address with a {'{#cidr'}} CIDR",
"string.ipVersion": "{'{#label'}} must be a valid ip address of one of the following versions {'{#version'}} with a {'{#cidr'}} CIDR",
"string.isoDate": "{'{#label'}} must be in iso format",
"string.isoDuration": "{'{#label'}} must be a valid ISO 8601 duration",
"string.length": "{'{#label'}} length must be {'{#limit'}} characters long",
"string.lowercase": "{'{#label'}} must only contain lowercase characters",
"string.max": "{'{#label'}} length must be less than or equal to {'{#limit'}} characters long",
"string.min": "{'{#label'}} length must be at least {'{#limit'}} characters long",
"string.normalize": "{'{#label'}} must be unicode normalized in the {'{#form'}} form",
"string.token": "{'{#label'}} must only contain alpha-numeric and underscore characters",
"string.pattern.base": "{'{#label'}} with value {':[.]'} fails to match the required pattern: {'{#regex'}}",
"string.pattern.name": "{'{#label'}} with value {':[.]'} fails to match the {'{#name'}} pattern",
"string.pattern.invert.base": "{'{#label'}} with value {':[.]'} matches the inverted pattern: {'{#regex'}}",
"string.pattern.invert.name": "{'{#label'}} with value {':[.]'} matches the inverted {'{#name'}} pattern",
"string.trim": "{'{#label'}} must not have leading or trailing whitespace",
"string.uri": "{'{#label'}} must be a valid uri",
"string.uriCustomScheme": "{'{#label'}} must be a valid uri with a scheme matching the {'{#scheme'}} pattern",
"string.uriRelativeOnly": "{'{#label'}} must be a valid relative uri",
"string.uppercase": "{'{#label'}} must only contain uppercase characters",
"string.fqdn": "{'{#label'}} must be a valid fully qualified domain name",
"symbol.base": "{'{#label'}} must be a symbol",
"symbol.map": "{'{#label'}} must be one of {'{#map'}}",
"binary.base": "{'{#label'}} must be a buffer or a string",
"binary.length": "{'{#label'}} must be {'{#limit'}} bytes",
"binary.max": "{'{#label'}} must be less than or equal to {'{#limit'}} bytes",
"binary.min": "{'{#label'}} must be at least {'{#limit'}} bytes",
"bigint.base": "\"{'{#label'}}\" must be a valid bigint",
"bigint.greater": "\"{'{#label'}}\" must be greater than {'{#limit'}}",
"bigint.less": "\"{'{#label'}}\" must be less than {'{#limit'}}",
"bigint.max": "\"{'{#label'}}\" must be less than or equal to {'{#limit'}}",
"bigint.min": "\"{'{#label'}}\" must be greater than or equal to {'{#limit'}}",
"bigint.multiple": "\"{'{#label'}}\" must be a multiple of {'{#limit'}}",
"bigint.negative": "\"{'{#label'}}\" must be a negative bigint",
"bigint.positive": "\"{'{#label'}}\" must be a positive bigint",
"datetime.base": "{'{#label'}} must be a datetime value",
"datetime.exactly": "{'{#label'}} must be a datetime exactly equal to {'{#limit'}}",
"datetime.equals": "{'{#label'}} must be a datetime equal to {'{#limit'}}",
"datetime.after": "{'{#label'}} must be a datetime after {'{#limit'}}",
"datetime.greater": "{'{#label'}} must be a datetime after {'{#limit'}}",
"datetime.before": "{'{#label'}} must be a datetime before {'{#limit'}}",
"datetime.less": "{'{#label'}} must be a datetime before {'{#limit'}}",
"datetime.afterOrEqual": "{'{#label'}} must be a datetime after or equal to {'{#limit'}}",
"datetime.min": "{'{#label'}} must be a datetime after or equal to {'{#limit'}}",
"datetime.beforeOrEqual": "{'{#label'}} must be a datetime before or equal to {'{#limit'}}",
"datetime.max": "{'{#label'}} must be a datetime before or equal to {'{#limit'}}",
"datetime.weekend": "{'{#label'}} is not a weekend",
"datetime.weekday": "{'{#label'}} is not a weekday",
"phone.base": "{'{#label'}} must be a phone number",
"phone.invalid": "{'{#label'}} must be a valid phone number for {'{#country'}}",
"phone.fixedLine": "{'{#label'}} must be a fixed line number for {'{#country'}}",
"phone.mobile": "{'{#label'}} must be a mobile number for {'{#country'}}",
"phone.strictFixedLine": "{'{#label'}} is not a fixed line number for {'{#country'}}",
"phone.strictMobile": "{'{#label'}} is not a mobile number for {'{#country'}}",
"phone.fixedLineOrMobile": "{'{#label'}} must be a fixed line or mobile number for {'{#country'}}",
"phone.tollFree": "{'{#label'}} must be a toll-free number for {'{#country'}}",
"phone.premiumRate": "{'{#label'}} must be a premium rate number for {'{#country'}}",
"phone.sharedCost": "{'{#label'}} must be a shared cost number for {'{#country'}}",
"phone.voip": "{'{#label'}} must be a VoIP number for {'{#country'}}",
"phone.personalNumber": "{'{#label'}} must be a personal number for {'{#country'}}",
"phone.pager": "{'{#label'}} must be a pager number for {'{#country'}}",
"phone.uan": "{'{#label'}} must be a UAN number for {'{#country'}}",
"phone.voicemail": "{'{#label'}} must be a voicemail number for {'{#country'}}",
"phone.unknown": "{'{#label'}} must be an unknown type number for {'{#country'}}",
"phone.types": "{'{#label'}} must be one of the specified phone types for {'{#country'}}",
"country.AD": "Andorra",
"country.AE": "United Arab Emirates",
"country.AF": "Afghanistan",
"country.AG": "Antigua and Barbuda",
"country.AI": "Anguilla",
"country.AL": "Albania",
"country.AM": "Armenia",
"country.AO": "Angola",
"country.AQ": "Antarctica",
"country.AR": "Argentina",
"country.AS": "American Samoa",
"country.AT": "Austria",
"country.AU": "Australia",
"country.AW": "Aruba",
"country.AX": "Aland Islands",
"country.AZ": "Azerbaijan",
"country.BA": "Bosnia and Herzegovina",
"country.BB": "Barbados",
"country.BD": "Bangladesh",
"country.BE": "Belgium",
"country.BF": "Burkina Faso",
"country.BG": "Bulgaria",
"country.BH": "Bahrain",
"country.BI": "Burundi",
"country.BJ": "Benin",
"country.BL": "Saint Barthelemy",
"country.BM": "Bermuda",
"country.BN": "Brunei",
"country.BO": "Bolivia",
"country.BQ": "Bonaire, Saint Eustatius and Saba",
"country.BR": "Brazil",
"country.BS": "Bahamas",
"country.BT": "Bhutan",
"country.BV": "Bouvet Island",
"country.BW": "Botswana",
"country.BY": "Belarus",
"country.BZ": "Belize",
"country.CA": "Canada",
"country.CC": "Cocos Islands",
"country.CD": "Democratic Republic of the Congo",
"country.CF": "Central African Republic",
"country.CG": "Republic of the Congo",
"country.CH": "Switzerland",
"country.CI": "Ivory Coast",
"country.CK": "Cook Islands",
"country.CL": "Chile",
"country.CM": "Cameroon",
"country.CN": "China",
"country.CO": "Colombia",
"country.CR": "Costa Rica",
"country.CU": "Cuba",
"country.CV": "Cape Verde",
"country.CW": "Curacao",
"country.CX": "Christmas Island",
"country.CY": "Cyprus",
"country.CZ": "Czech Republic",
"country.DE": "Germany",
"country.DJ": "Djibouti",
"country.DK": "Denmark",
"country.DM": "Dominica",
"country.DO": "Dominican Republic",
"country.DZ": "Algeria",
"country.EC": "Ecuador",
"country.EE": "Estonia",
"country.EG": "Egypt",
"country.EH": "Western Sahara",
"country.ER": "Eritrea",
"country.ES": "Spain",
"country.ET": "Ethiopia",
"country.FI": "Finland",
"country.FJ": "Fiji",
"country.FK": "Falkland Islands",
"country.FM": "Micronesia",
"country.FO": "Faroe Islands",
"country.FR": "France",
"country.GA": "Gabon",
"country.GB": "United Kingdom",
"country.GD": "Grenada",
"country.GE": "Georgia",
"country.GF": "French Guiana",
"country.GG": "Guernsey",
"country.GH": "Ghana",
"country.GI": "Gibraltar",
"country.GL": "Greenland",
"country.GM": "Gambia",
"country.GN": "Guinea",
"country.GP": "Guadeloupe",
"country.GQ": "Equatorial Guinea",
"country.GR": "Greece",
"country.GS": "South Georgia and the South Sandwich Islands",
"country.GT": "Guatemala",
"country.GU": "Guam",
"country.GW": "Guinea-Bissau",
"country.GY": "Guyana",
"country.HK": "Hong Kong",
"country.HM": "Heard Island and McDonald Islands",
"country.HN": "Honduras",
"country.HR": "Croatia",
"country.HT": "Haiti",
"country.HU": "Hungary",
"country.ID": "Indonesia",
"country.IE": "Ireland",
"country.IL": "Israel",
"country.IM": "Isle of Man",
"country.IN": "India",
"country.IO": "British Indian Ocean Territory",
"country.IQ": "Iraq",
"country.IR": "Iran",
"country.IS": "Iceland",
"country.IT": "Italy",
"country.JE": "Jersey",
"country.JM": "Jamaica",
"country.JO": "Jordan",
"country.JP": "Japan",
"country.KE": "Kenya",
"country.KG": "Kyrgyzstan",
"country.KH": "Cambodia",
"country.KI": "Kiribati",
"country.KM": "Comoros",
"country.KN": "Saint Kitts and Nevis",
"country.KP": "North Korea",
"country.KR": "South Korea",
"country.KW": "Kuwait",
"country.KY": "Cayman Islands",
"country.KZ": "Kazakhstan",
"country.LA": "Laos",
"country.LB": "Lebanon",
"country.LC": "Saint Lucia",
"country.LI": "Liechtenstein",
"country.LK": "Sri Lanka",
"country.LR": "Liberia",
"country.LS": "Lesotho",
"country.LT": "Lithuania",
"country.LU": "Luxembourg",
"country.LV": "Latvia",
"country.LY": "Libya",
"country.MA": "Morocco",
"country.MC": "Monaco",
"country.MD": "Moldova",
"country.ME": "Montenegro",
"country.MF": "Saint Martin",
"country.MG": "Madagascar",
"country.MH": "Marshall Islands",
"country.MK": "Macedonia",
"country.ML": "Mali",
"country.MM": "Myanmar",
"country.MN": "Mongolia",
"country.MO": "Macao",
"country.MP": "Northern Mariana Islands",
"country.MQ": "Martinique",
"country.MR": "Mauritania",
"country.MS": "Montserrat",
"country.MT": "Malta",
"country.MU": "Mauritius",
"country.MV": "Maldives",
"country.MW": "Malawi",
"country.MX": "Mexico",
"country.MY": "Malaysia",
"country.MZ": "Mozambique",
"country.NA": "Namibia",
"country.NC": "New Caledonia",
"country.NE": "Niger",
"country.NF": "Norfolk Island",
"country.NG": "Nigeria",
"country.NI": "Nicaragua",
"country.NL": "Netherlands",
"country.NO": "Norway",
"country.NP": "Nepal",
"country.NR": "Nauru",
"country.NU": "Niue",
"country.NZ": "New Zealand",
"country.OM": "Oman",
"country.PA": "Panama",
"country.PE": "Peru",
"country.PF": "French Polynesia",
"country.PG": "Papua New Guinea",
"country.PH": "Philippines",
"country.PK": "Pakistan",
"country.PL": "Poland",
"country.PM": "Saint Pierre and Miquelon",
"country.PN": "Pitcairn",
"country.PR": "Puerto Rico",
"country.PS": "Palestinian Territory",
"country.PT": "Portugal",
"country.PW": "Palau",
"country.PY": "Paraguay",
"country.QA": "Qatar",
"country.RE": "Reunion",
"country.RO": "Romania",
"country.RS": "Serbia",
"country.RU": "Russia",
"country.RW": "Rwanda",
"country.SA": "Saudi Arabia",
"country.SB": "Solomon Islands",
"country.SC": "Seychelles",
"country.SD": "Sudan",
"country.SE": "Sweden",
"country.SG": "Singapore",
"country.SH": "Saint Helena",
"country.SI": "Slovenia",
"country.SJ": "Svalbard and Jan Mayen",
"country.SK": "Slovakia",
"country.SL": "Sierra Leone",
"country.SM": "San Marino",
"country.SN": "Senegal",
"country.SO": "Somalia",
"country.SR": "Suriname",
"country.SS": "South Sudan",
"country.ST": "Sao Tome and Principe",
"country.SV": "El Salvador",
"country.SX": "Sint Maarten",
"country.SY": "Syria",
"country.SZ": "Swaziland",
"country.TC": "Turks and Caicos Islands",
"country.TD": "Chad",
"country.TF": "French Southern Territories",
"country.TG": "Togo",
"country.TH": "Thailand",
"country.TJ": "Tajikistan",
"country.TK": "Tokelau",
"country.TL": "East Timor",
"country.TM": "Turkmenistan",
"country.TN": "Tunisia",
"country.TO": "Tonga",
"country.TR": "Turkey",
"country.TT": "Trinidad and Tobago",
"country.TV": "Tuvalu",
"country.TW": "Taiwan",
"country.TZ": "Tanzania",
"country.UA": "Ukraine",
"country.UG": "Uganda",
"country.UM": "United States Minor Outlying Islands",
"country.US": "United States",
"country.UY": "Uruguay",
"country.UZ": "Uzbekistan",
"country.VA": "Vatican",
"country.VC": "Saint Vincent and the Grenadines",
"country.VE": "Venezuela",
"country.VG": "British Virgin Islands",
"country.VI": "U.S. Virgin Islands",
"country.VN": "Vietnam",
"country.VU": "Vanuatu",
"country.WF": "Wallis and Futuna",
"country.WS": "Samoa",
"country.XK": "Kosovo",
"country.YE": "Yemen",
"country.YT": "Mayotte",
"country.ZA": "South Africa",
"country.ZM": "Zambia",
"country.ZW": "Zimbabwe"
}