[{"data":1,"prerenderedAt":1453},["ShallowReactive",2],{"navigation":3,"\u002Ferrors\u002Fi18n":335,"\u002Ferrors\u002Fi18n-surround":1448},[4,27,73,95,121,135,305,331],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"MSRV","\u002Fgetting-started\u002Fmsrv","1.getting-started\u002F9.msrv",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Schemas","i-lucide-shapes","\u002Fschemas","2.schemas",[33,37,41,45,49,53,57,61,65,69],{"title":34,"path":35,"stem":36},"Strings","\u002Fschemas\u002Fstrings","2.schemas\u002F1.strings",{"title":38,"path":39,"stem":40},"Custom rules","\u002Fschemas\u002Frules","2.schemas\u002F10.rules",{"title":42,"path":43,"stem":44},"Numbers","\u002Fschemas\u002Fnumbers","2.schemas\u002F2.numbers",{"title":46,"path":47,"stem":48},"Booleans, literals and enums","\u002Fschemas\u002Fprimitives","2.schemas\u002F3.primitives",{"title":50,"path":51,"stem":52},"Dates and times","\u002Fschemas\u002Fdates","2.schemas\u002F4.dates",{"title":54,"path":55,"stem":56},"Collections","\u002Fschemas\u002Fcollections","2.schemas\u002F5.collections",{"title":58,"path":59,"stem":60},"Dynamic objects","\u002Fschemas\u002Fobjects","2.schemas\u002F6.objects",{"title":62,"path":63,"stem":64},"Modifiers","\u002Fschemas\u002Fmodifiers","2.schemas\u002F7.modifiers",{"title":66,"path":67,"stem":68},"Combinators","\u002Fschemas\u002Fcombinators","2.schemas\u002F8.combinators",{"title":70,"path":71,"stem":72},"Other types","\u002Fschemas\u002Fspecial-types","2.schemas\u002F9.special-types",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":26},"Structs","i-lucide-braces","\u002Fstructs","3.structs",[79,83,87,91],{"title":80,"path":81,"stem":82},"schema! macro","\u002Fstructs\u002Fschema-macro","3.structs\u002F1.schema-macro",{"title":84,"path":85,"stem":86},"#[derive(Validate)]","\u002Fstructs\u002Fderive","3.structs\u002F2.derive",{"title":88,"path":89,"stem":90},"Parse vs validate","\u002Fstructs\u002Fparse-vs-validate","3.structs\u002F3.parse-vs-validate",{"title":92,"path":93,"stem":94},"Lenient parsing","\u002Fstructs\u002Flenient","3.structs\u002F4.lenient",{"title":96,"icon":97,"path":98,"stem":99,"children":100,"page":26},"Errors","i-lucide-triangle-alert","\u002Ferrors","4.errors",[101,105,109,113,117],{"title":102,"path":103,"stem":104},"Error model","\u002Ferrors\u002Foverview","4.errors\u002F1.overview",{"title":106,"path":107,"stem":108},"Issue codes","\u002Ferrors\u002Fissue-codes","4.errors\u002F2.issue-codes",{"title":110,"path":111,"stem":112},"Formatting","\u002Ferrors\u002Fformatting","4.errors\u002F3.formatting",{"title":114,"path":115,"stem":116},"Custom messages","\u002Ferrors\u002Fcustom-messages","4.errors\u002F4.custom-messages",{"title":118,"path":119,"stem":120},"Translations","\u002Ferrors\u002Fi18n","4.errors\u002F5.i18n",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":26},"OpenAPI","i-lucide-file-json","\u002Fopenapi","5.openapi",[127,131],{"title":128,"path":129,"stem":130},"JSON Schema and OpenAPI","\u002Fopenapi\u002Fjson-schema","5.openapi\u002F1.json-schema",{"title":132,"path":133,"stem":134},"Schema diff","\u002Fopenapi\u002Fdiff","5.openapi\u002F2.diff",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":26},"Integrations","i-lucide-plug","\u002Fintegrations","6.integrations",[141,191,209,223,245,259,273,291],{"title":142,"icon":143,"path":144,"stem":145,"children":146,"page":26},"Web frameworks","i-lucide-globe","\u002Fintegrations\u002Fweb","6.integrations\u002F1.web",[147,151,155,159,163,167,171,175,179,183,187],{"title":148,"path":149,"stem":150},"Web adapters overview","\u002Fintegrations\u002Fweb\u002Foverview","6.integrations\u002F1.web\u002F01.overview",{"title":152,"path":153,"stem":154},"vld-axum","\u002Fintegrations\u002Fweb\u002Faxum","6.integrations\u002F1.web\u002F02.axum",{"title":156,"path":157,"stem":158},"vld-actix","\u002Fintegrations\u002Fweb\u002Factix","6.integrations\u002F1.web\u002F03.actix",{"title":160,"path":161,"stem":162},"vld-ntex","\u002Fintegrations\u002Fweb\u002Fntex","6.integrations\u002F1.web\u002F04.ntex",{"title":164,"path":165,"stem":166},"vld-poem","\u002Fintegrations\u002Fweb\u002Fpoem","6.integrations\u002F1.web\u002F05.poem",{"title":168,"path":169,"stem":170},"vld-rama","\u002Fintegrations\u002Fweb\u002Frama","6.integrations\u002F1.web\u002F06.rama",{"title":172,"path":173,"stem":174},"vld-rocket","\u002Fintegrations\u002Fweb\u002Frocket","6.integrations\u002F1.web\u002F07.rocket",{"title":176,"path":177,"stem":178},"vld-salvo","\u002Fintegrations\u002Fweb\u002Fsalvo","6.integrations\u002F1.web\u002F08.salvo",{"title":180,"path":181,"stem":182},"vld-tower","\u002Fintegrations\u002Fweb\u002Ftower","6.integrations\u002F1.web\u002F09.tower",{"title":184,"path":185,"stem":186},"vld-warp","\u002Fintegrations\u002Fweb\u002Fwarp","6.integrations\u002F1.web\u002F10.warp",{"title":188,"path":189,"stem":190},"vld-tonic","\u002Fintegrations\u002Fweb\u002Ftonic","6.integrations\u002F1.web\u002F11.tonic",{"title":192,"icon":193,"path":194,"stem":195,"children":196,"page":26},"OpenAPI and JSON Schema","i-lucide-file-code","\u002Fintegrations\u002Fopenapi","6.integrations\u002F2.openapi",[197,201,205],{"title":198,"path":199,"stem":200},"vld-utoipa","\u002Fintegrations\u002Fopenapi\u002Futoipa","6.integrations\u002F2.openapi\u002F1.utoipa",{"title":202,"path":203,"stem":204},"vld-schemars","\u002Fintegrations\u002Fopenapi\u002Fschemars","6.integrations\u002F2.openapi\u002F2.schemars",{"title":206,"path":207,"stem":208},"vld-aide","\u002Fintegrations\u002Fopenapi\u002Faide","6.integrations\u002F2.openapi\u002F3.aide",{"title":210,"icon":211,"path":212,"stem":213,"children":214,"page":26},"Codegen and test data","i-lucide-wand","\u002Fintegrations\u002Fcodegen","6.integrations\u002F3.codegen",[215,219],{"title":216,"path":217,"stem":218},"vld-ts","\u002Fintegrations\u002Fcodegen\u002Fts","6.integrations\u002F3.codegen\u002F1.ts",{"title":220,"path":221,"stem":222},"vld-fake","\u002Fintegrations\u002Fcodegen\u002Ffake","6.integrations\u002F3.codegen\u002F2.fake",{"title":224,"icon":225,"path":226,"stem":227,"children":228,"page":26},"Databases","i-lucide-database","\u002Fintegrations\u002Fdatabase","6.integrations\u002F4.database",[229,233,237,241],{"title":230,"path":231,"stem":232},"vld-sqlx","\u002Fintegrations\u002Fdatabase\u002Fsqlx","6.integrations\u002F4.database\u002F1.sqlx",{"title":234,"path":235,"stem":236},"vld-diesel","\u002Fintegrations\u002Fdatabase\u002Fdiesel","6.integrations\u002F4.database\u002F2.diesel",{"title":238,"path":239,"stem":240},"vld-sea","\u002Fintegrations\u002Fdatabase\u002Fsea-orm","6.integrations\u002F4.database\u002F3.sea-orm",{"title":242,"path":243,"stem":244},"vld-surrealdb","\u002Fintegrations\u002Fdatabase\u002Fsurrealdb","6.integrations\u002F4.database\u002F4.surrealdb",{"title":246,"icon":247,"path":248,"stem":249,"children":250,"page":26},"Messaging","i-lucide-mail","\u002Fintegrations\u002Fmessaging","6.integrations\u002F5.messaging",[251,255],{"title":252,"path":253,"stem":254},"vld-redis","\u002Fintegrations\u002Fmessaging\u002Fredis","6.integrations\u002F5.messaging\u002F1.redis",{"title":256,"path":257,"stem":258},"vld-lapin","\u002Fintegrations\u002Fmessaging\u002Flapin","6.integrations\u002F5.messaging\u002F2.lapin",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":26},"Config and CLI","i-lucide-terminal","\u002Fintegrations\u002Fconfig-cli","6.integrations\u002F6.config-cli",[265,269],{"title":266,"path":267,"stem":268},"vld-config","\u002Fintegrations\u002Fconfig-cli\u002Fconfig","6.integrations\u002F6.config-cli\u002F1.config",{"title":270,"path":271,"stem":272},"vld-clap","\u002Fintegrations\u002Fconfig-cli\u002Fclap","6.integrations\u002F6.config-cli\u002F2.clap",{"title":274,"icon":275,"path":276,"stem":277,"children":278,"page":26},"UI frameworks","i-lucide-monitor","\u002Fintegrations\u002Fui","6.integrations\u002F7.ui",[279,283,287],{"title":280,"path":281,"stem":282},"vld-dioxus","\u002Fintegrations\u002Fui\u002Fdioxus","6.integrations\u002F7.ui\u002F1.dioxus",{"title":284,"path":285,"stem":286},"vld-leptos","\u002Fintegrations\u002Fui\u002Fleptos","6.integrations\u002F7.ui\u002F2.leptos",{"title":288,"path":289,"stem":290},"vld-tauri","\u002Fintegrations\u002Fui\u002Ftauri","6.integrations\u002F7.ui\u002F3.tauri",{"title":292,"icon":293,"path":294,"stem":295,"children":296,"page":26},"Shared crates","i-lucide-package","\u002Fintegrations\u002Fshared","6.integrations\u002F8.shared",[297,301],{"title":298,"path":299,"stem":300},"vld-http-common","\u002Fintegrations\u002Fshared\u002Fhttp-common","6.integrations\u002F8.shared\u002F1.http-common",{"title":302,"path":303,"stem":304},"vld-integration-common","\u002Fintegrations\u002Fshared\u002Fintegration-common","6.integrations\u002F8.shared\u002F2.integration-common",{"title":306,"icon":307,"path":308,"stem":309,"children":310,"page":26},"Guides","i-lucide-book-open","\u002Fguides","7.guides",[311,315,319,323,327],{"title":312,"path":313,"stem":314},"Migration","\u002Fguides\u002Fmigration","7.guides\u002F1.migration",{"title":316,"path":317,"stem":318},"Security notes","\u002Fguides\u002Fsecurity","7.guides\u002F2.security",{"title":320,"path":321,"stem":322},"Performance","\u002Fguides\u002Fperformance","7.guides\u002F3.performance",{"title":324,"path":325,"stem":326},"Contributing","\u002Fguides\u002Fcontributing","7.guides\u002F4.contributing",{"title":328,"path":329,"stem":330},"FAQ","\u002Fguides\u002Ffaq","7.guides\u002F5.faq",{"title":332,"path":333,"stem":334},"Changelog","\u002Fchangelog","9.changelog",{"id":336,"title":118,"body":337,"description":1442,"extension":1443,"links":1444,"meta":1445,"navigation":413,"path":119,"seo":1446,"stem":120,"__hash__":1447},"docs\u002F4.errors\u002F5.i18n.md",{"type":338,"value":339,"toc":1435},"minimark",[340,349,550,557,639,646,651,669,965,974,980,1126,1140,1144,1169,1173,1205,1378,1382,1405,1409,1431],[341,342,343,344,348],"p",{},"Default messages are rendered from an English template table. ",[345,346,347],"code",{},"vld::i18n::translate_error"," re-renders them with another table.",[350,351,356],"pre",{"className":352,"code":353,"language":354,"meta":355,"style":355},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld::prelude::*;\nuse vld::i18n::{russian, translate_error};\n\nlet err = vld::string().min(5).parse(r#\"\"ab\"\"#).unwrap_err();\nlet ru = translate_error(&err, &russian());\nprintln!(\"{}\", ru.issues[0].message);\n\u002F\u002F Строка должна содержать не менее 5 символов\n","rust","",[345,357,358,381,408,415,478,506,543],{"__ignoreMap":355},[359,360,363,367,371,375,378],"span",{"class":361,"line":362},"line",1,[359,364,366],{"class":365},"sbssI","use",[359,368,370],{"class":369},"sBMFI"," vld",[359,372,374],{"class":373},"sMK4o","::",[359,376,377],{"class":369},"prelude",[359,379,380],{"class":373},"::*;\n",[359,382,384,386,388,390,393,396,399,402,405],{"class":361,"line":383},2,[359,385,366],{"class":365},[359,387,370],{"class":369},[359,389,374],{"class":373},[359,391,392],{"class":369},"i18n",[359,394,395],{"class":373},"::{",[359,397,398],{"class":369},"russian",[359,400,401],{"class":373},",",[359,403,404],{"class":369}," translate_error",[359,406,407],{"class":373},"};\n",[359,409,411],{"class":361,"line":410},3,[359,412,414],{"emptyLinePlaceholder":413},true,"\n",[359,416,418,422,426,429,431,433,437,440,443,446,449,452,455,457,461,464,467,470,472,475],{"class":361,"line":417},4,[359,419,421],{"class":420},"spNyl","let",[359,423,425],{"class":424},"sTEyZ"," err ",[359,427,428],{"class":373},"=",[359,430,370],{"class":369},[359,432,374],{"class":373},[359,434,436],{"class":435},"s2Zo4","string",[359,438,439],{"class":373},"().",[359,441,442],{"class":435},"min",[359,444,445],{"class":373},"(",[359,447,448],{"class":365},"5",[359,450,451],{"class":373},").",[359,453,454],{"class":435},"parse",[359,456,445],{"class":373},[359,458,460],{"class":459},"sfazB","r",[359,462,463],{"class":373},"#\"",[359,465,466],{"class":459},"\"ab\"",[359,468,469],{"class":373},"\"#",[359,471,451],{"class":373},[359,473,474],{"class":435},"unwrap_err",[359,476,477],{"class":373},"();\n",[359,479,481,483,486,488,490,493,496,498,501,503],{"class":361,"line":480},5,[359,482,421],{"class":420},[359,484,485],{"class":424}," ru ",[359,487,428],{"class":373},[359,489,404],{"class":435},[359,491,492],{"class":373},"(&",[359,494,495],{"class":424},"err",[359,497,401],{"class":373},[359,499,500],{"class":373}," &",[359,502,398],{"class":435},[359,504,505],{"class":373},"());\n",[359,507,509,512,514,517,519,522,525,528,531,534,537,540],{"class":361,"line":508},6,[359,510,511],{"class":435},"println!",[359,513,445],{"class":373},[359,515,516],{"class":373},"\"{}\"",[359,518,401],{"class":373},[359,520,521],{"class":424}," ru",[359,523,524],{"class":373},".",[359,526,527],{"class":424},"issues",[359,529,530],{"class":373},"[",[359,532,533],{"class":365},"0",[359,535,536],{"class":373},"].",[359,538,539],{"class":424},"message",[359,541,542],{"class":373},");\n",[359,544,546],{"class":361,"line":545},7,[359,547,549],{"class":548},"sHwdD","\u002F\u002F Строка должна содержать не менее 5 символов\n",[341,551,552,553,556],{},"Built-in tables (",[345,554,555],{},"vld::i18n","):",[558,559,560,576],"table",{},[561,562,563],"thead",{},[564,565,566,570,573],"tr",{},[567,568,569],"th",{},"Function",[567,571,572],{},"Language",[567,574,575],{},"Plural rule",[577,578,579,595,611,625],"tbody",{},[564,580,581,587,590],{},[582,583,584],"td",{},[345,585,586],{},"english()",[582,588,589],{},"English (the defaults)",[582,591,592],{},[345,593,594],{},"plural_en",[564,596,597,602,605],{},[582,598,599],{},[345,600,601],{},"russian()",[582,603,604],{},"Russian",[582,606,607,610],{},[345,608,609],{},"plural_ru"," (one \u002F few \u002F many)",[564,612,613,618,621],{},[582,614,615],{},[345,616,617],{},"german()",[582,619,620],{},"German",[582,622,623],{},[345,624,594],{},[564,626,627,632,635],{},[582,628,629],{},[345,630,631],{},"spanish()",[582,633,634],{},"Spanish",[582,636,637],{},[345,638,594],{},[341,640,641,642,645],{},"Each table covers every template key and the ",[345,643,644],{},"type.\u003Cname>"," keys for type names.",[647,648,650],"h2",{"id":649},"your-own-tables","Your own tables",[341,652,653,656,657,660,661,664,665,524],{},[345,654,655],{},"MapResolver"," wraps a ",[345,658,659],{},"HashMap\u003CString, String>"," of templates. Placeholders like ",[345,662,663],{},"{minimum}"," are filled from the issue's ",[666,667,668],"a",{"href":107},"parameters",[350,670,672],{"className":352,"code":671,"language":354,"meta":355,"style":355},"use std::collections::HashMap;\nuse vld::i18n::{translate_error, MapResolver};\n\nlet mut t = HashMap::new();\nt.insert(\"too_small.string\".into(), \"Mínimo {minimum} caracteres\".into());\nt.insert(\"invalid_string.email\".into(), \"Correo no válido\".into());\nlet resolver = MapResolver::new(t);\n\nlet err = vld::string().min(5).email().parse(r#\"\"ab\"\"#).unwrap_err();\nlet es = translate_error(&err, &resolver);\nassert_eq!(es.issues[0].message, \"Mínimo 5 caracteres\");\n",[345,673,674,694,716,720,742,796,832,853,858,906,931],{"__ignoreMap":355},[359,675,676,678,681,683,686,688,691],{"class":361,"line":362},[359,677,366],{"class":365},[359,679,680],{"class":369}," std",[359,682,374],{"class":373},[359,684,685],{"class":369},"collections",[359,687,374],{"class":373},[359,689,690],{"class":369},"HashMap",[359,692,693],{"class":373},";\n",[359,695,696,698,700,702,704,706,709,711,714],{"class":361,"line":383},[359,697,366],{"class":365},[359,699,370],{"class":369},[359,701,374],{"class":373},[359,703,392],{"class":369},[359,705,395],{"class":373},[359,707,708],{"class":369},"translate_error",[359,710,401],{"class":373},[359,712,713],{"class":369}," MapResolver",[359,715,407],{"class":373},[359,717,718],{"class":361,"line":410},[359,719,414],{"emptyLinePlaceholder":413},[359,721,722,724,727,730,732,735,737,740],{"class":361,"line":417},[359,723,421],{"class":420},[359,725,726],{"class":420}," mut",[359,728,729],{"class":424}," t ",[359,731,428],{"class":373},[359,733,734],{"class":369}," HashMap",[359,736,374],{"class":373},[359,738,739],{"class":435},"new",[359,741,477],{"class":373},[359,743,744,747,749,752,754,757,760,762,764,767,770,773,776,779,782,785,788,790,792,794],{"class":361,"line":480},[359,745,746],{"class":424},"t",[359,748,524],{"class":373},[359,750,751],{"class":435},"insert",[359,753,445],{"class":373},[359,755,756],{"class":373},"\"",[359,758,759],{"class":459},"too_small.string",[359,761,756],{"class":373},[359,763,524],{"class":373},[359,765,766],{"class":435},"into",[359,768,769],{"class":373},"(),",[359,771,772],{"class":373}," \"",[359,774,775],{"class":459},"Mínimo ",[359,777,778],{"class":373},"{",[359,780,781],{"class":459},"minimum",[359,783,784],{"class":373},"}",[359,786,787],{"class":459}," caracteres",[359,789,756],{"class":373},[359,791,524],{"class":373},[359,793,766],{"class":435},[359,795,505],{"class":373},[359,797,798,800,802,804,806,808,811,813,815,817,819,821,824,826,828,830],{"class":361,"line":508},[359,799,746],{"class":424},[359,801,524],{"class":373},[359,803,751],{"class":435},[359,805,445],{"class":373},[359,807,756],{"class":373},[359,809,810],{"class":459},"invalid_string.email",[359,812,756],{"class":373},[359,814,524],{"class":373},[359,816,766],{"class":435},[359,818,769],{"class":373},[359,820,772],{"class":373},[359,822,823],{"class":459},"Correo no válido",[359,825,756],{"class":373},[359,827,524],{"class":373},[359,829,766],{"class":435},[359,831,505],{"class":373},[359,833,834,836,839,841,843,845,847,849,851],{"class":361,"line":545},[359,835,421],{"class":420},[359,837,838],{"class":424}," resolver ",[359,840,428],{"class":373},[359,842,713],{"class":369},[359,844,374],{"class":373},[359,846,739],{"class":435},[359,848,445],{"class":373},[359,850,746],{"class":424},[359,852,542],{"class":373},[359,854,856],{"class":361,"line":855},8,[359,857,414],{"emptyLinePlaceholder":413},[359,859,861,863,865,867,869,871,873,875,877,879,881,883,886,888,890,892,894,896,898,900,902,904],{"class":361,"line":860},9,[359,862,421],{"class":420},[359,864,425],{"class":424},[359,866,428],{"class":373},[359,868,370],{"class":369},[359,870,374],{"class":373},[359,872,436],{"class":435},[359,874,439],{"class":373},[359,876,442],{"class":435},[359,878,445],{"class":373},[359,880,448],{"class":365},[359,882,451],{"class":373},[359,884,885],{"class":435},"email",[359,887,439],{"class":373},[359,889,454],{"class":435},[359,891,445],{"class":373},[359,893,460],{"class":459},[359,895,463],{"class":373},[359,897,466],{"class":459},[359,899,469],{"class":373},[359,901,451],{"class":373},[359,903,474],{"class":435},[359,905,477],{"class":373},[359,907,909,911,914,916,918,920,922,924,926,929],{"class":361,"line":908},10,[359,910,421],{"class":420},[359,912,913],{"class":424}," es ",[359,915,428],{"class":373},[359,917,404],{"class":435},[359,919,492],{"class":373},[359,921,495],{"class":424},[359,923,401],{"class":373},[359,925,500],{"class":373},[359,927,928],{"class":424},"resolver",[359,930,542],{"class":373},[359,932,934,937,939,942,944,946,948,950,952,954,956,958,961,963],{"class":361,"line":933},11,[359,935,936],{"class":435},"assert_eq!",[359,938,445],{"class":373},[359,940,941],{"class":424},"es",[359,943,524],{"class":373},[359,945,527],{"class":424},[359,947,530],{"class":373},[359,949,533],{"class":365},[359,951,536],{"class":373},[359,953,539],{"class":424},[359,955,401],{"class":373},[359,957,772],{"class":373},[359,959,960],{"class":459},"Mínimo 5 caracteres",[359,962,756],{"class":373},[359,964,542],{"class":373},[341,966,967,968,970,971,973],{},"Start from a bundled table to override a few keys: ",[345,969,586],{}," returns a ",[345,972,655],{}," with every default template.",[341,975,976,979],{},[345,977,978],{},"FnResolver"," takes a closure instead, useful for lookups in Fluent, gettext or a database:",[350,981,983],{"className":352,"code":982,"language":354,"meta":355,"style":355},"use vld::i18n::{translate_error, FnResolver};\n\nlet resolver = FnResolver::new(|key| match key {\n    \"too_small\" => Some(\"Zu kurz! Mindestens {minimum} Zeichen.\".into()),\n    _ => None,\n});\nlet de = translate_error(&err, &resolver);\n",[345,984,985,1006,1010,1043,1084,1098,1103],{"__ignoreMap":355},[359,986,987,989,991,993,995,997,999,1001,1004],{"class":361,"line":362},[359,988,366],{"class":365},[359,990,370],{"class":369},[359,992,374],{"class":373},[359,994,392],{"class":369},[359,996,395],{"class":373},[359,998,708],{"class":369},[359,1000,401],{"class":373},[359,1002,1003],{"class":369}," FnResolver",[359,1005,407],{"class":373},[359,1007,1008],{"class":361,"line":383},[359,1009,414],{"emptyLinePlaceholder":413},[359,1011,1012,1014,1016,1018,1020,1022,1024,1027,1030,1033,1037,1040],{"class":361,"line":410},[359,1013,421],{"class":420},[359,1015,838],{"class":424},[359,1017,428],{"class":373},[359,1019,1003],{"class":369},[359,1021,374],{"class":373},[359,1023,739],{"class":435},[359,1025,1026],{"class":373},"(|",[359,1028,1029],{"class":424},"key",[359,1031,1032],{"class":373},"|",[359,1034,1036],{"class":1035},"s7zQu"," match",[359,1038,1039],{"class":424}," key ",[359,1041,1042],{"class":373},"{\n",[359,1044,1045,1048,1051,1053,1056,1059,1061,1063,1066,1068,1070,1072,1075,1077,1079,1081],{"class":361,"line":417},[359,1046,1047],{"class":373},"    \"",[359,1049,1050],{"class":459},"too_small",[359,1052,756],{"class":373},[359,1054,1055],{"class":373}," =>",[359,1057,1058],{"class":369}," Some",[359,1060,445],{"class":373},[359,1062,756],{"class":373},[359,1064,1065],{"class":459},"Zu kurz! Mindestens ",[359,1067,778],{"class":373},[359,1069,781],{"class":459},[359,1071,784],{"class":373},[359,1073,1074],{"class":459}," Zeichen.",[359,1076,756],{"class":373},[359,1078,524],{"class":373},[359,1080,766],{"class":435},[359,1082,1083],{"class":373},"()),\n",[359,1085,1086,1089,1092,1095],{"class":361,"line":480},[359,1087,1088],{"class":424},"    _ ",[359,1090,1091],{"class":373},"=>",[359,1093,1094],{"class":369}," None",[359,1096,1097],{"class":373},",\n",[359,1099,1100],{"class":361,"line":508},[359,1101,1102],{"class":373},"});\n",[359,1104,1105,1107,1110,1112,1114,1116,1118,1120,1122,1124],{"class":361,"line":545},[359,1106,421],{"class":420},[359,1108,1109],{"class":424}," de ",[359,1111,428],{"class":373},[359,1113,404],{"class":435},[359,1115,492],{"class":373},[359,1117,495],{"class":424},[359,1119,401],{"class":373},[359,1121,500],{"class":373},[359,1123,928],{"class":424},[359,1125,542],{"class":373},[341,1127,1128,1129,1132,1133,1136,1137,451],{},"Implement the ",[345,1130,1131],{},"MessageResolver"," trait directly for full control (",[345,1134,1135],{},"resolve(key)"," plus an optional ",[345,1138,1139],{},"plural_category(n)",[647,1141,1143],{"id":1142},"lookup-order","Lookup order",[341,1145,1146,1147,1150,1151,1153,1154,1156,1157,1160,1161,1164,1165,1168],{},"For each issue the resolver is asked for the keys of ",[345,1148,1149],{},"IssueCode::message_keys()",", most specific first (",[345,1152,759],{},", then ",[345,1155,1050],{},"). The first template found wins; with no match the message is unchanged. Exclusive bounds use ",[345,1158,1159],{},"too_small_exclusive"," \u002F ",[345,1162,1163],{},"too_big_exclusive",", so an \"at least\" template is never applied to a \"greater than\" check. Union issues keep their ",[345,1166,1167],{},"[variant N]"," prefix.",[647,1170,1172],{"id":1171},"plurals","Plurals",[341,1174,1175,1176,1178,1179,1178,1182,1185,1186,1189,1190,1178,1193,1196,1197,1200,1201,1204],{},"Size codes (",[345,1177,1050],{},", ",[345,1180,1181],{},"too_big",[345,1183,1184],{},"invalid_length",") with an integer bound try ",[345,1187,1188],{},"\u003Ckey>_\u003Ccategory>"," first, where the category comes from the resolver's plural rule: ",[345,1191,1192],{},"too_small.string_one",[345,1194,1195],{},"invalid_length.string_few",". The plain key is the fallback, so it should hold the ",[345,1198,1199],{},"other"," (English) or ",[345,1202,1203],{},"many"," (Russian) form.",[350,1206,1208],{"className":352,"code":1207,"language":354,"meta":355,"style":355},"let resolver = MapResolver::new(HashMap::from([\n    (\"too_small.string_one\".to_string(), \"Минимум {minimum} символ\".to_string()),\n    (\"too_small.string_few\".to_string(), \"Минимум {minimum} символа\".to_string()),\n    (\"too_small.string\".to_string(), \"Минимум {minimum} символов\".to_string()),\n]))\n.with_plural_rule(vld::i18n::plural_ru);\n",[345,1209,1210,1236,1276,1314,1351,1356],{"__ignoreMap":355},[359,1211,1212,1214,1216,1218,1220,1222,1224,1226,1228,1230,1233],{"class":361,"line":362},[359,1213,421],{"class":420},[359,1215,838],{"class":424},[359,1217,428],{"class":373},[359,1219,713],{"class":369},[359,1221,374],{"class":373},[359,1223,739],{"class":435},[359,1225,445],{"class":373},[359,1227,690],{"class":369},[359,1229,374],{"class":373},[359,1231,1232],{"class":435},"from",[359,1234,1235],{"class":373},"([\n",[359,1237,1238,1241,1243,1245,1247,1249,1252,1254,1256,1259,1261,1263,1265,1268,1270,1272,1274],{"class":361,"line":383},[359,1239,1240],{"class":373},"    (",[359,1242,756],{"class":373},[359,1244,1192],{"class":459},[359,1246,756],{"class":373},[359,1248,524],{"class":373},[359,1250,1251],{"class":435},"to_string",[359,1253,769],{"class":373},[359,1255,772],{"class":373},[359,1257,1258],{"class":459},"Минимум ",[359,1260,778],{"class":373},[359,1262,781],{"class":459},[359,1264,784],{"class":373},[359,1266,1267],{"class":459}," символ",[359,1269,756],{"class":373},[359,1271,524],{"class":373},[359,1273,1251],{"class":435},[359,1275,1083],{"class":373},[359,1277,1278,1280,1282,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1306,1308,1310,1312],{"class":361,"line":410},[359,1279,1240],{"class":373},[359,1281,756],{"class":373},[359,1283,1284],{"class":459},"too_small.string_few",[359,1286,756],{"class":373},[359,1288,524],{"class":373},[359,1290,1251],{"class":435},[359,1292,769],{"class":373},[359,1294,772],{"class":373},[359,1296,1258],{"class":459},[359,1298,778],{"class":373},[359,1300,781],{"class":459},[359,1302,784],{"class":373},[359,1304,1305],{"class":459}," символа",[359,1307,756],{"class":373},[359,1309,524],{"class":373},[359,1311,1251],{"class":435},[359,1313,1083],{"class":373},[359,1315,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1343,1345,1347,1349],{"class":361,"line":417},[359,1317,1240],{"class":373},[359,1319,756],{"class":373},[359,1321,759],{"class":459},[359,1323,756],{"class":373},[359,1325,524],{"class":373},[359,1327,1251],{"class":435},[359,1329,769],{"class":373},[359,1331,772],{"class":373},[359,1333,1258],{"class":459},[359,1335,778],{"class":373},[359,1337,781],{"class":459},[359,1339,784],{"class":373},[359,1341,1342],{"class":459}," символов",[359,1344,756],{"class":373},[359,1346,524],{"class":373},[359,1348,1251],{"class":435},[359,1350,1083],{"class":373},[359,1352,1353],{"class":361,"line":480},[359,1354,1355],{"class":373},"]))\n",[359,1357,1358,1360,1363,1365,1368,1370,1372,1374,1376],{"class":361,"line":508},[359,1359,524],{"class":373},[359,1361,1362],{"class":435},"with_plural_rule",[359,1364,445],{"class":373},[359,1366,1367],{"class":369},"vld",[359,1369,374],{"class":373},[359,1371,392],{"class":369},[359,1373,374],{"class":373},[359,1375,609],{"class":424},[359,1377,542],{"class":373},[647,1379,1381],{"id":1380},"type-names","Type names",[341,1383,1384,1387,1388,1160,1391,1394,1395,1397,1398,1178,1401,1404],{},[345,1385,1386],{},"invalid_type"," messages translate their ",[345,1389,1390],{},"{expected}",[345,1392,1393],{},"{received}"," through ",[345,1396,644],{}," keys (",[345,1399,1400],{},"type.string",[345,1402,1403],{},"type.date",", …) when the resolver has them.",[647,1406,1408],{"id":1407},"custom-messages-are-kept","Custom messages are kept",[341,1410,1411,1412,1415,1416,1178,1419,1178,1422,1178,1425,1428,1429,524],{},"An issue whose message is not the default English one (from ",[345,1413,1414],{},"_msg"," builders, ",[345,1417,1418],{},"with_messages",[345,1420,1421],{},".message()",[345,1423,1424],{},"type_error()",[345,1426,1427],{},"refine",", …) is returned unchanged by ",[345,1430,708],{},[1432,1433,1434],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":355,"searchDepth":383,"depth":410,"links":1436},[1437,1438,1439,1440,1441],{"id":649,"depth":383,"text":650},{"id":1142,"depth":383,"text":1143},{"id":1171,"depth":383,"text":1172},{"id":1380,"depth":383,"text":1381},{"id":1407,"depth":383,"text":1408},"Bundled English, Russian, German and Spanish messages; MapResolver, FnResolver, plural rules and type names.","md",null,{},{"title":118,"description":1442},"Prs1R0V3Nk5WXG_zJlnyTlCJOg-5VLXgKuHS4gdh-0k",[1449,1451],{"title":114,"path":115,"stem":116,"description":1450,"children":-1},"Per-check messages, bulk overrides, type errors and whole-schema messages.",{"title":128,"path":129,"stem":130,"description":1452,"children":-1},"Generate JSON Schema and OpenAPI 3.1 documents from vld schemas, including nested components and vld's x-* extensions.",1794036360294]